您的当前位置:首页正文

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

2020-11-27 来源:独旅网

这里不跟大家再去把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实现选项卡及选项卡切换效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

显示全文