admin 管理员组文章数量: 1086019
一 , Element
<!-- 导航栏 --><div class="TAb"><div class="xiangzuo" @click="leftChange()"><!-- 左箭头 --><i class="el-icon-arrow-left"></i></div><el-tabs class="TAB" v-model="activeIndex" @tab-click="handleClick" scrollable="true" ><el-tab-pane v-for="(item, index) in data" :key="item.id" :label="item.label" :name="index.toString()"><!-- 定义不同的切换列表样式 切换不同样式使用的插槽(没这需求可不写)--><slot :name="item.label" :index="item.id" /></el-tab-pane></el-tabs><div class="xiangyou" @click="rightChange()"><!-- 右箭头 --><i class="el-icon-arrow-right"></i></div></div>//xiangzuo , xiangyou 是左右箭头 定位到tab栏左右两侧
value / v-model | 绑定值,选中选项卡的 name |
定义导航索引值 以及虚拟数据
data(){return(){activeIndex: "0",// 导航列表data: [{id: 0,label: '熊大',name:'one'},{id: 1,label: '熊二',name:'two'},{id:2,label: '光头强',name:'there'},{id: 3,label: '李老板',name:'four'},],}
}
使用左右箭头方法
methods: {// 导航栏左右箭头切换leftChange() {let num = Number(this.activeIndex)num > 0 && num--this.activeIndex = num.toString()},rightChange() {let num = Number(this.activeIndex)// this.data.length 数组长度num < this.data.length - 1 && num++this.activeIndex = num.toString()},}
到这里就实现左右箭头选中按个切换了
顺带再拓展一下
二 , tabs标签切换的不同模板样式
需求肯定不会这么简单的 官网给定的模板是切换渲染不同的标题 但在真实场景下每个页面的模板样式肯定不会是一样的 所以我们需要封装组件 以插槽的形式渲染不同的模板样式
//Tabs组件 <!-- 导航栏 --><div class="TAb"><div class="xiangzuo" @click="leftChange()"><!-- 左箭头 --><i class="el-icon-arrow-left"></i></div><el-tabs class="TAB" v-model="activeIndex" @tab-click="handleClick" scrollable="true" >//data 父组件传递过来的数据<el-tab-pane v-for="(item, index) in data" :key="item.id" :label="item.label" :name="index.toString()"><!-- 定义不同的切换列表样式 --><slot :name="item.label" :index="item.id" /></el-tab-pane></el-tabs><div class="xiangyou" @click="rightChange()"><!-- 右箭头 --><i class="el-icon-arrow-right"></i></div></div>//props 接收props: {data: {type: Array,default: () => [],},defaultActiveTab: {type: String,default: ""}},data() {return {activeIndex: "0",};}, //methods 切换方法methods: {// 导航栏左右箭头切换leftChange() {let num = Number(this.activeIndex)num > 0 && num--this.activeIndex = num.toString()},rightChange() {let num = Number(this.activeIndex)num < this.data.length - 1 && num++this.activeIndex = num.toString()},// 切换tab栏方法handleClick(tab) {this.activeIndex = tab.name},},
2.在父组件中引用并定义具名插槽名字
// 引入tab组件
import Tabs from './components/Tabs.vue';
<Tabs :data="activeList" :defaultActiveTab="'tab1'" class="tabs">//#绑定的具名插槽的名字<template #地名信息><div class="info"><div v-for="item in listTitle" :key="item.id"><div class="text-container"><span class="first">{{ item.title }}: </span> <span class="text">这里是文本内容,当文本内容过长时会自动换行,而不会 影响到布局。</span></div></div></div></template><template #配置管理><div class="tab-content-2">标签页2的内容</div></template><template #商品管理><div class="tab-content-3">标签页3的内容</div></template><template #库存管理><div class="tab-content-3">标签页4的内容</div></template>
</Tabs>
//贴上数据格式
// 导航列表activeList: [{id: 0,label: '地名信息',name: 'one'},{id: 1,label: '配置管理',name: 'two'},{id: 2,label: '商品管理',name: 'there'},{id: 3,label: '库存管理',name: 'four'},],
//附上效果图
续写: 可能测试的时候也是稍微有点问题 大家可以参考我最新补充的
最新修改的
版权声明:本文标题:一 , Element 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1700293954a383759.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论