跑马灯(Marquee)是一种在有限空间内展示超出显示区域文本内容的常见 UI 组件。当文本过长无法完整显示时,它会自动进行水平滚动,广泛应用于消息通知、公告栏、票务信息和商品促销等场景。以下是针对不同技术栈的跑马灯组件实现方案:
1. HarmonyOS (鸿蒙) 原生方案
在鸿蒙开发中,跑马灯组件的使用非常便捷,主要分为基础组件和沉浸式场景:
- 基础 Marquee 组件:用于展示单行滚动文字。仅当文本内容宽度超过组件宽度时才会触发滚动,不超过时保持静止。支持通过
scrollamount(每次移动长度)、loop(滚动次数,-1为无限循环)和direction(滚动方向:left/right)等属性控制动画。同时提供start()和stop()方法,以及bounce、finish等事件回调。 - 沉浸式 LED 字幕场景:在演唱会应援或生日祝福等场景下,可通过
setWindowLayoutFullScreen接口实现全屏沉浸式展示,结合Marquee组件模拟跑马灯效果。若文本较短无法触发滚动,可通过在文本后拼接空格的方式扩展字符串长度,强制达到跑马灯效果。
2. Web 前端 / 数据大屏方案
- 数据可视化大屏 (DLV):在华为云等数据可视化大屏工具中,跑马灯组件支持高度自定义。除了基础的颜色、字号和字体粗细外,还支持配置“定速播放”或“按动画时间播放”,并可设置动画播放前后的停留时间。结合数据源,可实现文本内容的自动轮询更新。
- Ant Design (走马灯 Carousel):需要注意的是,Ant Design 中的
Carousel组件主要用于图片或卡片的轮播切换,支持自动切换、渐显效果和拖拽等,并非用于单行文本的无缝滚动。
3. 跨端 / 移动端 H5 方案
- uni-app 生态:在 uni-app 中,除了可以使用基础的 CSS3 动画自行封装外,开发者通常会借助 DCloud 插件市场中的第三方跑马灯插件。这些插件通常已经封装好了多端(H5、App、小程序)的兼容逻辑,支持自定义滚动速度、方向和循环次数。
- Vue / React 移动端:主流移动端 UI 库(如 Vant、NutUI)通常不直接内置传统的跑马灯组件,而是推荐开发者使用 CSS3 的
@keyframes动画配合transform: translateX()自行封装,这种方式性能更好,且能完美支持 GPU 硬件加速,避免滚动掉帧。