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 相关文章推荐
springboot+vue实现文件上传下载
Nov 17 Vue.js
浅析VUE防抖与节流
Nov 24 Vue.js
VUE项目实现主题切换的多种方法
Nov 26 Vue.js
vue图片裁剪插件vue-cropper使用方法详解
Dec 16 Vue.js
vue中如何添加百度统计代码
Dec 19 Vue.js
Vue组件简易模拟实现购物车
Dec 21 Vue.js
解决vue使用vant轮播组件swipe + flex时文字抖动问题
Jan 07 Vue.js
vue组件是如何解析及渲染的?
Jan 13 Vue.js
Vue详细的入门笔记
May 10 Vue.js
vue项目中的支付功能实现(微信支付和支付宝支付)
Feb 18 Vue.js
Vue2.0搭建脚手架
Mar 13 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
《魔兽世界》惊魂幻象将获得调整
2020/03/08 其他游戏
Windows下PHP5和Apache的安装与配置
2006/09/05 PHP
PHP针对字符串开头和结尾的判断方法
2016/07/11 PHP
Yii框架表单提交验证功能分析
2017/01/07 PHP
php伪静态验证码不显示的解决方案
2019/09/26 PHP
php7连接MySQL实现简易查询程序的方法
2020/10/13 PHP
jQuery 页面载入进度条实现代码
2009/02/08 Javascript
网页禁用右键实现代码(JavaScript代码)
2009/10/29 Javascript
alert中断settimeout计时功能
2013/07/26 Javascript
js下拉框二级关联菜单效果代码具体实现
2013/08/03 Javascript
jQuery实现tag便签去重效果的方法
2015/01/20 Javascript
javascript实现了照片拖拽点击置顶的照片墙代码
2015/04/03 Javascript
javascript Slip.js实现整屏滑动的手机网页
2015/11/25 Javascript
nodejs个人博客开发第一步 准备工作
2017/04/12 NodeJs
jQuery扩展_动力节点Java学院整理
2017/07/05 jQuery
Vue 菜单栏点击切换单个class(高亮)的方法
2018/08/22 Javascript
详解小程序中h5页面onShow实现及跨页面通信方案
2019/05/30 Javascript
Echarts实现多条折线可拖拽效果
2019/12/19 Javascript
Python实现的Google IP 可用性检测脚本
2015/04/23 Python
Python的Flask框架应用程序实现使用QQ账号登录的方法
2016/06/07 Python
TensorFlow实现RNN循环神经网络
2018/02/28 Python
Django框架中间件(Middleware)用法实例分析
2019/05/24 Python
Python中请不要再用re.compile了
2019/06/30 Python
python字典的常用方法总结
2019/07/31 Python
python框架flask表单实现详解
2019/11/04 Python
django项目中新增app的2种实现方法
2020/04/01 Python
Django调用支付宝接口代码实例详解
2020/04/04 Python
简单了解如何封装自己的Python包
2020/07/08 Python
Pytorch生成随机数Tensor的方法汇总
2020/09/09 Python
解释一下抽象方法和抽象类
2016/08/27 面试题
什么是用户模式(User Mode)与内核模式(Kernel Mode) ?
2015/09/07 面试题
驾驶员安全责任书
2014/07/22 职场文书
合同和协议有什么区别?
2014/10/08 职场文书
病人慰问信范文
2015/02/15 职场文书
员工开除通知书
2015/04/25 职场文书
入党后的感想
2015/08/10 职场文书