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 - HTML的request类
Jan 09 Javascript
传智播客学习之JavaScript基础篇
Nov 13 Javascript
javascript 操作select下拉列表框的一点小经验
Mar 20 Javascript
JavaScript中使用ActiveXObject操作本地文件夹的方法
Mar 28 Javascript
纯JavaScript实现的分页插件实例
Jul 14 Javascript
js实现鼠标点击文本框自动选中内容的方法
Aug 20 Javascript
JS实现按比例缩放图片的方法(附C#版代码)
Dec 08 Javascript
使用ajax的post同步执行(实现方法)
Dec 21 Javascript
详解JS函数stack size计算方法
Jun 18 Javascript
node.js express框架简介与实现
Jul 23 Javascript
解决vue初始化项目时,一直卡在Project description上的问题
Oct 31 Javascript
Vue实现下拉加载更多
May 09 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和js交互一例-PHP教程,PHP应用
2007/01/03 PHP
PHP图像识别技术原理与实现
2016/10/27 PHP
php 中htmlentities导致中文无法查询问题
2018/09/10 PHP
Javascript 生成指定范围数值随机数
2009/01/09 Javascript
ExtJS Window 最小化的一种方法
2009/11/18 Javascript
JavaScript之自定义类型
2012/05/04 Javascript
JavaScript高级程序设计(第3版)学习笔记9 js函数(下)
2012/10/11 Javascript
JQuery slideshow的一个小问题(如何发现及解决过程)
2013/02/06 Javascript
js实现倒计时(距离结束还有)示例代码
2013/07/24 Javascript
jquery浏览器滚动加载技术实现方案
2014/06/03 Javascript
JS限制文本框只能输入数字和字母方法
2015/02/28 Javascript
JS+CSS实现自动改变切换方向图片幻灯切换效果的方法
2015/03/02 Javascript
详解JavaScript UTC时间转换方法
2016/01/07 Javascript
js学习笔记之事件处理模型
2016/10/31 Javascript
vue组件实现文字居中对齐的方法
2017/08/23 Javascript
轻松搞定jQuery+JSONP跨域请求的解决方案
2018/03/06 jQuery
在vue项目中,使用axios跨域处理
2018/03/07 Javascript
vue工程全局设置ajax的等待动效的方法
2019/02/22 Javascript
Vue 使用formData方式向后台发送数据的实现
2019/04/14 Javascript
JavaScript实现的联动菜单特效示例
2019/07/08 Javascript
VUE前端从后台请求过来的数据进行转换数据结构操作
2020/11/11 Javascript
在Python的Django框架中用流响应生成CSV文件的教程
2015/05/02 Python
使用Python脚本将Bing的每日图片作为桌面的教程
2015/05/04 Python
python 3.0 模拟用户登录功能并实现三次错误锁定
2017/11/01 Python
python引用(import)某个模块提示没找到对应模块的解决方法
2019/01/19 Python
python em算法的实现
2020/10/03 Python
python爬虫看看虎牙女主播中谁最“顶”步骤详解
2020/12/01 Python
阿联酋优惠券服务:Living Kool
2019/12/12 全球购物
销售冠军获奖感言
2014/02/03 职场文书
领导干部四风问题自我剖析材料
2014/09/25 职场文书
党的群众路线教育实践活动个人对照检查材料(教师)
2014/11/04 职场文书
抄袭同学作业检讨书1000字
2014/11/20 职场文书
OpenCV绘制圆端矩形的示例代码
2021/08/30 Python
python百行代码实现汉服圈图片爬取
2021/11/23 Python
Redis集群节点通信过程/原理流程分析
2022/03/18 Redis
windows10 家庭版下FTP服务器搭建教程
2022/08/05 Servers