vue实现滚动显示
Vue 实现滚动显示的方法
使用 CSS 动画实现滚动
通过 CSS 的 animation 和 @keyframes 实现内容滚动效果。适用于简单的文字或图片滚动。
<template>
<div class="scroll-container">
<div class="scroll-content">
{{ scrollText }}
</div>
</div>
</template>
<style>
.scroll-container {
overflow: hidden;
width: 100%;
white-space: nowrap;
}
.scroll-content {
display: inline-block;
animation: scroll 10s linear infinite;
}
@keyframes scroll {
0% { transform: translateX(100%); }
100% { transform: translateX(-100%); }
}
</style>
使用 JavaScript 动态控制滚动
通过 Vue 的 ref 和 JavaScript 定时器动态修改样式,实现更灵活的滚动控制。
<template>
<div ref="scrollContainer" class="scroll-container">
<div ref="scrollContent" class="scroll-content">
{{ scrollText }}
</div>
</div>
</template>
<script>
export default {
data() {
return {
scrollText: '需要滚动显示的内容',
scrollPosition: 0
};
},
mounted() {
this.startScrolling();
},
methods: {
startScrolling() {
setInterval(() => {
this.scrollPosition -= 1;
this.$refs.scrollContent.style.transform = `translateX(${this.scrollPosition}px)`;
if (this.scrollPosition < -this.$refs.scrollContent.offsetWidth) {
this.scrollPosition = this.$refs.scrollContainer.offsetWidth;
}
}, 20);
}
}
};
</script>
使用第三方库实现滚动
引入如 vue-seamless-scroll 等第三方库,快速实现复杂的滚动效果。
安装库:
npm install vue-seamless-scroll
使用示例:

<template>
<vue-seamless-scroll
:data="list"
class="scroll-container"
>
<ul>
<li v-for="(item, index) in list" :key="index">
{{ item }}
</li>
</ul>
</vue-seamless-scroll>
</template>
<script>
import vueSeamlessScroll from 'vue-seamless-scroll';
export default {
components: { vueSeamlessScroll },
data() {
return {
list: ['内容1', '内容2', '内容3']
};
}
};
</script>
注意事项
- 性能优化:对于长列表滚动,使用虚拟滚动(如
vue-virtual-scroller)减少 DOM 渲染压力。 - 响应式设计:通过监听容器宽度变化动态调整滚动速度或方向。
- 移动端适配:增加
touch事件处理,允许用户手动暂停/继续滚动。






