三种方法实现tab栏切换(CSS方法、JS方法、Vue方法)

一、需求

给下图的静态页面添加tab栏切换效果

 

二、CSS方法

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    * {
      margin: 0;
      padding: 0;
    }
    ul {
      display: flex;
      border-bottom: 2px solid #e01222;
      padding: 0 10px;
    }
    li {
      width: 100px;
      height: 50px;
      line-height: 50px;
      list-style: none;
      text-align: center;
    }
    li a {
      display: block;
      text-decoration: none;
      font-weight: bold;
      color: #333333;
    }

    li a.active:active,
    li a.active:focus {
      background-color: #e01222;
      color: #fff;
    }

  </style>
</head>
<body>

  <div id="app">
    <ul>
      <li><a class="active" href="#">京东秒杀</a></li>
      <li><a class="active" href="#">每日特价</a></li>
      <li><a class="active" href="#">品类秒杀</a></li>
    </ul>
  </div>

</body>
</html>

三、JS方法

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    * {
      margin: 0;
      padding: 0;
    }
    ul {
      display: flex;
      border-bottom: 2px solid #e01222;
      padding: 0 10px;
    }
    li {
      width: 100px;
      height: 50px;
      line-height: 50px;
      list-style: none;
      text-align: center;
    }
    li a {
      display: block;
      text-decoration: none;
      font-weight: bold;
      color: #333333;
    }
    li a.active {
      background-color: #e01222;
      color: #fff;
    }

  </style>
</head>
<body>

  <div id="app">
    <ul>
      <li><a class="active" href="#">京东秒杀</a></li>
      <li><a href="#">每日特价</a></li>
      <li><a href="#">品类秒杀</a></li>
    </ul>
  </div>
  <script>
    document.querySelector('#app ul').addEventListener('click',e=>{
      if(e.target.tagName==='A'){
        document.querySelector('.active').classList.remove('active')
        e.target.classList.add('active')
      }
    })
  </script>
</body>
</html>

四、Vue方法

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    * {
      margin: 0;
      padding: 0;
    }
    ul {
      display: flex;
      border-bottom: 2px solid #e01222;
      padding: 0 10px;
    }
    li {
      width: 100px;
      height: 50px;
      line-height: 50px;
      list-style: none;
      text-align: center;
    }
    li a {
      display: block;
      text-decoration: none;
      font-weight: bold;
      color: #333333;
    }
    li a.active {
      background-color: #e01222;
      color: #fff;
    }

  </style>
</head>
<body>

  <div id="app">
    <ul>
      <li v-for="(item,index) in list" :key="item.id"><a :class="{active:index===activeIndex}" @click="activeIndex=index" href="#">{{item.name}}</a></li>
    </ul>
  </div>
  <script src="./vue.js"></script>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        activeIndex:0,
        list: [
          { id: 1, name: '京东秒杀' },
          { id: 2, name: '每日特价' },
          { id: 3, name: '品类秒杀' }
        ]

      }
    })
  </script>
</body>
</html>

### 回答1: 好的,我可以为您提供一些参考。首先,使用 VueJavaScript 实现 tab 切换菜单的基本思路是:创建菜单组件,选择默认显示的选项卡,当点击选项卡时切换对应的内容。以下是一个简单的实例: HTML: ```html <div id="app"> <ul class="tabs"> <li v-for="(tab, index) in tabs" :key="index" @click="activeTab = tab">{{ tab }}</li> </ul> <div class="content"> <div v-for="(content, index) in contents" :key="index" v-show="activeTab === tab">{{ content }}</div> </div> </div> ``` JavaScript: ```javascript var app = new Vue({ el: '#app', data: { tabs: ['Tab 1', 'Tab 2', 'Tab 3'], contents: ['Content for Tab 1', 'Content for Tab 2', 'Content for Tab 3'], activeTab: 'Tab 1' } }); ``` CSS: ```css .tabs { list-style: none; margin: 0; padding: 0; display: flex; } .tabs li { padding: 12px 24px; background-color: #ddd; cursor: pointer; } .tabs li.active { background-color: #fff; } .content div { display: none; } .content div.show { display: block; } ``` 这个例子中,我们创建了一个菜单组件,包含选项卡和相应的内容。当用户点击选项卡时,我们使用 `v-show` 指令来切换显示对应的内容。我们还设置了一个 `activeTab` 变量来追踪当前活动的选项卡。 希望这个例子能帮到您。如果您有任何问题,请随时问我。 ### 回答2: 使用VueJS实现Tab切换菜单的方法如下: 1. 在HTML中定义菜单的容器,并为每个菜单项添加对应的索引值,例如: ```html <div id="app"> <ul class="menu"> <li class="menu-item" :class="{active: activeTab === 1}" @click="setActiveTab(1)">菜单1</li> <li class="menu-item" :class="{active: activeTab === 2}" @click="setActiveTab(2)">菜单2</li> <li class="menu-item" :class="{active: activeTab === 3}" @click="setActiveTab(3)">菜单3</li> </ul> <div v-show="activeTab === 1">内容1</div> <div v-show="activeTab === 2">内容2</div> <div v-show="activeTab === 3">内容3</div> </div> ``` 2. 在Vue的实例中定义相关的数据和方法,在data中添加activeTab变量,并在methods中添加setActiveTab方法,用于设置当前点击的菜单项对应的索引值,并切换显示相应的内容,例如: ```javascript new Vue({ el: '#app', data: { activeTab: 1 }, methods: { setActiveTab(tabIndex) { this.activeTab = tabIndex; } } }); ``` 3. 使用CSS样式来设置菜单项的样式和切换时的选中状态,例如: ```css .menu-item { display: inline-block; padding: 10px 20px; cursor: pointer; } .menu-item.active { background-color: #ccc; } ``` 这样,点击不同的菜单项时,对应的内容将会显示出来,并且菜单项也会有选中的样式。 ### 回答3: 使用VueJavaScript可以轻松实现Tab切换菜单。首先,在Vue的data属性中定义一个用于存储当前选中Tab的变量。 ``` data() { return { activeTab: 'tab1' } } ``` 然后,在HTML模板中添加一个包含Tab标题的菜单,并为每个Tab添加一个点击事件,用于切换选中的Tab。 ``` <div> <div class="tab-menu"> <button @click="activeTab = 'tab1'" :class="{ 'active': activeTab === 'tab1' }">Tab 1</button> <button @click="activeTab = 'tab2'" :class="{ 'active': activeTab === 'tab2' }">Tab 2</button> <button @click="activeTab = 'tab3'" :class="{ 'active': activeTab === 'tab3' }">Tab 3</button> </div> <div class="tab-content"> <div v-if="activeTab === 'tab1'">Tab 1的内容</div> <div v-if="activeTab === 'tab2'">Tab 2的内容</div> <div v-if="activeTab === 'tab3'">Tab 3的内容</div> </div> </div> ``` 在上述代码中,每个按钮都添加了一个点击事件来更新activeTab的值,关联了对应的Tab内容。同时,使用了Vue的条件渲染指令v-if,根据activeTab的值来显示对应的Tab内容。 最后,可以根据需要自定义样式,给当前选中的Tab按钮添加一个active类来突出显示: ``` <style> .tab-menu button.active { background-color: #ccc; } </style> ``` 以上就是使用VueJavaScript实现Tab切换菜单的基本步骤,通过修改activeTab的值来更新所显示的Tab内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值