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 相关文章推荐
ExtJS Ext.MessageBox.alert()弹出对话框详解
Apr 02 Javascript
javascript setTimeout()传递函数参数(包括传递对象参数)
Apr 07 Javascript
基于jQuery的动态表格插件
Mar 28 Javascript
JavaScript实现的日期控件具体代码
Nov 18 Javascript
jquery动态改变form属性提交表单
Jun 03 Javascript
浅谈JavaScript字符串与数组
Jun 03 Javascript
文件上传插件SWFUpload的使用指南
Nov 29 Javascript
JavaScript与JQUERY获取元素的宽、高和位置
Feb 26 Javascript
Bootstrap输入框组件使用详解
Jun 09 Javascript
图片文字识别(OCR)插件Ocrad.js教程
Nov 26 Javascript
JavaScript闭包原理与用法学习笔记
May 29 Javascript
webpack的移动端适配方案小结
Jul 25 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
MySQL修改密码方法总结
2008/03/25 PHP
ThinkPHP学习笔记(一)ThinkPHP部署
2014/06/22 PHP
php查找指定目录下指定大小文件的方法
2014/11/28 PHP
PHP中应该避免使用同名变量(拆分临时变量)
2015/04/03 PHP
PHP微信刮刮卡 附微信接口
2016/07/22 PHP
javascript 解析url的search方法
2010/02/09 Javascript
jquery预览图片实现鼠标放上去显示实际大小
2014/01/16 Javascript
table insertRow、deleteRow定义和用法总结
2014/05/14 Javascript
简单介绍JavaScript数据类型之隐式类型转换
2015/12/28 Javascript
谈谈JavaScript类型系统之Math
2016/01/06 Javascript
javaScript语法总结
2016/11/25 Javascript
Angular 通过注入 $location 获取与修改当前页面URL的实例
2017/05/31 Javascript
Node.js+ES6+dropload.js实现移动端下拉加载实例
2017/06/01 Javascript
微信小程序获取手机号授权用户登录功能
2017/11/09 Javascript
JS实现打砖块游戏
2020/02/14 Javascript
微信小程序实现canvas分享朋友圈海报
2020/06/21 Javascript
jQuery实现简单全选框
2020/09/13 jQuery
[01:06:43]完美世界DOTA2联赛PWL S3 PXG vs GXR 第二场 12.19
2020/12/24 DOTA
Python交换变量
2008/09/06 Python
Python中的True,False条件判断实例分析
2015/01/12 Python
python中os操作文件及文件路径实例汇总
2015/01/15 Python
python在Windows8下获取本机ip地址的方法
2015/03/14 Python
Python实现二叉搜索树BST的方法示例
2019/07/30 Python
python生成随机红包的实例写法
2019/09/02 Python
简单了解python中的f.b.u.r函数
2019/11/02 Python
Django权限控制的使用
2021/01/07 Python
豪华床上用品 :Jennifer Adams
2019/09/15 全球购物
新加坡第一的杂货零售商:NTUC FairPrice
2020/12/05 全球购物
阿尔卡特(中国)的面试题目
2014/08/20 面试题
医科大学生毕业的自我评价分享
2013/11/12 职场文书
咖啡书吧创业计划书
2014/01/13 职场文书
代理人委托书
2014/08/01 职场文书
教师考核评语大全
2014/12/31 职场文书
鼋头渚导游词
2015/02/05 职场文书
请求模块urllib之PYTHON爬虫的基本使用
2022/04/08 Python
Win11怎么解除儿童账号限制?Win11解除微软儿童账号限制方法
2022/07/07 数码科技