Skip to content

Marquee 跑马灯

高性能、无缝滚动的跑马灯组件。基于 CSS 动画驱动,支持水平/垂直滚动、动态内容填充以及极致的交互体验。

基础用法

最简单的水平无限滚动。

🔥 瞬间灵感 1
🔥 瞬间灵感 2
🔥 瞬间灵感 3
🔥 瞬间灵感 4
🔥 瞬间灵感 5
🔥 瞬间灵感 6
🔥 瞬间灵感 7
🔥 瞬间灵感 8
🔥 瞬间灵感 9
🔥 瞬间灵感 10
基础无限滚动

垂直展示

通过设置 direction="vertical" 可以实现垂直方向的滚动。注意:垂直模式下通常需要给容器设定确定的高度。

公告消息 #1:系统将在今晚进行维护
公告消息 #2:系统将在今晚进行维护
公告消息 #3:系统将在今晚进行维护
公告消息 #4:系统将在今晚进行维护
公告消息 #5:系统将在今晚进行维护
垂直滚动

边缘渐变

开启 gradient 属性可以在滚动容器的两侧增加渐变遮罩,使边缘过渡更加柔和自然。你可以自定义颜色和宽度。

User 1
User 2
User 3
User 4
User 5
User 6
User 7
User 8
边缘渐变遮罩

交互与状态控制

支持悬停暂停、事件监听以及手动播放控制。通过 play 属性可以精确控制动画的启停,通过 cycle-complete 事件可以捕捉每一轮滚动的结束瞬间。

累计循环次数:0
交互实验项 1
交互实验项 2
交互实验项 3
交互实验项 4
交互实验项 5
交互控制

恒定速率 (Speed)

在内容长度不固定的业务场景中,使用 speed (px/s) 代替 duration 可以确保不同长度的内容拥有完全相同的滚动速度,避免视觉上的速度抖动。

短内容项 1
短内容项 2
短内容项 3
这是一段非常长长长长长长长长长长长内容项 1
这是一段非常长长长长长长长长长长长内容项 2
这是一段非常长长长长长长长长长长长内容项 3
这是一段非常长长长长长长长长长长长内容项 4
这是一段非常长长长长长长长长长长长内容项 5
这是一段非常长长长长长长长长长长长内容项 6
这是一段非常长长长长长长长长长长长内容项 7
这是一段非常长长长长长长长长长长长内容项 8
这是一段非常长长长长长长长长长长长内容项 9
这是一段非常长长长长长长长长长长长内容项 10
恒定速率演示

视口感知与循环延迟

通过 pause-on-hidden 可以在组件离开视口时自动停止动画节省性能。delayloop-delay 属性则可以为第一轮和每一轮循环之间提供优雅的停顿。

重要公告:第 1 条消息,每阶段将停顿 2 秒进行阅读
重要公告:第 2 条消息,每阶段将停顿 2 秒进行阅读
重要公告:第 3 条消息,每阶段将停顿 2 秒进行阅读
重要公告:第 4 条消息,每阶段将停顿 2 秒进行阅读
重要公告:第 5 条消息,每阶段将停顿 2 秒进行阅读
重要公告:第 6 条消息,每阶段将停顿 2 秒进行阅读
循环停顿示例

实战案例:股市行情

结合渐变和自定义样式打造专业级的数据展示。

AAPL189.43▲ +1.2%
TSLA238.45▼ -2.4%
NVDA495.22▲ +5.1%
MSFT374.07▲ +0.8%
AMZN145.20▲ +1.5%
GOOGL132.40▼ -0.3%
股市行情条

在 Nuxt 中使用

YH-UI 完美适配 Nuxt 3。你可以直接在 app.vue 或 any 页面中使用。

自动导入

如果你使用了 @yh-ui/nuxt 模块,YhMarquee 将会被自动按需加载并包含完整的样式。

Nuxt 3 SSR 适配演示
Nuxt 适配

API

Props

属性名说明类型默认值
direction滚动方向'horizontal' | 'vertical''horizontal'
duration滚动一轮所需的时长 (秒)number20
reverse是否反向滚动booleanfalse
pause-on-hover鼠标悬停时是否暂停booleantrue
pause-on-click鼠标点击时是否暂停booleanfalse
gap内容项之间的间距number | string0
gradient是否开启边缘渐变遮罩booleanfalse
gradient-color渐变遮罩颜色string'#ffffff'
gradient-width渐变遮罩展示宽度number | string'40px'
auto-fill内容不足时是否自动填充booleantrue
play是否播放动画booleantrue
loop循环次数 (0 为无限)number0
speed滚动速度 (像素/秒),设置后将失效 durationnumber0
delay首次启动动画前的延迟时间 (秒)number0
loop-delay每一轮循环结束后的停顿时间 (秒)number0
pause-on-hidden当组件离开视口时是否自动暂停动画booleantrue

Events

事件名说明回调参数
cycle-complete每次滚动循环完成时触发-

Slots

插槽名说明
default跑马灯滚动的内容

Expose

方法名说明类型
calculateClones手动触发克隆数量计算(在动态修改内容尺寸时很有用)() => Promise<void>
containerRef外部容器的 DOM 引用HTMLElement | null
contentRef内容容器的 DOM 引用HTMLElement | null

主题变量 (CSS Variables)

所有颜色变量已与全局主题系统对接,自动支持暗黑模式:

变量名默认值说明
--yh-marquee-gap0px内容项之间的间距
--yh-marquee-duration20s动画持续时长
--yh-marquee-iteration-countinfinite动画循环次数
--yh-marquee-directionnormal动画播放方向
--yh-marquee-play-staterunning动画播放状态
--yh-marquee-gradient-colorvar(--yh-bg-color)边际渐变颜色 (自动跟随主题背景色)
--yh-marquee-gradient-width40px边际渐变宽度
--yh-marquee-clone-count1内部计算的克隆倍数 (只读)

Released under the MIT License.