vue二选一tab栏切换新做法实现


Posted in Vue.js onJanuary 19, 2021

问题描述

在我们做项目的过程中,有时候会要做一些tab栏切换效果。有两个tab的,有三个tab的,甚至有五六七八个tab的。平常我们直接拿饿了么的tab组件用就行了,但是偶尔自己闲着没事,自己写个两个tab切换效果的,即二选一效果。闲话少说,上动态效果图

vue二选一tab栏切换新做法实现

本案例适合两个tab的(三个tab的可以仿照我的写,如果是四五个tab用饿了么组件会更快些)

代码如下

HTML部分

<template>
 <div id="app">
  <div class="tabWrap">
   <!-- 这个结构是tab导航,并给其绑定对应的点击事件,在点击事件的回调中
   去控制对应内容的显示隐藏和样式的修改即:tab的切换-->
   <div class="tabNav">
    <div class="navOne" @click="tabOne">tab1</div>
    <div class="navTwo" @click="tabTwo">tab2</div>
   </div>
   <!-- 这个结构是tab导航对应的内容 -->
   <div class="tabContent">
    <!-- 通过v-show控制隐藏,同一时刻隐藏一个显示一个,就实现了tab栏的切换效果了 -->
    <div class="navOneBox" v-show="showTabOne">我是切换1</div>
    <div class="navTwoBox" v-show="showTabTwo">i am tab2</div>
   </div>
  </div>
 </div>
</template>

js部分

<script>
export default {
 name: "app",
 data() {
  return {
   showTabOne: true, // 二选一tab切换
   showTabTwo: false, // 二选一tab切换
  };
 },
 methods: {
  // 二选一tab栏切换
  tabOne() {
   /*
    点击tab1的时候,让tab1显示,tab2隐藏,即showTabOne为true,showTabTwo为false
    同时修改tab1的样式使其"高亮",注意不要忘了修改tab2的样式,使其"不高亮"。
    点击tab2的时候,也是同理。
   */
   this.showTabOne = true;
   this.showTabTwo = false;
   document.querySelector(".navOne").style.backgroundColor = "#fff";
   document.querySelector(".navTwo").style.backgroundColor = "#e3e3e3";
   document.querySelector(".navOne").style.color = "#3985EC";
   document.querySelector(".navTwo").style.color = "#80868D";
  },
  // 二选一tab栏切换
  tabTwo() {
   this.showTabTwo = true;
   this.showTabOne = false;
   document.querySelector(".navOne").style.backgroundColor = "#e3e3e3";
   document.querySelector(".navTwo").style.backgroundColor = "#fff";
   document.querySelector(".navTwo").style.color = "#3985EC";
   document.querySelector(".navOne").style.color = "#80868D";
  },
 },
};
</script>

css部分

<style lang="less">
.tabNav {
 width: 126px;
 height: 30px;
 border-radius: 2px;
 background-color: #e3e3e3;
 display: flex;
 align-items: center;
 justify-content: space-evenly;
 .navOne {
  width: 60px;
  height: 26px;
  border-radius: 2px;
  background-color: #fff;
  color: #3985ec;
  font-size: 14px;
  font-weight: 500;
  display: flex;
  justify-content: center;
  align-items: center;
  cursor: pointer;
 }
 .navTwo {
  width: 60px;
  height: 26px;
  color: #80868d;
  border-radius: 2px;
  font-size: 14px;
  font-weight: 500;
  display: flex;
  justify-content: center;
  align-items: center;
  cursor: pointer;
 }
}
.tabContent {
 margin-top: 8px;
 .navOneBox {
  background-color: #bfa;
 }
 .navTwoBox {
  background-color: #baf;
 }
}
</style>

到此这篇关于vue二选一tab栏切换新做法实现的文章就介绍到这了,更多相关vue tab栏切换内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Vue.js 相关文章推荐
在Vue中使用Echarts可视化库的完整步骤记录
Nov 18 Vue.js
8个非常实用的Vue自定义指令
Dec 15 Vue.js
vue实现图片裁剪后上传
Dec 16 Vue.js
vue 在服务器端直接修改请求的接口地址
Dec 19 Vue.js
Vue单页面应用中实现Markdown渲染
Feb 14 Vue.js
vue实现可移动的悬浮按钮
Mar 04 Vue.js
vue+django实现下载文件的示例
Mar 24 Vue.js
Vue实现跑马灯样式文字横向滚动
Nov 23 Vue.js
Vue elementUI表单嵌套表格并对每行进行校验详解
Feb 18 Vue.js
Vue全局事件总线你了解吗
Feb 24 Vue.js
VUE使用draggable实现组件拖拽
Apr 06 Vue.js
vue实现列表拖拽排序的示例代码
Apr 08 Vue.js
vue-resource 拦截器interceptors使用详解
Jan 18 #Vue.js
vue element el-transfer增加拖拽功能
Jan 15 #Vue.js
Vue实现多页签组件
Jan 14 #Vue.js
如何在vue中使用HTML 5 拖放API
Jan 14 #Vue.js
Vue中引入svg图标的两种方式
Jan 14 #Vue.js
vue+element table表格实现动态列筛选的示例代码
Jan 14 #Vue.js
vue 递归组件的简单使用示例
Jan 14 #Vue.js
You might like
与文件上传有关的php配置参数总结
2013/06/14 PHP
php中最简单的字符串匹配算法
2014/12/16 PHP
制作特殊字的脚本
2006/06/26 Javascript
jQuery asp.net 用json格式返回自定义对象
2010/04/07 Javascript
javascript中&quot;/&quot;运算符常见错误
2010/10/13 Javascript
JavaScript中定义对象原型的两种使用方法
2016/12/15 Javascript
Bootstrap 下拉多选框插件Bootstrap Multiselect
2017/01/22 Javascript
JavaScript实现的XML与JSON互转功能详解
2017/02/16 Javascript
jQuery实现遍历复选框的方法示例
2017/03/06 Javascript
基于javascript的异步编程实例详解
2017/04/10 Javascript
vue在使用ECharts时的异步更新和数据加载详解
2017/11/22 Javascript
3种vue组件的书写形式
2017/11/29 Javascript
Angular2+如何去除url中的#号详解
2017/12/20 Javascript
p5.js入门教程之平滑过渡(Easing)
2018/03/16 Javascript
Javasript设计模式之链式调用详解
2018/04/26 Javascript
详解swipe使用及竖屏页面滚动方法
2018/06/28 Javascript
详解JavaScript中typeof与instanceof用法
2018/10/24 Javascript
详解mpvue中小程序自定义导航组件开发指南
2019/02/11 Javascript
小程序绑定用户方案优化小结
2019/05/15 Javascript
微信小程序tabBar设置实例解析
2019/11/14 Javascript
原生js实现ajax请求和JSONP跨域请求操作示例
2020/03/14 Javascript
详解微信小程序(Taro)手动埋点和自动埋点的实现
2021/03/02 Javascript
[12:21]VICI vs TNC (BO3)
2018/06/07 DOTA
Python 变量类型及命名规则介绍
2013/06/08 Python
用Python实现协同过滤的教程
2015/04/08 Python
python读取word文档的方法
2015/05/09 Python
微信跳一跳python自动代码解读1.0
2018/01/12 Python
Python错误处理操作示例
2018/07/18 Python
Django查询优化及ajax编码格式原理解析
2020/03/25 Python
python列表的逆序遍历实现
2020/04/20 Python
俄罗斯眼镜网: optikaworld
2016/07/31 全球购物
英国舒适型鞋履品牌:FitFlop
2017/05/17 全球购物
新加坡交友网站:be2新加坡
2019/04/10 全球购物
英文留学推荐信范文
2014/01/25 职场文书
2015年暑假生活总结
2015/07/13 职场文书
虚拟机linux端mysql数据库无法远程访问的解决办法
2021/05/26 MySQL