基于 Vue 实现的循环滚动字幕的示例.docx
需积分: 0 36 浏览量
更新于2023-05-08
收藏 11KB DOCX 举报
Vue.js 是一款轻量级的前端框架,它以其响应式的数据绑定和组件化开发能力而受到开发者们的广泛欢迎。在这个基于 Vue 实现的循环滚动字幕示例中,我们将深入理解如何利用 Vue 的特性来创建动态的、循环滚动的字幕效果。
HTML 结构是这样的:
```html
<div id="app">
<div class="marquee-container">
<div class="marquee-text" v-for="(item, index) in items" :key="index">
{{ item }}
</div>
</div>
</div>
```
这里,`<div id="app">` 是 Vue 应用的挂载点,`v-for` 指令用于遍历 `items` 数组,生成多个包含滚动字幕的 `.marquee-text` 元素。`:key` 属性用于指定每个元素的唯一标识,这对 Vue 的虚拟 DOM 更新非常重要。
CSS 部分定义了滚动效果:
```css
.marquee-container {
overflow: hidden;
height: 30px;
}
.marquee-text {
white-space: nowrap;
display: inline-block;
padding-right: 100%;
animation: marquee 10s linear infinite;
}
@keyframes marquee {
0% {
transform: translateX(0);
}
100% {
transform: translateX(-100%);
}
}
```
`.marquee-container` 设置了溢出隐藏,以隐藏超出容器的部分。`.marquee-text` 使用了 `white-space: nowrap` 来防止文本换行,并通过 `padding-right: 100%` 和 `@keyframes` 定义的动画 `marquee` 实现文本的左右滚动效果。
JavaScript 部分使用 Vue 初始化应用:
```javascript
new Vue({
el: '#app',
data: {
items: [
'这是第一条滚动字幕',
'这是第二条滚动字幕',
'这是第三条滚动字幕',
'这是第四条滚动字幕'
]
},
created() {
this.items.push(this.items[0]);
},
mounted() {
const $container = $('.marquee-container');
$container.on('animationiteration', '.marquee-text', function() {
const $text = $(this);
const containerWidth = $container.width();
const textWidth = $text.outerWidth();
if (containerWidth >= textWidth) {
$text.appendTo($container);
}
});
}
});
```
在 `data` 对象中,定义了包含滚动字幕的 `items` 数组。在 `created` 生命周期钩子中,我们向数组末尾添加了第一个元素的副本,确保滚动到最后一项后能无缝衔接回第一条。在 `mounted` 钩子中,我们使用 jQuery 监听 `animationiteration` 事件,当文本元素滚动到底部时,将其移回容器的末尾,实现循环滚动。
这个示例展示了 Vue.js 如何与 CSS 和 JavaScript 配合,实现动态效果。值得注意的是,虽然示例中使用了 jQuery 进行事件监听和 DOM 操作,但在 Vue 中,通常推荐使用 Vue 提供的原生方法和指令,如 `v-on` 和计算属性等,以保持代码的 Vue 风格和提高性能。例如,可以使用 Vue 自定义指令或组件来替代 jQuery,以更优雅地实现相同的功能。
梦想是坚持
- 粉丝: 71
- 资源: 233
最新资源
- 基于SpringBoot+vue的社区医院管理系统.zip
- 锂电池SOC估计基于二阶RC模型的扩展卡尔曼滤波估算SOC 验证工况:HPPC 和 1C放电
- c#轻量级高并发物联网服务器接收程序源码(仅仅是接收硬件数据程序,没有web端,不是java,协议自己写,如果问及这些问题统统不回复 ),对接几万个设备没问题,数据库采用ef6+sqlite,可改e
- CityGPT: Empowering Urban Spatial Cognition of Large Language Models
- 平安夜祝福代码html 代码实现示例.docx
- java(二叉树的基本操作和部分二叉树相关的题)
- Spring Boot 整合 RabbitMQ(在Spring项目中使用RabbitMQ)
- 三菱Fx3U三轴定位控制程序,其中两轴为脉冲输出同步运行360度转盘,3轴为工作台丝杆 1.本程序结构清晰,有公共程序,原点回归,手动点动运行,手动微动运行 报警程序,参数初始化程序等 2.自动
- armv7l的树莓派可以用的onnxruntime版本
- 纸袋检测15-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- Yealink VC Desktop1.28.0.72, 免费,局域网,IP电话, SIP, VOIP, 视频通话,可与手机互通,手机上也安装 yealink
- 全自动棒料加工自动设备sw17全套技术开发资料100%好用.zip
- 用Jenkins 跑gitte仓库中的postman脚本 请求
- Instruction Pre-Training: Language Models are Supervised Multitask Learners
- 图片转PDF_QQ浏览器_20241226.pdf
- STM8驱动的MPU6050陀螺仪源程序