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图片裁剪插件vue-cropper使用方法详解
Dec 16 Vue.js
Vue组件简易模拟实现购物车
Dec 21 Vue.js
基于vue+echarts数据可视化大屏展示的实现
Dec 25 Vue.js
Vue 修改网站图标的方法
Dec 31 Vue.js
vue+vant 上传图片需要注意的地方
Jan 03 Vue.js
jenkins自动构建发布vue项目的方法步骤
Jan 04 Vue.js
vuex的使用和简易实现
Jan 07 Vue.js
vue编写简单的购物车功能
Jan 08 Vue.js
vite2.0+vue3移动端项目实战详解
Mar 03 Vue.js
Vue.js 带下拉选项的输入框(Textbox with Dropdown)组件
Apr 17 Vue.js
Vue实现下拉加载更多
May 09 Vue.js
Vue + iView实现Excel上传功能的完整代码
Jun 22 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在字符串中查找指定字符串并删除的代码
2008/10/02 PHP
php 数组的指针操作实现代码
2011/02/08 PHP
PHP实现图片自动清理的方法
2015/07/08 PHP
php pthreads多线程的安装与使用
2016/01/19 PHP
ExtJS 2.0 GridPanel基本表格简明教程
2010/05/25 Javascript
js传参数受特殊字符影响错误的解决方法
2013/10/21 Javascript
jQuery Mobile的loading对话框显示/隐藏方法分享
2013/11/26 Javascript
JavaScript动态添加style节点的方法
2015/06/09 Javascript
理解JavaScript中Promise的使用
2016/01/18 Javascript
JQuery validate插件Remote用法大全
2016/05/15 Javascript
JS实现可编辑的后台管理菜单功能【附demo源码下载】
2016/09/13 Javascript
基于Angular.js实现的触摸滑动动画实例代码
2017/02/19 Javascript
js canvas实现擦除效果示例代码
2017/04/26 Javascript
vue获取元素宽、高、距离左边距离,右,上距离等还有XY坐标轴的方法
2018/09/05 Javascript
基于vue实现一个禅道主页拖拽效果
2019/05/27 Javascript
html-webpack-plugin修改页面的title的方法
2020/06/18 Javascript
浅谈Python黑帽子取代netcat
2018/02/10 Python
Python实现简单层次聚类算法以及可视化
2019/03/18 Python
Python turtle库绘制菱形的3种方式小结
2019/11/23 Python
python中的selenium安装的步骤(浏览器自动化测试框架)
2020/03/17 Python
Django之富文本(获取内容,设置内容方式)
2020/05/21 Python
Python3开发环境搭建详细教程
2020/06/18 Python
在pycharm中文件取消用 pytest模式打开的操作
2020/09/01 Python
Java基础知识面试题
2014/03/25 面试题
物业管理公司实习生自我鉴定
2013/09/19 职场文书
《新型玻璃》教学反思
2014/04/13 职场文书
党员志愿者活动方案
2014/08/28 职场文书
离婚财产分隔协议书
2014/10/23 职场文书
离婚案件上诉状
2015/05/23 职场文书
预备党员转正党小组意见
2015/06/01 职场文书
班委竞选稿范文
2015/11/21 职场文书
大学生奖学金获奖感言(范文)
2019/08/15 职场文书
python实现批量移动文件
2021/04/05 Python
Oracle11g r2 卸载干净重装的详细教程(亲测有效已重装过)
2021/06/04 Oracle
nginx共享内存的机制详解
2022/03/21 Servers
Python线程池与GIL全局锁实现抽奖小案例
2022/04/13 Python