vue实现选项卡及选项卡切换效果
程序员文章站
2022-06-24 22:12:34
这里不跟大家再去把vue文档上的一些指令用法或者基础知识再复述一遍,既然是从入门到实战,我直接将平时项目中需要实现的一些效果拆分成模块。你们遇到了相关的指令或者不知道怎么用...
这里不跟大家再去把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实现选项卡及选项卡切换效果,希望对大家有所帮助
上一篇: 小孩发烧怎么办?分享快速退烧法!
下一篇: 浅谈React之状态(State)