1e41f4b71Sopenharmony_ci# <marquee> Development 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ci 4e41f4b71Sopenharmony_ciThe **<marquee>** component displays single-line scrolling text. For details, see [marquee](../reference/apis-arkui/arkui-js/js-components-basic-marquee.md). 5e41f4b71Sopenharmony_ci 6e41f4b71Sopenharmony_ci 7e41f4b71Sopenharmony_ci## Creating a <marquee> Component 8e41f4b71Sopenharmony_ci 9e41f4b71Sopenharmony_ciCreate a **<marquee>** component in the .hml file under **pages/index**. 10e41f4b71Sopenharmony_ci 11e41f4b71Sopenharmony_ci 12e41f4b71Sopenharmony_ci```html 13e41f4b71Sopenharmony_ci<!-- xxx.hml --> 14e41f4b71Sopenharmony_ci<div class="container"> 15e41f4b71Sopenharmony_ci <marquee style="width: 100%;height: 80px; color: #ffffff; background-color: #0820ef;padding-left: 200px;">It's a racing lamp.</marquee> 16e41f4b71Sopenharmony_ci</div> 17e41f4b71Sopenharmony_ci``` 18e41f4b71Sopenharmony_ci 19e41f4b71Sopenharmony_ci 20e41f4b71Sopenharmony_ci```css 21e41f4b71Sopenharmony_ci/* xxx.css */ 22e41f4b71Sopenharmony_ci.container { 23e41f4b71Sopenharmony_ci width: 100%; 24e41f4b71Sopenharmony_ci height: 100%; 25e41f4b71Sopenharmony_ci flex-direction: column; 26e41f4b71Sopenharmony_ci justify-content: center; 27e41f4b71Sopenharmony_ci align-items: center; 28e41f4b71Sopenharmony_ci background-color: #F1F3F5; 29e41f4b71Sopenharmony_ci} 30e41f4b71Sopenharmony_ci``` 31e41f4b71Sopenharmony_ci 32e41f4b71Sopenharmony_ci 33e41f4b71Sopenharmony_ci 34e41f4b71Sopenharmony_ci 35e41f4b71Sopenharmony_ci## Setting Attributes and Styles 36e41f4b71Sopenharmony_ci 37e41f4b71Sopenharmony_ciSet the **color** and **font-weight** attributes to define the color, font weight, and border style of marquee text. 38e41f4b71Sopenharmony_ci 39e41f4b71Sopenharmony_ci 40e41f4b71Sopenharmony_ci```html 41e41f4b71Sopenharmony_ci<!-- xxx.hml --> 42e41f4b71Sopenharmony_ci<div class="container"> 43e41f4b71Sopenharmony_ci <marquee class="custommarquee">It's a racing lamp.</marquee> 44e41f4b71Sopenharmony_ci</div> 45e41f4b71Sopenharmony_ci``` 46e41f4b71Sopenharmony_ci 47e41f4b71Sopenharmony_ci 48e41f4b71Sopenharmony_ci```css 49e41f4b71Sopenharmony_ci/* xxx.css */ 50e41f4b71Sopenharmony_ci.container { 51e41f4b71Sopenharmony_ci width: 100%; 52e41f4b71Sopenharmony_ci height: 100%; 53e41f4b71Sopenharmony_ci flex-direction: column; 54e41f4b71Sopenharmony_ci justify-content: center; 55e41f4b71Sopenharmony_ci align-items: center; 56e41f4b71Sopenharmony_ci background-color: #F1F3F5; 57e41f4b71Sopenharmony_ci} 58e41f4b71Sopenharmony_ci.custommarquee { 59e41f4b71Sopenharmony_ci width: 100%; 60e41f4b71Sopenharmony_ci height: 80px; 61e41f4b71Sopenharmony_ci padding: 10px; 62e41f4b71Sopenharmony_ci margin: 20px; 63e41f4b71Sopenharmony_ci border: 4px solid #6712f1; 64e41f4b71Sopenharmony_ci border-radius: 20px; 65e41f4b71Sopenharmony_ci font-size: 40px; 66e41f4b71Sopenharmony_ci color: #ffffff; font-weight: bolder; 67e41f4b71Sopenharmony_ci font-family: serif; 68e41f4b71Sopenharmony_ci background-color: #1567f3; 69e41f4b71Sopenharmony_ci} 70e41f4b71Sopenharmony_ci``` 71e41f4b71Sopenharmony_ci 72e41f4b71Sopenharmony_ci 73e41f4b71Sopenharmony_ci 74e41f4b71Sopenharmony_ciSet the **scrollamount**, **loop**, and **direction** attributes to define the maximum scroll length, number of scrolling times, and text scrolling direction. 75e41f4b71Sopenharmony_ci 76e41f4b71Sopenharmony_ci 77e41f4b71Sopenharmony_ci```html 78e41f4b71Sopenharmony_ci<!-- xxx.hml --> 79e41f4b71Sopenharmony_ci<div class="tutorial-page"> 80e41f4b71Sopenharmony_ci <div class="mymarquee"> 81e41f4b71Sopenharmony_ci <marquee loop="{{loopval}}" scrollamount="{{scroll}}" direction="{{isleft}}" class="marqueetext" id="testmarquee" onclick="makestart"> 82e41f4b71Sopenharmony_ci Life is a journey, not the destination. 83e41f4b71Sopenharmony_ci </marquee> 84e41f4b71Sopenharmony_ci </div> 85e41f4b71Sopenharmony_ci <div style="width: 600px;height: 150px;flex-direction: row;justify-content: space-around;"> 86e41f4b71Sopenharmony_ci <button onclick="setleft" value="left"></button> 87e41f4b71Sopenharmony_ci <button onclick="setright" value="right"></button> 88e41f4b71Sopenharmony_ci </div> 89e41f4b71Sopenharmony_ci</div> 90e41f4b71Sopenharmony_ci``` 91e41f4b71Sopenharmony_ci 92e41f4b71Sopenharmony_ci 93e41f4b71Sopenharmony_ci```css 94e41f4b71Sopenharmony_ci/* xxx.css */ 95e41f4b71Sopenharmony_ci.tutorial-page { 96e41f4b71Sopenharmony_ci width: 750px; 97e41f4b71Sopenharmony_ci height: 100%; 98e41f4b71Sopenharmony_ci flex-direction: column; 99e41f4b71Sopenharmony_ci align-items: center; 100e41f4b71Sopenharmony_ci justify-content: center; 101e41f4b71Sopenharmony_ci background-color: #F1F3F5; 102e41f4b71Sopenharmony_ci} 103e41f4b71Sopenharmony_ci.marqueetext { 104e41f4b71Sopenharmony_ci color: #ffffff; 105e41f4b71Sopenharmony_ci font-family: serif; 106e41f4b71Sopenharmony_ci font-size: 37px; 107e41f4b71Sopenharmony_ci} 108e41f4b71Sopenharmony_ci.mymarquee { 109e41f4b71Sopenharmony_ci margin-top: 20px; 110e41f4b71Sopenharmony_ci width:100%; 111e41f4b71Sopenharmony_ci height: 100px; 112e41f4b71Sopenharmony_ci margin-left: 50px; 113e41f4b71Sopenharmony_ci margin-right: 50px; 114e41f4b71Sopenharmony_ci border: 1px solid #6712f1; 115e41f4b71Sopenharmony_ci background-color: #1567f3; 116e41f4b71Sopenharmony_ci border-radius: 15px; 117e41f4b71Sopenharmony_ci align-items: center; 118e41f4b71Sopenharmony_ci} 119e41f4b71Sopenharmony_cibutton{ 120e41f4b71Sopenharmony_ci width: 200px; 121e41f4b71Sopenharmony_ci height: 80px; 122e41f4b71Sopenharmony_ci margin-top: 100px; 123e41f4b71Sopenharmony_ci} 124e41f4b71Sopenharmony_ci``` 125e41f4b71Sopenharmony_ci 126e41f4b71Sopenharmony_ci 127e41f4b71Sopenharmony_ci```js 128e41f4b71Sopenharmony_ci// xxx.js 129e41f4b71Sopenharmony_ciexport default { 130e41f4b71Sopenharmony_ci private: { 131e41f4b71Sopenharmony_ci loopval: -1, 132e41f4b71Sopenharmony_ci scroll: 10, 133e41f4b71Sopenharmony_ci isleft: "left", 134e41f4b71Sopenharmony_ci }, 135e41f4b71Sopenharmony_ci onInit(){ 136e41f4b71Sopenharmony_ci }, 137e41f4b71Sopenharmony_ci setleft(e) { 138e41f4b71Sopenharmony_ci this.isleft = "left" 139e41f4b71Sopenharmony_ci }, 140e41f4b71Sopenharmony_ci setright(e) { 141e41f4b71Sopenharmony_ci this.isleft = "right" 142e41f4b71Sopenharmony_ci }, 143e41f4b71Sopenharmony_ci makestart(e) { 144e41f4b71Sopenharmony_ci this.$element('testmarquee').start() 145e41f4b71Sopenharmony_ci } 146e41f4b71Sopenharmony_ci} 147e41f4b71Sopenharmony_ci``` 148e41f4b71Sopenharmony_ci 149e41f4b71Sopenharmony_ci> **NOTE** 150e41f4b71Sopenharmony_ci> 151e41f4b71Sopenharmony_ci> When the value of **loop** is less than or equal to 0, the marquee scrolls continuously. If **loop** is not set, the default value **-1** is used. 152e41f4b71Sopenharmony_ci 153e41f4b71Sopenharmony_ci 154e41f4b71Sopenharmony_ci 155e41f4b71Sopenharmony_ci 156e41f4b71Sopenharmony_ci## Example Scenario 157e41f4b71Sopenharmony_ci 158e41f4b71Sopenharmony_ciIn this example, you can control the scrolling of marquee text. 159e41f4b71Sopenharmony_ci 160e41f4b71Sopenharmony_ciSet **loop** to **1**. When scrolling ends, trigger a **finish** event to increase the number of scrolling times by 1 and change the font color to a random color. Then, call the **start** method to start scrolling again. 161e41f4b71Sopenharmony_ci 162e41f4b71Sopenharmony_ci 163e41f4b71Sopenharmony_ci```html 164e41f4b71Sopenharmony_ci<!-- xxx.hml --> 165e41f4b71Sopenharmony_ci<div class="tutorial-page"> 166e41f4b71Sopenharmony_ci <div class="mymarquee"> 167e41f4b71Sopenharmony_ci <marquee style="color: {{color1}}" loop="{{loopval}}" scrollamount="{{scroll}}" direction="{{isleft}}" class="marqueetext" 168e41f4b71Sopenharmony_ci id="testmarquee" onfinish="setfinish"> 169e41f4b71Sopenharmony_ci Life is a journey, not the destination. 170e41f4b71Sopenharmony_ci </marquee> 171e41f4b71Sopenharmony_ci </div> 172e41f4b71Sopenharmony_ci <div style="width: 600px;height: 150px;flex-direction: row;justify-content: space-around;"> 173e41f4b71Sopenharmony_ci <button onclick="makestart" value="start"></button> 174e41f4b71Sopenharmony_ci <button onclick="makestop" value="stop"></button> 175e41f4b71Sopenharmony_ci </div> 176e41f4b71Sopenharmony_ci</div> 177e41f4b71Sopenharmony_ci``` 178e41f4b71Sopenharmony_ci 179e41f4b71Sopenharmony_ci 180e41f4b71Sopenharmony_ci```css 181e41f4b71Sopenharmony_ci/* xxx.css */ 182e41f4b71Sopenharmony_ci.tutorial-page { 183e41f4b71Sopenharmony_ci width: 750px; 184e41f4b71Sopenharmony_ci height: 100%; 185e41f4b71Sopenharmony_ci flex-direction: column; 186e41f4b71Sopenharmony_ci align-items: center; 187e41f4b71Sopenharmony_ci justify-content: center; 188e41f4b71Sopenharmony_ci} 189e41f4b71Sopenharmony_ci.marqueetext { 190e41f4b71Sopenharmony_ci font-size: 37px; 191e41f4b71Sopenharmony_ci} 192e41f4b71Sopenharmony_ci.mymarquee { 193e41f4b71Sopenharmony_ci margin-top: 20px; 194e41f4b71Sopenharmony_ci width:100%; 195e41f4b71Sopenharmony_ci height: 100px; 196e41f4b71Sopenharmony_ci margin-left: 50px; 197e41f4b71Sopenharmony_ci margin-right: 50px; 198e41f4b71Sopenharmony_ci border: 1px solid #dc0f27; 199e41f4b71Sopenharmony_ci border-radius: 15px; 200e41f4b71Sopenharmony_ci align-items: center; 201e41f4b71Sopenharmony_ci} 202e41f4b71Sopenharmony_cibutton{ 203e41f4b71Sopenharmony_ci width: 200px; 204e41f4b71Sopenharmony_ci height: 80px; 205e41f4b71Sopenharmony_ci margin-top: 100px; 206e41f4b71Sopenharmony_ci} 207e41f4b71Sopenharmony_ci``` 208e41f4b71Sopenharmony_ci 209e41f4b71Sopenharmony_ci 210e41f4b71Sopenharmony_ci```js 211e41f4b71Sopenharmony_ci// xxx.js 212e41f4b71Sopenharmony_ciexport default { 213e41f4b71Sopenharmony_ci private: { 214e41f4b71Sopenharmony_ci loopval: 1, 215e41f4b71Sopenharmony_ci scroll: 8, 216e41f4b71Sopenharmony_ci color1: 'red' 217e41f4b71Sopenharmony_ci }, 218e41f4b71Sopenharmony_ci onInit(){ 219e41f4b71Sopenharmony_ci }, 220e41f4b71Sopenharmony_ci setfinish(e) { 221e41f4b71Sopenharmony_ci this.loopval= this.loopval + 1, 222e41f4b71Sopenharmony_ci this.r = Math.floor(Math.random()*255), 223e41f4b71Sopenharmony_ci this.g = Math.floor(Math.random()*255), 224e41f4b71Sopenharmony_ci this.b = Math.floor(Math.random()*255), 225e41f4b71Sopenharmony_ci this.color1 = 'rgba('+ this.r +','+ this.g +','+ this.b +',0.8)', 226e41f4b71Sopenharmony_ci this.$element('testmarquee').start(), 227e41f4b71Sopenharmony_ci this.loopval= this.loopval - 1 228e41f4b71Sopenharmony_ci }, 229e41f4b71Sopenharmony_ci makestart(e) { 230e41f4b71Sopenharmony_ci this.$element('testmarquee').start() 231e41f4b71Sopenharmony_ci }, 232e41f4b71Sopenharmony_ci makestop(e) { 233e41f4b71Sopenharmony_ci this.$element('testmarquee').stop() 234e41f4b71Sopenharmony_ci } 235e41f4b71Sopenharmony_ci} 236e41f4b71Sopenharmony_ci``` 237e41f4b71Sopenharmony_ci 238e41f4b71Sopenharmony_ci 239