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 相关文章推荐
动态表格Table类的实现
Aug 26 Javascript
jquery dialog键盘事件代码
Aug 01 Javascript
js跳转页面方法总结
Jan 29 Javascript
Javascript中的call()方法介绍
Mar 15 Javascript
Javascript中For In语句用法实例
May 14 Javascript
浅谈JSON.parse()和JSON.stringify()
Jul 14 Javascript
基于Vue.js实现tab滑块效果
Jul 23 Javascript
详解操作虚拟dom模拟react视图渲染
Jul 25 Javascript
vue异步axios获取的数据渲染到页面的方法
Aug 09 Javascript
Vue自定义弹窗指令的实现代码
Aug 13 Javascript
使用weixin-java-tools完成微信授权登录、微信支付的示例
Sep 26 Javascript
微信小程序MUI导航栏透明渐变功能示例(通过改变opacity实现)
Jan 24 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
DOTA2 6.87版本后新眼位详解攻略
2020/04/20 DOTA
php的字符串用法小结
2010/06/08 PHP
smarty模板引擎之内建函数用法
2015/03/30 PHP
神奇的代码 通杀各种网站-可随意修改复制页面内容
2008/07/17 Javascript
JQuery实现点击div以外的位置隐藏该div窗口
2013/09/13 Javascript
浅谈Javascript 数组与字典
2015/01/29 Javascript
编写高性能Javascript代码的N条建议
2015/10/12 Javascript
javascript字符串函数汇总
2015/12/06 Javascript
JQuery实现Ajax加载图片的方法
2015/12/24 Javascript
js 转json格式的字符串为对象或数组(前后台)的方法
2016/11/02 Javascript
NodeJS配置HTTPS服务实例分享
2017/02/19 NodeJs
ES6新特性之Object的变化分析
2017/03/31 Javascript
nodejs个人博客开发第七步 后台登陆
2017/04/12 NodeJs
详解使用React全家桶搭建一个后台管理系统
2017/11/04 Javascript
微信公众平台获取access_token的方法步骤
2019/03/29 Javascript
[46:48]DOTA2上海特级锦标赛A组小组赛#2 Secret VS CDEC第三局
2016/02/25 DOTA
Python接收Gmail新邮件并发送到gtalk的方法
2015/03/10 Python
Python黑魔法Descriptor描述符的实例解析
2016/06/02 Python
python tensorflow基于cnn实现手写数字识别
2018/01/01 Python
python查询mysql,返回json的实例
2018/03/26 Python
Python爬虫动态ip代理防止被封的方法
2019/07/07 Python
python设计tcp数据包协议类的例子
2019/07/23 Python
pandas如何处理缺失值
2019/07/31 Python
python应用文件读取与登录注册功能
2019/09/23 Python
python实现按关键字筛选日志文件
2019/12/24 Python
浅谈Python __init__.py的作用
2020/10/28 Python
Python Pandas数据分析工具用法实例
2020/11/05 Python
python pillow库的基础使用教程
2021/01/13 Python
地球上最先进的胡子和头发修剪器:Bevel
2018/01/23 全球购物
被告答辩状范文
2015/05/22 职场文书
圆明园观后感
2015/06/03 职场文书
初婚未育证明样本
2015/06/18 职场文书
公司转让协议书
2016/03/19 职场文书
导游词之山西关帝庙
2019/11/01 职场文书
Python自然语言处理之切分算法详解
2021/04/25 Python
Python如何把不同类型数据的json序列化
2021/04/30 Python