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

23-11-20HTML/CSS浏览427

摘要 Tab切换功能是指在一个容器中,通过点击不同的标签页,显示对应的内容(点击标签时,下方数据随标签切换)。

Tab切换功能是指在一个容器中,通过点击不同的标签页,显示对应的内容(点击标签时,下方数据随标签切换)。

下面三个简单的HTML结构示例:

一、CSS

<!DOCTYPE html>
<html>
<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 href="#">今日秒杀</a></li>
      <li><a href="#">每日特价</a></li>
      <li><a href="#">品类秒杀</a></li>
    </ul>
  </div>
 
</body>
</html>


二、JS方法

<!DOCTYPE html>
<html>
<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 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>
<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>


Tags: