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


Posted in Javascript onApril 24, 2018

这里不跟大家再去把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实现选项卡及选项卡切换效果

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实现选项卡及选项卡切换效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
用js实现的自定义的对话框的实现代码
Mar 21 Javascript
基于jquery的实现简单的表格中增加或删除下一行
Aug 01 Javascript
使用jQuery解决IE与FireFox下createElement方法的差异
Nov 14 Javascript
JavaScript数组常用操作技巧汇总
Nov 17 Javascript
JS根据生日月份和日期计算星座的简单实现方法
Nov 24 Javascript
实现JavaScript高性能的数据存储
Dec 11 Javascript
js实现无缝滚动图(可控制当前滚动的方向)
Feb 22 Javascript
详解基于vue的移动web app页面缓存解决方案
Aug 03 Javascript
使用JS组件实现带ToolTip验证框的实例代码
Aug 23 Javascript
JavaScript数组及常见操作方法小结
Nov 13 Javascript
Vue项目页面跳转时浏览器窗口上方显示进度条功能
Mar 26 Javascript
vue-cil之axios的二次封装与proxy反向代理使用说明
Apr 07 Vue.js
Vue手把手教你撸一个 beforeEnter 钩子函数
Apr 24 #Javascript
js 图片转base64的方式(两种)
Apr 24 #Javascript
react配合antd组件实现的管理系统示例代码
Apr 24 #Javascript
详解开发react应用最好用的脚手架 create-react-app
Apr 24 #Javascript
vue webpack实用技巧总结
Apr 24 #Javascript
浅谈vue中.vue文件解析流程
Apr 24 #Javascript
vue-cli2.9.3 详细教程
Apr 23 #Javascript
You might like
一个PHP针对数字的加密解密类
2014/03/20 PHP
php表单处理操作
2017/11/16 PHP
php常用日期时间函数实例小结
2019/07/04 PHP
php中文语义分析实现方法示例
2019/09/28 PHP
JavaScript脚本语言在网页中的简单应用
2007/05/13 Javascript
js本身的局限性 别让javascript做太多事
2010/03/23 Javascript
父子窗体间传递JSON格式的数据的代码
2010/12/25 Javascript
javascript操作css属性
2013/12/30 Javascript
Javascript中的异步编程规范Promises/A详细介绍
2014/06/06 Javascript
JQuery.Ajax()的data参数类型实例详解
2015/11/20 Javascript
基于javascript实现最简单的选项卡切换效果
2016/05/16 Javascript
第一次接触神奇的Bootstrap菜单和导航
2016/08/01 Javascript
详解nodejs 文本操作模块-fs模块(五)
2016/12/23 NodeJs
jQuery读取XML文件的方法示例
2017/02/03 Javascript
vue2里面ref的具体使用方法
2017/10/27 Javascript
JS无限级导航菜单实现方法
2019/01/05 Javascript
js实现无限层级树形数据结构(创新算法)
2020/02/27 Javascript
[48:45]Ti4 循环赛第二日 NEWBEE vs EG
2014/07/11 DOTA
在Python中使用PIL模块处理图像的教程
2015/04/29 Python
python使用opencv按一定间隔截取视频帧
2018/03/06 Python
Python读取excel指定列生成指定sql脚本的方法
2018/11/28 Python
python 执行文件时额外参数获取的实例
2018/12/18 Python
Python常见数据结构之栈与队列用法示例
2019/01/14 Python
numpy数组做图片拼接的实现(concatenate、vstack、hstack)
2019/11/08 Python
python 实现多维数组转向量
2019/11/30 Python
CSS类名支持中文命名的示例
2014/04/04 HTML / CSS
CSS3 filter(滤镜)实现网页灰色或者黑色模式的代码
2020/11/30 HTML / CSS
Omio俄罗斯:一次搜索公共汽车、火车和飞机的机票
2018/11/17 全球购物
毕业自我鉴定总结
2014/03/24 职场文书
二手房买卖协议书
2014/04/10 职场文书
宿舍标语大全
2014/06/19 职场文书
离婚案件答辩状
2015/05/22 职场文书
护理心得体会范文
2016/01/22 职场文书
Nginx如何配置Http、Https、WS、WSS的方法步骤
2021/05/11 Servers
PYTHON InceptionV3模型的复现详解
2022/05/06 Python
Echarts如何重新渲染实例详解
2022/05/30 Javascript