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![en-us_image_0000001227701031](figures/en-us_image_0000001227701031.gif)
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![en-us_image_0000001227422709](figures/en-us_image_0000001227422709.gif)
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![en-us_image_0000001178685854](figures/en-us_image_0000001178685854.gif)
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![en-us_image_0000001181823160](figures/en-us_image_0000001181823160.gif)
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![en-us_image_0000001224086459](figures/en-us_image_0000001224086459.gif)
261