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 相关文章推荐
JavaScript中的其他对象
Jan 16 Javascript
javascript getElementsByClassName 和js取地址栏参数
Jan 02 Javascript
用JavaScript实现动画效果的方法
Jul 20 Javascript
javascript抖动元素的小例子
Oct 28 Javascript
Angularjs过滤器使用详解
May 25 Javascript
简单的js表格操作
Sep 24 Javascript
Bootstrap基本插件学习笔记之按钮(21)
Dec 08 Javascript
浅谈angularjs中响应回车事件
Apr 24 Javascript
backbone简介_动力节点Java学院整理
Jul 14 Javascript
详解js的视频和音频采集
Aug 09 Javascript
JS实现返回上一页并刷新页面的方法分析
Jul 16 Javascript
Vue 中 a标签上href无法跳转的解决方式
Nov 12 Javascript
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类常量的使用详解
2013/06/08 PHP
Session的工作机制详解和安全性问题(PHP实例讲解)
2014/04/10 PHP
PHP XML和数组互相转换详解
2016/10/26 PHP
php 使用expat方式解析xml文件操作示例
2019/11/26 PHP
JS的事件绑定深入认识
2014/06/26 Javascript
javascript实现给定半径求出圆的面积
2015/06/26 Javascript
AngularJs实现分页功能不带省略号的代码
2016/05/30 Javascript
用iframe实现不刷新整个页面上传图片的实例
2016/11/18 Javascript
如何通过非数字与字符的方式实现PHP WebShell详解
2017/07/02 Javascript
详解通过源码解析Node.js中cluster模块的主要功能实现
2018/05/16 Javascript
微信小程序如何刷新当前界面的实现方法
2019/06/07 Javascript
jquery操作checkbox的常用方法总结【附测试源码下载】
2019/06/10 jQuery
vue 如何使用递归组件
2020/10/23 Javascript
Django框架中数据的连锁查询和限制返回数据的方法
2015/07/17 Python
Python 爬虫爬取指定博客的所有文章
2016/02/17 Python
python如何读写json数据
2018/03/21 Python
Python实现针对给定单链表删除指定节点的方法
2018/04/12 Python
使用python读取.text文件特定行的数据方法
2019/01/28 Python
Python基于WordCloud制作词云图
2019/11/29 Python
python 二维矩阵转三维矩阵示例
2019/11/30 Python
pytorch方法测试详解——归一化(BatchNorm2d)
2020/01/15 Python
Python通过Pillow实现图片对比
2020/04/29 Python
python 利用matplotlib在3D空间绘制二次抛物面的案例
2021/02/06 Python
html5 Canvas画图教程(10)—把面拆成线条模拟出圆角矩形
2013/01/09 HTML / CSS
哄娃神器4moms商店:美国婴童用品品牌
2019/03/07 全球购物
俄罗斯马克西多姆家居用品网上商店:Максидом
2020/02/06 全球购物
药品质量检测应届生求职信
2013/11/14 职场文书
动漫设计与制作专业推荐信
2014/07/07 职场文书
端午节活动总结
2014/08/26 职场文书
三提三创主题教育活动查摆整改措施
2014/10/25 职场文书
教师个人师德总结
2015/02/06 职场文书
语文教师求职信范文
2015/03/20 职场文书
格列夫游记读书笔记
2015/07/01 职场文书
2016幼儿园教师节新闻稿
2015/11/25 职场文书
56句经典英文座右铭
2019/08/09 职场文书
带你了解CSS基础知识,样式
2021/07/21 HTML / CSS