vue 手动实现tab栏

本文介绍如何在Vue.js项目中,由于第三方组件样式不满足需求,选择手动编写Tab栏组件的过程,提供了基本实现思路。

由于UI样式的影响,el-tabs实现起来比较麻烦,所以选择自己手动写

activeName: "zujian1",
listTop: [{ name: '组件1', id: 'zujian1' },
     { name: '组件2', id: 'zujian2' },
     { name: '组件3', id: 'zujian3' },],


<div class="tabs-ul">
	<span v-for="(item,index) in listTop" :key="index" @click="activeName = item.id"
		:class="activeName == item.id?'is-active':''">{{item.name}}</span>
	<div class="tabs-ul-bar" :class="activeName == 'zujina1'?'one':activeName == 'zujian2'?'two':'three'"></div>
</div>
<section>
	<zujian1 v-if="activeName == 'zujian1'" />
	<zujian2 v-if="activeName == 'zujian2'"/>
	<zujian3 v-if="activeName == 'zujian3'"/>
</section>


.one {
	transition: 0.2s;
	transform-origin: center;
	transform: translateX(0px);
}
.two {
	transition: 0.2s;
	transform-origin: center;
	transform: translateX(88px);
}
.three {
	transition: 0.2s;
	transform-origin: center;
	transform: translateX(178px);
}


以上,其余的样式大家可以自由发挥

### Vue2 手动实现 Tab 切换功能 在 Vue2 中手动实现 Tab 切换功能的核心思路是通过绑定 `class` 或者动态控制样式来改变选中的状态,并利用索引来匹配对应的 Tab 内容。以下是详细的实现方式: #### HTML 结构 HTML 部分主要由两部分组成:Tab 列表和对应的内容区域。 ```html <div id="app"> <div class="tabs"> <!-- 循环渲染 Tab --> <div v-for="(tab, index) in tabs" :key="index" @click="selectTab(index)" :class="{ active: currentIndex === index }">{{ tab.name }}</div> </div> <!-- 动态显示内容 --> <div class="content"> {{ tabs[currentIndex].content }} </div> </div> ``` #### JavaScript 实现逻辑 使用 Vue 的响应式特性,监听用户的点击操作并更新当前激活的 Tab 索引。 ```javascript new Vue({ el: '#app', data() { return { // 定义 Tabs 数据 tabs: [ { name: '首页', content: '这是首页的内容' }, { name: '关于', content: '这是关于我们页的内容' }, { name: '联系', content: '这是联系我们页的内容' } ], // 当前选中的 Tab 索引 currentIndex: 0 }; }, methods: { selectTab(index) { this.currentIndex = index; } } }); ``` #### CSS 样式 为了视觉上区分选中的 Tab 和未选中的 Tab,可以通过设置不同的背景颜色或者字体加粗等方式实现。 ```css .tabs div { display: inline-block; padding: 10px 20px; cursor: pointer; } .tabs div.active { background-color: #42b983; color: white; } ``` 以上代码展示了如何在 Vue2 中手动实现一个简单的 Tab 切换功能[^1]。核心在于通过 `v-for` 渲染 Tab 列表,同时利用 `@click` 绑定事件处理函数,最后通过条件判断 (`currentIndex`) 来决定哪个 Tab 被选中以及其对应的内容被展示。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值