Skip to content

Marquee ​

跑马灯组件,用于滚动展示一段单行文本。仅当文本内容宽度大于等于跑马灯组件宽度时滚动,当文本内容宽度小于跑马灯组件宽度时不滚动。

效果 ​

子组件 ​

不支持。

参数 ​

start ​

控制跑马灯是否进入播放状态

step ​

滚动动画文本滚动步长

loop ​

number

-1 就是无限循环

是否循环播放

fromStart ​

boolean

true 设置文本从头开始滚动或反向滚动

false 设置文本从尾部开始滚动或反向滚动

src ​

需要滚动的文本

属性 ​

fontColor ​

文字颜色

fontSize ​

文字大小

fontWeight ​

文字粗细

allowScale ​

设置是否允许文本缩放。

marqueeUpdateStrategy ​

设置跑马灯更新策略。

事件 ​

onStart ​

当滚动的文本内容变化或者开始滚动时触发回调。

onBounce ​

完成一次滚动时触发,若循环次数不为 1,则该事件会多次触发。

onFinish ​

滚动全部循环次数完成时触发回调。

示例 ​

js

@Entry
@Component
struct Index9 {
  @State start: boolean = false;
  @State src: string = 'Running Marquee';
  private fromStart: boolean = true;
  private step: number = 10;
  private loop: number = -1;
  controller: TextClockController = new TextClockController();
  build() {
    Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
      Marquee({
        start: this.start,
        step: this.step,
        loop: this.loop,
        fromStart: this.fromStart,
        src: this.src
      })
        .marqueeUpdateStrategy(MarqueeUpdateStrategy.PRESERVE_POSITION)
        .width('300vp')
        .height('80vp')
        .fontColor('#FFFFFF')
        .fontSize('48fp')
        .fontWeight(700)
        .backgroundColor('#182431')
        .margin({ bottom: '40vp' })
        .onStart(() => {
          console.info('Succeeded in completing the onStart callback of marquee animation');
        })
        .onBounce(() => {
          console.info('Succeeded in completing the onBounce callback of marquee animation');
        })
        .onFinish(() => {
          console.info('Succeeded in completing the onFinish callback of marquee animation');
        })
      Button('Start')
        .onClick(() => {
          this.start = !this.start
        })
        .width('120vp')
        .height('40vp')
        .fontSize('16fp')
        .fontWeight(500)
        .backgroundColor('#007DFF')
    }
    .width('100%')
    .height('100%')
  }
}