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 相关文章推荐
快速解决vue2+vue-cli3项目ie兼容的问题
Nov 17 Vue.js
Vue 简单实现前端权限控制的示例
Dec 25 Vue.js
vue中封装axios并实现api接口的统一管理
Dec 25 Vue.js
vue 实现图片懒加载功能
Dec 31 Vue.js
vue中activated的用法
Jan 03 Vue.js
vue 动态添加的路由页面刷新时失效的原因及解决方案
Feb 26 Vue.js
vue前端和Django后端如何查询一定时间段内的数据
Feb 28 Vue.js
vue项目实现分页效果
Mar 24 Vue.js
详解Vue的options
May 15 Vue.js
vue-cropper组件实现图片切割上传
May 27 Vue.js
Vue.Draggable实现交换位置
Apr 07 Vue.js
vue项目打包后路由错误的解决方法
Apr 13 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
虫族 Zerg 热键控制
2020/03/14 星际争霸
PHP安全配置详细说明
2011/09/26 PHP
关于PHP 如何用 curl 读取 HTTP chunked 数据
2016/02/26 PHP
常用PHP数组排序函数归纳
2016/08/08 PHP
thinkPHP数据库增删改查操作方法实例详解
2016/12/06 PHP
关于hashchangebroker和statehashable的补充文档
2011/08/08 Javascript
FusionCharts图表显示双Y轴双(多)曲线
2012/11/22 Javascript
Jquery easyUI 更新行示例
2014/03/06 Javascript
javascript实现全角与半角字符的转换
2015/01/07 Javascript
浅谈setTimeout 与 setInterval
2015/06/23 Javascript
JavaScript笔记之数据属性和存储器属性
2016/03/31 Javascript
Javascript实现苹果悬浮虚拟按钮
2016/04/10 Javascript
jQuery 3 中的新增功能汇总介绍
2016/06/12 Javascript
JS实现页面载入时随机显示图片效果
2016/09/07 Javascript
JS封装通过className获取元素的函数示例
2016/12/20 Javascript
关于foreach循环中遇到的问题小结
2017/05/08 Javascript
深入浅析Nodejs的Http模块
2017/06/20 NodeJs
vue单个组件实现无限层级多选菜单功能
2018/04/10 Javascript
详解easyui基于 layui.laydate日期扩展组件
2018/07/18 Javascript
angularJs select绑定的model取不到值的解决方法
2018/10/08 Javascript
JavaScript实现的鼠标跟随特效示例【2则实例】
2018/12/22 Javascript
vue使用el-upload上传文件及Feign服务间传递文件的方法
2019/03/15 Javascript
使用element-ui的el-menu导航选中后刷新页面保持当前选中状态
2019/07/19 Javascript
详解nuxt 微信公众号支付遇到的问题与解决
2019/08/26 Javascript
原理深度解析Vue的响应式更新比React快
2020/04/04 Javascript
Python正则表达式如何进行字符串替换实例
2016/12/28 Python
Pytorch入门之mnist分类实例
2018/04/14 Python
PyTorch上实现卷积神经网络CNN的方法
2018/04/28 Python
python中sys.argv函数精简概括
2018/07/08 Python
dataframe 按条件替换某一列中的值方法
2019/01/29 Python
Tensorflow tf.dynamic_partition矩阵拆分示例(Python3)
2020/02/07 Python
Python 内存管理机制全面分析
2021/01/16 Python
Python实现微信表情包炸群功能
2021/01/28 Python
农业局学习党的群众路线教育实践活动心得体会
2014/03/07 职场文书
叶问观后感
2015/06/15 职场文书
AngularJS实现多级下拉框
2022/03/25 Javascript