实现点击导航栏内容切换

效果:

 导航栏和下面的内容是一体的

<div class="newsList">
      <div class="newsBar">
        <div><span class="all">全部</span></div>
        <div class="h2"><h2>|</h2></div>
        <div class="ul">
          <ul>
            <li
              v-for="item in newsData"
              :key="item.id"
              @click="show(item.barName)"
              :class="[item.barName == Name ? 'activeLi' : '']"
            >
              {{ item.barName }}
            </li>
          </ul>
        </div>
      </div>
      <div class="line"></div>
      <div class="list">
        <div class="news" v-for="item in newsItem" :key="item.did" @click="gnClick()">
          <div class="img"><img src="@/assets/image/news.png" /></div>
          <div class="content">
            <div class="title">{{ item.title }}</div>
            <div class="text">{{ item.content }}</div>
            <div class="timeBox">
              <div class="time">
                <span>{{ item.time }}</span
                ><span>{{ item.date }}</span>
              </div>
              <div class="watch">
                <img src="@/assets/image/eye.png" /><span>{{
                  item.watch
                }}</span>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>

选中的导航栏变色 动态绑定class

:class="[item.barName == Name ? 'activeLi' : '']"

setup() {
    const route = useRoute();
    const router = useRouter();
    const Name = ref("");
    const newsItem = ref([]);
    const newsData = reactive([
      {
        id: 1,
        barName: "新闻资讯",
        info: [
          {
            did: 11,
            imgUrl: "不限",
            title: "麦斯克电子",
            content:
              "2022年2月16日下午16:00,南京国盛电子有限公司运营副总经理杨帆一行莅临麦斯克电子进行商谈访问,公司总经理、副总经理、市场营销部负责人热情招待。",
            time: "2022-09-28",
            date: "16:32:01",
            watch: 218,
          },
          {
            did: 12,
            imgUrl: "不限",
            title: "麦斯克电子",
            content:
              "2022年2月16日下午16:00,南京国盛电子有限公司运营副总经理杨帆一行莅临麦斯克电子进行商谈访问,公司总经理、副总经理、市场营销部负责人热情招待。",
            time: "2022-09-28",
            date: "16:32:01",
            watch: 218,
          },
          {
            did: 12,
            imgUrl: "不限",
            title: "麦斯克电子",
            content:
              "2022年2月16日下午16:00,南京国盛电子有限公司运营副总经理杨帆一行莅临麦斯克电子进行商谈访问,公司总经理、副总经理、市场营销部负责人热情招待。",
            time: "2022-09-28",
            date: "16:32:01",
            watch: 218,
          },
          {
            did: 13,
            imgUrl: "不限",
            title: "麦斯克电子",
            content:
              "2022年2月16日下午16:00,南京国盛电子有限公司运营副总经理杨帆一行莅临麦斯克电子进行商谈访问,公司总经理、副总经理、市场营销部负责人热情招待。",
            time: "2022-09-28",
            date: "16:32:01",
            watch: 218,
          },
        ],
      },
      {
        id: 2,
        barName: "通知公告",
        info: [
          {
            did: 22,
            imgUrl: "不限",
            title: "电子",
            content:
              "2022年2月16日下午16:00,南京国盛电子有限公司运营副总经理杨帆一行莅临麦斯克电子进行商谈访问,公司总经理、副总经理、市场营销部负责人热情招待。",
            time: "2022-09-28",
            date: "16:32:01",
            watch: 218,
          },
          {
            did: 23,
            imgUrl: "不限",
            title: "电子",
            content:
              "2022年2月16日下午16:00,南京国盛电子有限公司运营副总经理杨帆一行莅临麦斯克电子进行商谈访问,公司总经理、副总经理、市场营销部负责人热情招待。",
            time: "2022-09-28",
            date: "16:32:01",
            watch: 218,
          },
          {
            did: 24,
            imgUrl: "不限",
            title: "电子",
            content:
              "2022年2月16日下午16:00,南京国盛电子有限公司运营副总经理杨帆一行莅临麦斯克电子进行商谈访问,公司总经理、副总经理、市场营销部负责人热情招待。",
            time: "2022-09-28",
            date: "16:32:01",
            watch: 218,
          },
          {
            did: 25,
            imgUrl: "不限",
            title: "电子",
            content:
              "2022年2月16日下午16:00,南京国盛电子有限公司运营副总经理杨帆一行莅临麦斯克电子进行商谈访问,公司总经理、副总经理、市场营销部负责人热情招待。",
            time: "2022-09-28",
            date: "16:32:01",
            watch: 218,
          },
        ],
      },
      {
        id: 3,
        barName: "政策通告",
        info: [
          {
            did: 22,
            imgUrl: "不限",
            title: "电子",
            content:
              "2022年2月16日下午16:00,南京国盛电子有限公司运营副总经理杨帆一行莅临麦斯克电子进行商谈访问,公司总经理、副总经理、市场营销部负责人热情招待。",
            time: "2022-09-28",
            date: "16:32:01",
            watch: 218,
          },
          {
            did: 23,
            imgUrl: "不限",
            title: "电子",
            content:
              "2022年2月16日下午16:00,南京国盛电子有限公司运营副总经理杨帆一行莅临麦斯克电子进行商谈访问,公司总经理、副总经理、市场营销部负责人热情招待。",
            time: "2022-09-28",
            date: "16:32:01",
            watch: 218,
          },
          {
            did: 23,
            imgUrl: "不限",
            title: "电子",
            content:
              "2022年2月16日下午16:00,南京国盛电子有限公司运营副总经理杨帆一行莅临麦斯克电子进行商谈访问,公司总经理、副总经理、市场营销部负责人热情招待。",
            time: "2022-09-28",
            date: "16:32:01",
            watch: 218,
          },
          {
            did: 23,
            imgUrl: "不限",
            title: "电子",
            content:
              "2022年2月16日下午16:00,南京国盛电子有限公司运营副总经理杨帆一行莅临麦斯克电子进行商谈访问,公司总经理、副总经理、市场营销部负责人热情招待。",
            time: "2022-09-28",
            date: "16:32:01",
            watch: 218,
          },
        ],
      },
      {
        id: 4,
        barName: "帮助中心",
        info: [
          {
            did: 22,
            imgUrl: "不限",
            title: "电子",
            content:
              "2022年2月16日下午16:00,南京国盛电子有限公司运营副总经理杨帆一行莅临麦斯克电子进行商谈访问,公司总经理、副总经理、市场营销部负责人热情招待。",
            time: "2022-09-28",
            date: "16:32:01",
            watch: 218,
          },
          {
            did: 23,
            imgUrl: "不限",
            title: "电子",
            content:
              "2022年2月16日下午16:00,南京国盛电子有限公司运营副总经理杨帆一行莅临麦斯克电子进行商谈访问,公司总经理、副总经理、市场营销部负责人热情招待。",
            time: "2022-09-28",
            date: "16:32:01",
            watch: 218,
          },
          {
            did: 23,
            imgUrl: "不限",
            title: "电子",
            content:
              "2022年2月16日下午16:00,南京国盛电子有限公司运营副总经理杨帆一行莅临麦斯克电子进行商谈访问,公司总经理、副总经理、市场营销部负责人热情招待。",
            time: "2022-09-28",
            date: "16:32:01",
            watch: 218,
          },
          {
            did: 23,
            imgUrl: "不限",
            title: "电子",
            content:
              "2022年2月16日下午16:00,南京国盛电子有限公司运营副总经理杨帆一行莅临麦斯克电子进行商谈访问,公司总经理、副总经理、市场营销部负责人热情招待。",
            time: "2022-09-28",
            date: "16:32:01",
            watch: 218,
          },
        ],
      },
    ]);
    const show = (bar) => {
      Name.value = bar;
      newsData.forEach((item) => {
        if (item.barName == Name.value) {
          newsItem.value = item.info;
        }
      });
    };
    function gnClick() {
      router.push({ path: "/newsDetail" });
    }
    onMounted(() => {
      show("新闻资讯");
    });
    return {
      newsData,
      Name,
      show,
      newsItem,
      gnClick
    };
  },

思路:show函数的意义:一点击导航栏中的某一个,就把当前的barName记录下来,循环数组把当前的barName和数组里面的对比,如果一样,那么把数组下的info数组赋值给一个新的数组,并且下面的内容块去循环这个数组展示出来。

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用JavaScript来实现点击导航栏切换内容的效果。具体步骤如下: 1. 首先在HTML中创建导航栏内容区域的结构,可以使用<ul>和<div>标签。 ``` <ul class="nav"> <li><a href="#" data-target="content1">内容1</a></li> <li><a href="#" data-target="content2">内容2</a></li> <li><a href="#" data-target="content3">内容3</a></li> </ul> <div id="content1" class="content">这是内容1</div> <div id="content2" class="content">这是内容2</div> <div id="content3" class="content">这是内容3</div> ``` 2. 使用CSS来设置导航栏内容区域的样式。 ``` .nav { display: flex; list-style: none; padding: 0; margin: 0; } .nav li { margin-right: 10px; } .nav li a { text-decoration: none; color: #333; } .content { display: none; } .content.active { display: block; } ``` 3. 使用JavaScript来实现点击导航栏切换内容的效果。 ``` const navLinks = document.querySelectorAll('.nav a'); const contents = document.querySelectorAll('.content'); navLinks.forEach(link => { link.addEventListener('click', () => { const target = link.dataset.target; contents.forEach(content => { content.classList.remove('active'); if (content.id === target) { content.classList.add('active'); } }); }); }); ``` 以上代码中,首先获取所有导航栏的链接和所有内容区域的元素。然后对每个链接绑定点击事件,当点击时,获取其对应的目标内容区域的ID,遍历所有内容区域,将除目标内容区域外的其他区域的`active`类名移除,将目标内容区域添加`active`类名,从而显示目标内容区域。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值