在 Vue 中实现文字上下翻转滚动播报(即文字从下向上滚动显示),可以通过组件结构和CSS动画来实现。以下是一个基本的实现方法:
1. 创建滚动播报组件首先,创建一个名为 ScrollingText.vue 的组件,用于显示滚动的文本内容。
<template> <div class="scrolling-text"> <div class="scrolling-container"> <transition-group name="scroll"> <div v-for="(item, index) in items" :key="index" class="scrolling-item"> {{ item }} </div> </transition-group> </div> </div> </template> <script> export default { data() { return { items: [ '这是第一条滚动文字', '这是第二条滚动文字', '这是第三条滚动文字', // 可以根据需要添加更多的滚动内容 ], currentIndex: 0, }; }, mounted() { // 开始滚动 this.startScroll(); }, methods: { startScroll() { setInterval(() => { this.currentIndex = (this.currentIndex + 1) % this.items.length; }, 3000); // 每隔3秒切换一次文字,可以根据需要调整间隔时间 }, }, }; </script> <style scoped> .scrolling-text { width: 100%; overflow: hidden; } .scrolling-container { animation: scroll-up 10s linear infinite; } .scrolling-item { margin-bottom: 20px; /* 可以根据需要调整每条文字之间的间距 */ } @keyframes scroll-up { 0% { transform: translateY(0); } 100% { transform: translateY(-100%); } } .scroll-enter-active, .scroll-leave-active { transition: transform 1s; } .scroll-enter, .scroll-leave-to /* .scroll-leave-active in <2.1.8 */ { transform: translateY(100%); } </style>解释:
模板部分 (<template>):
使用 transition-group 包裹 v-for 循环渲染的每一条滚动文字,以实现过渡效果。文字内容通过 items 数组管理,可以根据需要自定义内容。脚本部分 (<script>):
data 包含了 items 数组,存储滚动的文字内容,和 currentIndex 记录当前显示的文字索引。mounted 钩子中调用 startScroll 方法,开始滚动文字。样式部分 (<style>):
.scrolling-container 使用 animation 属性来定义文字从下向上滚动的动画效果 (scroll-up)。@keyframes scroll-up 定义了滚动的动画细节,从 0% 到 100% 的 transform: translateY() 实现了文字的垂直滚动效果。使用 transition-group 和相应的过渡类名 .scroll-enter-active、.scroll-leave-active 实现了文字切换时的动画效果。使用方式:在你的父组件中引入 ScrollingText 组件,并在需要的地方使用它:
<template> <div> <!-- 其他内容 --> <scrolling-text></scrolling-text> <!-- 其他内容 --> </div> </template> <script> import ScrollingText from './ScrollingText.vue'; export default { components: { ScrollingText, }, // 其他代码 }; </script> <style scoped> /* 其他样式 */ </style>
这样配置后,ScrollingText 组件将会在父组件中按照定义的样式和动画效果显示滚动的文字内容,每隔一段时间自动切换显示。
网友回复