首页 > 编程 > JavaScript > 正文

vue实现选项卡及选项卡切换效果

2019-11-19 13:57:49
字体:
来源:转载
供稿:网友

这里不跟大家再去把Vue文档上的一些指令用法或者基础知识再复述一遍,既然是从入门到实战,我直接将平时项目中需要实现的一些效果拆分成模块。你们遇到了相关的指令或者不知道怎么用的方法自己对着文档去查,再回过头来看我的实现代码。记住,通读Vue文档真的很重要,很重要!

这里的Vue以单文件的形式引入,另外代码在实现上会一步步的进行优化,客官不要着急!

下面是一个样式稍微丑陋,但功能OK的选项卡。

<!DOCTYPE html> <html>  <head>   <meta charset="utf-8" />    <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">     <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=no,width=device-width">   <meta name="apple-mobile-web-app-title" content="Vue选项卡">   <title>Vue实现选项卡</title>   <script type="text/javascript" src="../js/vue.js"></script>  </head>  <style>   * {    padding: 0;    margin: 0;   }   .box {    width: 800px;    height: 200px;    margin: 0 auto;    border: 1px solid #000;   }   .tabs li {    float: left;    margin-right: 8px;    list-style: none;   }   .tabs .tab-link {    display: block;    width: 250px;    height: 49px;    text-align: center;    line-height: 49px;    background-color: #5597B4;    color: #fff;    text-decoration: none;   }   .tabs .tab-link.active {    height: 47px;    border-bottom: 2px solid #E35885;    transition: .3s;   }   .cards {    float: left;   }   .cards .tab-card {    display: none;   }   .clearfix:after {    content: "";    display: block;    height: 0;    clear: both;   }   .clearfix {    zoom: 1;   }  </style>  <body>   <div id="app" class="box">    <ul class="tabs clearfix">     <li v-for="(tab,index) in tabsName">      <a href="#" rel="external nofollow" class="tab-link" @click="tabsSwitch(index)" v-bind:class="{active:tab.isActive}">{{tab.name}}</a>     </li>    </ul>    <div class="cards">     <div class="tab-card" style="display: block;">这里是HTML教程</div>     <div class="tab-card">欢迎来到CSS模块</div>     <div class="tab-card">嗨,这里是Vue</div>    </div>   </div>  </body>  <script>   var app = new Vue({    el: "#app",    data: {     tabsName: [{      name: "HTML",      isActive: true     }, {      name: "CSS",      isActive: false     }, {      name: "Vue",      isActive: false     }],     active: false    },    methods: {     tabsSwitch: function(tabIndex) {      var tabCardCollection = document.querySelectorAll(".tab-card"),       len = tabCardCollection.length;      for(var i = 0; i < len; i++) {       tabCardCollection[i].style.display = "none";       this.tabsName[i].isActive = false;      }      this.tabsName[tabIndex].isActive = true;      tabCardCollection[tabIndex].style.display = "block";     }    }   })  </script> </html> 

第一代选项卡的实现就先这样子,后面再改进。上面是代码,下面是效果图!Vue我也只是刚刚学入门吧,做了几个项目了,有什么问题我们可以一起探讨,一起进步,欢迎私信我!

Vue实现选项卡切换,具体代码如下所示:

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>选项卡</title> <script src="../js/vue.js"></script> <style>  li{   list-style: none;   float: left;   margin-right: 20px;  } </style></head><body> <div class="app">  <ul>   <li v-for="(item,index) in list" @click="tab(index)">{{item.tab}}    <div v-show="item.show">     {{item.title}}    </div>   </li>  </ul> </div> <script>  let obj=[   {"tab":"选项一","show":true,"title":"1111"},   {"tab":"选项二","show":false,"title":"2222"},   {"tab":"选项三","show":false,"title":"3333"}  ];  var vm=new Vue({   el:".app",   data:{    list:obj   },   methods:{    tab:function(index){     for(var i=0;i<this.list.length;i++){      this.list[i].show=false;      if(i==index){       this.list[index].show=true;      }     }    }   }  }) </script></body></html>

总结

以上所述是小编给大家介绍的vue实现选项卡及选项卡切换效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对武林网网站的支持!

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表