vue实现滚动tab
Vue 实现滚动 Tab 的方法
使用 CSS 实现横向滚动
在 Vue 中实现滚动 Tab 可以通过 CSS 的 overflow-x: auto 属性实现横向滚动。将 Tab 内容包裹在一个容器中,设置容器的宽度和滚动属性。
<template>
<div class="scroll-tab-container">
<div class="tab-content">
<div v-for="(tab, index) in tabs" :key="index" class="tab-item">
{{ tab }}
</div>
</div>
</div>
</template>
<script>
export default {
data() {
return {
tabs: ['Tab 1', 'Tab 2', 'Tab 3', 'Tab 4', 'Tab 5', 'Tab 6']
}
}
}
</script>
<style>
.scroll-tab-container {
width: 100%;
overflow-x: auto;
white-space: nowrap;
}
.tab-content {
display: inline-flex;
}
.tab-item {
padding: 10px 20px;
margin: 0 5px;
background-color: #f0f0f0;
border-radius: 4px;
cursor: pointer;
}
</style>
使用第三方库实现平滑滚动
如果需要更复杂的滚动效果,可以使用第三方库如 vue-smooth-scroll 或 vue-scrollto。

安装 vue-scrollto:
npm install vue-scrollto
在 Vue 中使用:

<template>
<div class="scroll-tab-container">
<div class="tab-content">
<div
v-for="(tab, index) in tabs"
:key="index"
class="tab-item"
@click="scrollToTab(index)"
>
{{ tab }}
</div>
</div>
</div>
</template>
<script>
import VueScrollTo from 'vue-scrollto'
export default {
data() {
return {
tabs: ['Tab 1', 'Tab 2', 'Tab 3', 'Tab 4', 'Tab 5', 'Tab 6']
}
},
methods: {
scrollToTab(index) {
const element = document.querySelectorAll('.tab-item')[index]
VueScrollTo.scrollTo(element, 300, { easing: 'ease-in-out' })
}
}
}
</script>
动态添加和删除 Tab
如果需要动态添加或删除 Tab,可以通过 Vue 的响应式数据实现。
<template>
<div class="scroll-tab-container">
<div class="tab-content">
<div v-for="(tab, index) in tabs" :key="index" class="tab-item">
{{ tab }}
<button @click="removeTab(index)">×</button>
</div>
</div>
<button @click="addTab">Add Tab</button>
</div>
</template>
<script>
export default {
data() {
return {
tabs: ['Tab 1', 'Tab 2', 'Tab 3']
}
},
methods: {
addTab() {
this.tabs.push(`Tab ${this.tabs.length + 1}`)
},
removeTab(index) {
this.tabs.splice(index, 1)
}
}
}
</script>
响应式设计优化
为了在不同屏幕尺寸下保持良好的用户体验,可以通过媒体查询调整 Tab 的样式。
@media (max-width: 768px) {
.tab-item {
padding: 8px 15px;
font-size: 14px;
}
}
通过以上方法,可以在 Vue 中灵活实现滚动 Tab 功能,满足不同场景的需求。






