Vue2.0 多 Tab切换组件简单封装,满足自己简单的功能,可以直接拿去使用!

首先上效果图:
功能简单介绍:
1、支持tab切换
2、支持tab定位
3、支持tab自动化
仿React多Tab实现,总之可以正常使用满足日常需求,
1、使用方法:
==index.vue文件==
<TabItems>
<div name="买入" class="first">
<Content :isContTab = "0" />
</div>
<div name="自动再平衡" class="second">
<Content :isContTab = "1" />
</div>
<div name="一键卖出" class="three">
<Content :isContTab = "2" />
</div>
</TabItems>
PS:TabItems是我的TabSwitch组件,tab页面标题就是 div 中的name值,俩面是内容,也可以是子组件。
接下来展示TabItems组件
2、组件
index.less文件
body,html {margin: 0;}
* {
opacity: 1;
-webkit-backface-visibility: hidden;
}
.tabItems {
.Tab_tittle_wrap {
position: absolute;
width: 100%;
top: 0;
z-index: 2;
background: @ffffff;
display: -webkit-box;
height: 80px;
line-height: 80px;
text-align: center;
color: @222222;
border-bottom: 1px solid rgba(46, 177, 255, 0.08);
box-shadow: 0px 0px 25px 6px rgba(46, 177, 255, 0.21);
span {
display: block;
text-align: center;
width: 26%;
margin: 0 24px;
font-size: 26px;
position: relative;
i {
display: inline-block;
position: absolute;
width: 1px;
height: 50px;
top: 15px;
right: -24px;
background: @dddddd;
}
&:last-child {
i {
display: none;
}
}
}
.router-link-active {
color: #8097f9;
border-bottom: 1px solid #8097f9;
}
}
.Tab_item_wrap {
position: absolute;
top: 82px;
width: 100%;
z-index: 0;
background: @ffffff;
bottom: 0;
overflow-x: hidden;
-webkit-overflow-scrolling: touch;
}
.showAnminous {
opacity: 1;
-webkit-backface-visibility: hidden;
-webkit-animation-name: "rightMove";
/*动画名称,需要跟@keyframes定义的名称一致*/
-webkit-animation-duration: .3s;
/*动画持续的时间长*/
-webkit-animation-iteration-count: 1;
/*动画循环播放的次数为1 infinite为无限次*/
}
}
@-webkit-keyframes rightMove {
0% {
-webkit-transform: translate(110%, 0);
}
100% {
-webkit-transform: translate(0, 0);
}
}
@-ms-keyframes rightMove {
0% {
-ms-transform: translate(110%, 0);
}
100% {
-ms-transform: translate(0, 0);
}
}
@keyframes rightMove {
0% {
-webkit-transform: translate(110%, 0);
-ms-transform: translate(110%, 0);
transform: translate(110%, 0);
}
100% {
-webkit-transform: translate(0, 0);
-ms-transform: translate(0, 0);
transform: translate(0, 0);
}
}
TabItems.vue
<template>
<div class="tabItems">
<div class="Tab_tittle_wrap" @click="tabswitch">
<span v-for="(v,i) in tabTitle" :style="{width:(100/tabTitle.length-7.5)+'%'}" :class="isShowTab==i?'router-link-active':''">{{v}}<i></i></span>
</div>
<div class="Tab_item_wrap">
<slot></slot>
</div>
</div>
</template>
<style lang="less">
@import "./less/index";
</style>
<script>
export default {
data() {
return {
tabTitle: [],
isShowTab: 0,
}
},
created: function() {
let is = sessionStorage.getItem("isTabShow");
if(is) {
this.isShowTab = is;
} else {
let URL = libUtils.GetURLParamObj();
this.isShowTab = URL.isShowTab ? URL.isShowTab : "0";
}
setTimeout(function() {
this.tabswitch(document.querySelector(".Tab_tittle_wrap").children[this.isShowTab].click());
}.bind(this), 0);
},
mounted() {
let slot = this.$slots.default;
for(let i = 0; i < slot.length; i++) {
if(slot[i].tag == "div") {
this.tabTitle.push(slot[i].data.attrs.name);
if(slot[i].elm) {
slot[i].elm.className = "hide";
if(this.isShowTab == i) {
slot[i].elm.className = "";
}
};
}
}
},
methods: {
tabswitch() {
if(!event) return;
let target = event.target;
if(target.nodeName.toLowerCase() !== 'span') {
return;
}
let len = target.parentNode.children;
for(let i = 0; i < len.length; i++) {
len[i].index = i;
len[i].removeAttribute('class');
}
target.setAttribute('class', 'router-link-active');
this.isShowTab = target.index;
//tabItems
let child = this.$el.children[1].children;
for(let k = 0; k < child.length; k++) {
child[k].className = "hide";
if(k == target.index) {
child[k].className = "showAnminous";
}
}
try {
sessionStorage.setItem("isTabShow", target.index);
} catch(err) {
console.log(err);
}
}
}
}
</script>
PS:
created、mounted这两个方法不需要过多介绍,Vue生命周期
1、created方法介绍。
获取浏览器链接地址:libUtils.GetURLParamObj();获取浏览器链接地址的
created这个方法主要是用来定位tab具体显示哪个页面的
2、mounted方法介绍
主要是用于隐藏内容容器的
3、tabswitch方法
用来切换组件容器的显示的页面!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
相关文章:
css网站制作参考文献有哪些,易聊怎么注册?
网站建设制作、微信公众号,公明人民医院怎么在网上预约?
简易网站制作视频教程,使用记事本编写一个简单的网页html文件?
清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?
如何在宝塔面板中修改默认建站目录?
网站设计制作企业有哪些,抖音官网主页怎么设置?
如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?
如何制作网站标识牌,动态网站如何制作(教程)?
javascript中对象的定义、使用以及对象和原型链操作小结
制作网页的网站有哪些,电脑上怎么做网页?
建站之家VIP精选网站模板与SEO优化教程整合指南
合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?
如何在腾讯云服务器快速搭建个人网站?
如何设计高效校园网站?
北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?
Android使用GridView实现日历的简单功能
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
如何在IIS中新建站点并配置端口与物理路径?
制作国外网站的软件,国外有哪些比较优质的网站推荐?
英语简历制作免费网站推荐,如何将简历翻译成英文?
长春网站建设制作公司,长春的网络公司怎么样主要是能做网站的?
如何基于云服务器快速搭建个人网站?
Python文件管理规范_工程实践说明【指导】
如何快速生成橙子建站落地页链接?
西安制作网站公司有哪些,西安货运司机用的最多的app或者网站是什么?
如何通过西部数码建站助手快速创建专业网站?
如何在阿里云高效完成企业建站全流程?
保定网站制作方案定制,保定招聘的渠道有哪些?找工作的人一般都去哪里看招聘信息?
网站制作软件免费下载安装,有哪些免费下载的软件网站?
常州自助建站工具推荐:低成本搭建与模板选择技巧
免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?
如何在Golang中实现微服务服务拆分_Golang微服务拆分与接口管理方法
SAX解析器是什么,它与DOM在处理大型XML文件时有何不同?
seo网站制作优化,网站SEO优化步骤有哪些?
如何选择高性价比服务器搭建个人网站?
车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?
沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?
建站VPS配置与SEO优化指南:关键词排名提升策略
红河网站制作公司,红河事业单位身份证如何上传?
如何通过山东自助建站平台快速注册域名?
免费视频制作网站,更新又快又好的免费电影网站?
C#如何使用XPathNavigator高效查询XML
如何用PHP工具快速搭建高效网站?
新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?
制作宣传网站的软件,小红书可以宣传网站吗?
高防服务器租用首荐平台,企业级优惠套餐快速部署
攀枝花网站建设,攀枝花营业执照网上怎么年审?
代刷网站制作软件,别人代刷火车票靠谱吗?
制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。