1e41f4b71Sopenharmony_ci# \<rating> Development 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ci 4e41f4b71Sopenharmony_ciThe **\<rating>** component provides a rating bar used for reviews and ratings. For details, see [rating](../reference/apis-arkui/arkui-js/js-components-basic-rating.md). 5e41f4b71Sopenharmony_ci 6e41f4b71Sopenharmony_ci 7e41f4b71Sopenharmony_ci## Creating a \<rating> Component 8e41f4b71Sopenharmony_ci 9e41f4b71Sopenharmony_ciCreate a **\<rating>** 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 <rating></rating> 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 display: flex; 26e41f4b71Sopenharmony_ci justify-content: center; 27e41f4b71Sopenharmony_ci align-items: center; 28e41f4b71Sopenharmony_ci background-color: #F1F3F5; 29e41f4b71Sopenharmony_ci} 30e41f4b71Sopenharmony_cirating { 31e41f4b71Sopenharmony_ci width: 80%; 32e41f4b71Sopenharmony_ci height: 150px; 33e41f4b71Sopenharmony_ci} 34e41f4b71Sopenharmony_ci``` 35e41f4b71Sopenharmony_ci 36e41f4b71Sopenharmony_ci 37e41f4b71Sopenharmony_ci 38e41f4b71Sopenharmony_ci 39e41f4b71Sopenharmony_ci## Setting the Rating Level 40e41f4b71Sopenharmony_ci 41e41f4b71Sopenharmony_ciUse the **\<rating>** component to set the number of stars in a rating bar and the current rating using the **numstars** and **rating** attributes, respectively. 42e41f4b71Sopenharmony_ci 43e41f4b71Sopenharmony_ci 44e41f4b71Sopenharmony_ci```html 45e41f4b71Sopenharmony_ci<!-- xxx.hml --> 46e41f4b71Sopenharmony_ci<div class="container"> 47e41f4b71Sopenharmony_ci <rating numstars="6" rating="5"> 48e41f4b71Sopenharmony_ci </rating> 49e41f4b71Sopenharmony_ci</div> 50e41f4b71Sopenharmony_ci``` 51e41f4b71Sopenharmony_ci 52e41f4b71Sopenharmony_ci 53e41f4b71Sopenharmony_ci```css 54e41f4b71Sopenharmony_ci/* xxx.css */ 55e41f4b71Sopenharmony_ci.container { 56e41f4b71Sopenharmony_ci width: 100%; 57e41f4b71Sopenharmony_ci height: 100%; 58e41f4b71Sopenharmony_ci display: flex; 59e41f4b71Sopenharmony_ci justify-content: center; 60e41f4b71Sopenharmony_ci align-items: center; 61e41f4b71Sopenharmony_ci background-color: #F1F3F5; 62e41f4b71Sopenharmony_ci} 63e41f4b71Sopenharmony_cirating { 64e41f4b71Sopenharmony_ci width: 80%; 65e41f4b71Sopenharmony_ci height: 150px; 66e41f4b71Sopenharmony_ci} 67e41f4b71Sopenharmony_ci``` 68e41f4b71Sopenharmony_ci 69e41f4b71Sopenharmony_ci 70e41f4b71Sopenharmony_ci 71e41f4b71Sopenharmony_ci 72e41f4b71Sopenharmony_ci## Setting the Rating Style 73e41f4b71Sopenharmony_ci 74e41f4b71Sopenharmony_ciUse the **\<rating>** component to set the background images when a rating star is unselected, selected, and partially selected using the **star-background**, **star-foreground**, and **star-secondary** attributes, respectively. 75e41f4b71Sopenharmony_ci 76e41f4b71Sopenharmony_ci 77e41f4b71Sopenharmony_ci```html 78e41f4b71Sopenharmony_ci<!-- xxx.hml --> 79e41f4b71Sopenharmony_ci<div class="container"> 80e41f4b71Sopenharmony_ci <div style="width: 500px;height: 500px;align-items: center;justify-content: center;flex-direction: column;;"> 81e41f4b71Sopenharmony_ci <rating numstars="5" rating="1" class="myrating" style="width: {{ratewidth}}; height:{{rateheight}}; 82e41f4b71Sopenharmony_ci star-background: {{backstar}}; star-secondary: {{secstar}};star-foreground: {{forestar}};rtl-flip: true;"> 83e41f4b71Sopenharmony_ci </rating> 84e41f4b71Sopenharmony_ci </div> 85e41f4b71Sopenharmony_ci</div> 86e41f4b71Sopenharmony_ci``` 87e41f4b71Sopenharmony_ci 88e41f4b71Sopenharmony_ci 89e41f4b71Sopenharmony_ci```css 90e41f4b71Sopenharmony_ci/* xxx.css */ 91e41f4b71Sopenharmony_ci.container { 92e41f4b71Sopenharmony_ci width: 100%; 93e41f4b71Sopenharmony_ci height: 100%; 94e41f4b71Sopenharmony_ci flex-direction: column; 95e41f4b71Sopenharmony_ci align-items: center; 96e41f4b71Sopenharmony_ci justify-content: center; 97e41f4b71Sopenharmony_ci background-color: #F1F3F5; 98e41f4b71Sopenharmony_ci} 99e41f4b71Sopenharmony_ci``` 100e41f4b71Sopenharmony_ci 101e41f4b71Sopenharmony_ci 102e41f4b71Sopenharmony_ci```js 103e41f4b71Sopenharmony_ci// index.js 104e41f4b71Sopenharmony_ciexport default { 105e41f4b71Sopenharmony_ci data: { 106e41f4b71Sopenharmony_ci backstar: 'common/love.png', 107e41f4b71Sopenharmony_ci secstar: 'common/love.png', 108e41f4b71Sopenharmony_ci forestar: 'common/love1.png', 109e41f4b71Sopenharmony_ci ratewidth: '400px', 110e41f4b71Sopenharmony_ci rateheight: '150px' 111e41f4b71Sopenharmony_ci }, 112e41f4b71Sopenharmony_ci onInit(){ 113e41f4b71Sopenharmony_ci } 114e41f4b71Sopenharmony_ci} 115e41f4b71Sopenharmony_ci``` 116e41f4b71Sopenharmony_ci 117e41f4b71Sopenharmony_ci 118e41f4b71Sopenharmony_ci 119e41f4b71Sopenharmony_ci> **NOTE** 120e41f4b71Sopenharmony_ci> - You must set **star-background**, **star-secondary**, and **star-foreground**. Otherwise, the grey rating star applies, indicating that the image source is incorrectly set. 121e41f4b71Sopenharmony_ci> 122e41f4b71Sopenharmony_ci> - The **star-background**, **star-secondary**, and **star-foreground** attributes support only PNG and JPG images in the local path. 123e41f4b71Sopenharmony_ci 124e41f4b71Sopenharmony_ci 125e41f4b71Sopenharmony_ci## Binding Events 126e41f4b71Sopenharmony_ci 127e41f4b71Sopenharmony_ciAdd the **change** event to the **\<rating>** component to display the current rating. 128e41f4b71Sopenharmony_ci 129e41f4b71Sopenharmony_ci 130e41f4b71Sopenharmony_ci```html 131e41f4b71Sopenharmony_ci<!-- xxx.hml --> 132e41f4b71Sopenharmony_ci<div class="container"> 133e41f4b71Sopenharmony_ci <rating numstars="5" rating="0" onchange="showrating"></rating> 134e41f4b71Sopenharmony_ci</div> 135e41f4b71Sopenharmony_ci``` 136e41f4b71Sopenharmony_ci 137e41f4b71Sopenharmony_ci 138e41f4b71Sopenharmony_ci```css 139e41f4b71Sopenharmony_ci/* xxx.css */ 140e41f4b71Sopenharmony_ci.container { 141e41f4b71Sopenharmony_ci width: 100%; 142e41f4b71Sopenharmony_ci height: 100%; 143e41f4b71Sopenharmony_ci display: flex; 144e41f4b71Sopenharmony_ci justify-content: center; 145e41f4b71Sopenharmony_ci align-items: center; 146e41f4b71Sopenharmony_ci background-color: #F1F3F5; 147e41f4b71Sopenharmony_ci} 148e41f4b71Sopenharmony_cirating { 149e41f4b71Sopenharmony_ci width: 80%; 150e41f4b71Sopenharmony_ci height: 150px; 151e41f4b71Sopenharmony_ci} 152e41f4b71Sopenharmony_ci``` 153e41f4b71Sopenharmony_ci 154e41f4b71Sopenharmony_ci 155e41f4b71Sopenharmony_ci```js 156e41f4b71Sopenharmony_ci// xxx.js 157e41f4b71Sopenharmony_ciimport promptAction from '@ohos.promptAction'; 158e41f4b71Sopenharmony_ciexport default { 159e41f4b71Sopenharmony_ci showrating(e) { 160e41f4b71Sopenharmony_ci promptAction.showToast({ 161e41f4b71Sopenharmony_ci message:'Rating' + e.rating 162e41f4b71Sopenharmony_ci }) 163e41f4b71Sopenharmony_ci } 164e41f4b71Sopenharmony_ci} 165e41f4b71Sopenharmony_ci``` 166e41f4b71Sopenharmony_ci 167e41f4b71Sopenharmony_ci 168e41f4b71Sopenharmony_ci 169e41f4b71Sopenharmony_ci 170e41f4b71Sopenharmony_ci## Example 171e41f4b71Sopenharmony_ci 172e41f4b71Sopenharmony_ciChange the switch status to toggle between the star background images and drag the slider to adjust the rating values. 173e41f4b71Sopenharmony_ci 174e41f4b71Sopenharmony_ci 175e41f4b71Sopenharmony_ci```html 176e41f4b71Sopenharmony_ci<!-- xxx.hml --> 177e41f4b71Sopenharmony_ci<div style="width: 100%;height:100%;flex-direction: column;align-items: center;background-color: #F1F3F5;"> 178e41f4b71Sopenharmony_ci <div style="width: 500px;height: 500px;align-items: center;justify-content: center;flex-direction: column;;"> 179e41f4b71Sopenharmony_ci <rating numstars="{{stars}}" rating="{{rate}}" stepsize="{{step}}" onchange="showrating" class="myrating" 180e41f4b71Sopenharmony_ci style="width: {{ratewidth}};height:{{rateheight}};star-background: {{backstar}};star-secondary: {{secstar}}; 181e41f4b71Sopenharmony_ci star-foreground: {{forestar}};rtl-flip: true;"></rating> 182e41f4b71Sopenharmony_ci </div> 183e41f4b71Sopenharmony_ci <div style="flex-direction: column;width: 80%;align-items: center;"> 184e41f4b71Sopenharmony_ci <div style="width: 100%;height: 100px;align-items: center;justify-content: space-around;"> 185e41f4b71Sopenharmony_ci <text&>Use custom image</text&> 186e41f4b71Sopenharmony_ci <switch checked="false" showtext="true" onchange="setstar"></switch> 187e41f4b71Sopenharmony_ci </div> 188e41f4b71Sopenharmony_ci <div style="width: 100%;height:120px;margin-top: 50px;margin-bottom: 50px;flex-direction: column;align-items: center; 189e41f4b71Sopenharmony_ci justify-content: space-around;"> 190e41f4b71Sopenharmony_ci <text>numstars {{stars}}</text> 191e41f4b71Sopenharmony_ci <slider id="sli1" min="0" max="10" value="5" step="1" onchange="setnumstars"></slider> 192e41f4b71Sopenharmony_ci </div> 193e41f4b71Sopenharmony_ci <div style="width: 100%;height:120px;flex-direction: column;align-items: center;justify-content: space-around;"> 194e41f4b71Sopenharmony_ci <text>rating {{rate}}</text> 195e41f4b71Sopenharmony_ci <slider id="sli2" min="0" max="10" value="{{rate}}" step="0.5" onchange="setrating"></slider> 196e41f4b71Sopenharmony_ci </div> 197e41f4b71Sopenharmony_ci </div> 198e41f4b71Sopenharmony_ci</div> 199e41f4b71Sopenharmony_ci``` 200e41f4b71Sopenharmony_ci 201e41f4b71Sopenharmony_ci 202e41f4b71Sopenharmony_ci```css 203e41f4b71Sopenharmony_ci/* xxx.css */ 204e41f4b71Sopenharmony_ci.myrating:active { 205e41f4b71Sopenharmony_ci width: 500px; 206e41f4b71Sopenharmony_ci height: 100px; 207e41f4b71Sopenharmony_ci} 208e41f4b71Sopenharmony_ciswitch{ 209e41f4b71Sopenharmony_ci font-size: 40px; 210e41f4b71Sopenharmony_ci} 211e41f4b71Sopenharmony_ci``` 212e41f4b71Sopenharmony_ci 213e41f4b71Sopenharmony_ci 214e41f4b71Sopenharmony_ci```js 215e41f4b71Sopenharmony_ci// xxx.js 216e41f4b71Sopenharmony_ciimport promptAction from '@ohos.promptAction'; 217e41f4b71Sopenharmony_ciexport default { 218e41f4b71Sopenharmony_ci data: { 219e41f4b71Sopenharmony_ci backstar: '', 220e41f4b71Sopenharmony_ci secstar: '', 221e41f4b71Sopenharmony_ci forestar: '', 222e41f4b71Sopenharmony_ci stars: 5, 223e41f4b71Sopenharmony_ci ratewidth: '300px', 224e41f4b71Sopenharmony_ci rateheight: '60px', 225e41f4b71Sopenharmony_ci step: 0.5, 226e41f4b71Sopenharmony_ci rate: 0 227e41f4b71Sopenharmony_ci }, 228e41f4b71Sopenharmony_ci onInit(){ 229e41f4b71Sopenharmony_ci }, 230e41f4b71Sopenharmony_ci setstar(e) { 231e41f4b71Sopenharmony_ci if (e.checked == true) { 232e41f4b71Sopenharmony_ci this.backstar = '/common/love.PNG' 233e41f4b71Sopenharmony_ci this.secstar = 'common/love.png' 234e41f4b71Sopenharmony_ci this.forestar = 'common/love1.png' 235e41f4b71Sopenharmony_ci } else { 236e41f4b71Sopenharmony_ci this.backstar = '' 237e41f4b71Sopenharmony_ci this.secstar = '' 238e41f4b71Sopenharmony_ci this.forestar = '' 239e41f4b71Sopenharmony_ci } 240e41f4b71Sopenharmony_ci }, 241e41f4b71Sopenharmony_ci setnumstars(e) { 242e41f4b71Sopenharmony_ci this.stars = e.progress 243e41f4b71Sopenharmony_ci this.ratewidth = 60 * parseInt(this.stars) + 'px' 244e41f4b71Sopenharmony_ci }, 245e41f4b71Sopenharmony_ci setstep(e) { 246e41f4b71Sopenharmony_ci this.step = e.progress 247e41f4b71Sopenharmony_ci }, 248e41f4b71Sopenharmony_ci setrating(e){ 249e41f4b71Sopenharmony_ci this.rate = e.progress 250e41f4b71Sopenharmony_ci }, 251e41f4b71Sopenharmony_ci showrating(e) { 252e41f4b71Sopenharmony_ci this.rate = e.rating 253e41f4b71Sopenharmony_ci promptAction.showToast({ 254e41f4b71Sopenharmony_ci message:'Rating' + e.rating 255e41f4b71Sopenharmony_ci }) 256e41f4b71Sopenharmony_ci } 257e41f4b71Sopenharmony_ci} 258e41f4b71Sopenharmony_ci``` 259e41f4b71Sopenharmony_ci 260e41f4b71Sopenharmony_ci 261