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+iview实现分页及查询功能
Nov 17 Vue.js
vue element实现表格合并行数据
Nov 30 Vue.js
vue 数据操作相关总结
Dec 17 Vue.js
vue使用require.context实现动态注册路由
Dec 25 Vue.js
基于Vue2实现移动端图片上传、压缩、拖拽排序、拖拽删除功能
Jan 05 Vue.js
vue实现简单数据双向绑定
Apr 28 Vue.js
vue组件的路由高亮问题解决方法
May 11 Vue.js
Vue3.0中Ref与Reactive的区别示例详析
Jul 07 Vue.js
Vue.js中v-bind指令的用法介绍
Mar 13 Vue.js
Vue中使用import进行路由懒加载的原理分析
Apr 01 Vue.js
vue实现可以快进后退的跑马灯组件
Apr 08 Vue.js
Vue OpenLayer 为地图绘制风场效果
Apr 24 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中对数据库操作的封装
2006/10/09 PHP
无法载入 mcrypt 扩展,请检查 PHP 配置终极解决方案
2011/07/18 PHP
phpmyadmin中禁止外网使用的方法
2014/11/04 PHP
php 使用file_get_contents读取大文件的方法
2014/11/13 PHP
php+flash+jQuery多图片上传源码分享
2020/07/27 PHP
php+mysql+jquery实现日历签到功能
2017/02/27 PHP
laravel在中间件内生成参数并且传递到控制器中的2种姿势
2019/10/15 PHP
JQuery 无废话系列教程(一) jquery入门 [推荐]
2009/06/23 Javascript
jQuery删除节点的三个方法即remove()detach()和empty()
2013/12/27 Javascript
jquery取子节点及当前节点属性值的方法
2014/09/09 Javascript
js拖拽的原型声明和用法总结
2016/04/04 Javascript
浅析JavaScript Array和string的转换(推荐)
2016/05/20 Javascript
AngularJS基础 ng-keypress 指令简单示例
2016/08/02 Javascript
基于Vuejs实现购物车功能
2016/08/02 Javascript
WebPack基础知识详解
2017/01/16 Javascript
jQuery文字轮播特效
2017/02/12 Javascript
前端框架学习总结之Angular、React与Vue的比较详解
2017/03/14 Javascript
js设置随机切换背景图片的简单实例
2017/11/12 Javascript
JS实现的哈夫曼编码示例【原始版与修改版】
2018/04/22 Javascript
python解析html开发库pyquery使用方法
2014/02/07 Python
使用rpclib进行Python网络编程时的注释问题
2015/05/06 Python
Python实现分割文件及合并文件的方法
2015/07/10 Python
python实现批量nii文件转换为png图像
2019/07/18 Python
python numpy存取文件的方式
2020/04/01 Python
pytorch torchvision.ImageFolder的用法介绍
2020/02/20 Python
Python迭代器协议及for循环工作机制详解
2020/07/14 Python
python的dict判断key是否存在的方法
2020/12/09 Python
新奥尔良珠宝:Mignon Faget
2020/11/23 全球购物
int *p=NULL和*p= NULL有什么区别
2014/10/23 面试题
自动化专业个人求职信范文
2013/11/29 职场文书
毕业生求职信的经典写法
2014/01/31 职场文书
物流毕业生个人的自我评价
2014/02/13 职场文书
前处理组长岗位职责
2014/03/01 职场文书
幼儿园家长安全责任书
2014/07/22 职场文书
mysql对于模糊查询like的一些汇总
2021/05/09 MySQL
Python 详解通过Scrapy框架实现爬取百度新冠疫情数据流程
2021/11/11 Python