1e41f4b71Sopenharmony_ci# <qrcode> Development
2e41f4b71Sopenharmony_ci
3e41f4b71Sopenharmony_ci
4e41f4b71Sopenharmony_ciThe **<qrcode>** component is used to generate and display a QR code. For details, see [qrcode](../reference/apis-arkui/arkui-js/js-components-basic-qrcode.md).
5e41f4b71Sopenharmony_ci
6e41f4b71Sopenharmony_ci
7e41f4b71Sopenharmony_ci## Creating a <qrcode> Component
8e41f4b71Sopenharmony_ci
9e41f4b71Sopenharmony_ciCreate a **<qrcode>** 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  <qrcode value="Hello"></qrcode>
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  align-items: center;
27e41f4b71Sopenharmony_ci  justify-content: center;
28e41f4b71Sopenharmony_ci  background-color: #F1F3F5;
29e41f4b71Sopenharmony_ci}
30e41f4b71Sopenharmony_ci```
31e41f4b71Sopenharmony_ci
32e41f4b71Sopenharmony_ci![en-us_image_0000001275803133](figures/en-us_image_0000001275803133.png)
33e41f4b71Sopenharmony_ci
34e41f4b71Sopenharmony_ci> **NOTE**
35e41f4b71Sopenharmony_ci>
36e41f4b71Sopenharmony_ci> The **value** parameter must be set.
37e41f4b71Sopenharmony_ci
38e41f4b71Sopenharmony_ci
39e41f4b71Sopenharmony_ci## Setting the Component Type
40e41f4b71Sopenharmony_ci
41e41f4b71Sopenharmony_ciSet the **type** attribute to select the QR code type from rectangle and circle.
42e41f4b71Sopenharmony_ci
43e41f4b71Sopenharmony_ci
44e41f4b71Sopenharmony_ci```html
45e41f4b71Sopenharmony_ci<!-- xxx.hml-->
46e41f4b71Sopenharmony_ci<div class="container">
47e41f4b71Sopenharmony_ci  <select onchange="settype">
48e41f4b71Sopenharmony_ci    <option for="{{bcol_list}}" value="{{$item}}">{{$item}}</option>
49e41f4b71Sopenharmony_ci  </select>
50e41f4b71Sopenharmony_ci  <qrcode value="Hello" type="{{qr_type}}"></qrcode>
51e41f4b71Sopenharmony_ci</div>
52e41f4b71Sopenharmony_ci```
53e41f4b71Sopenharmony_ci
54e41f4b71Sopenharmony_ci
55e41f4b71Sopenharmony_ci```css
56e41f4b71Sopenharmony_ci/* xxx.css */
57e41f4b71Sopenharmony_ci.container {
58e41f4b71Sopenharmony_ci  width: 100%;
59e41f4b71Sopenharmony_ci  height: 100%;
60e41f4b71Sopenharmony_ci  flex-direction: column;
61e41f4b71Sopenharmony_ci  align-items: center;
62e41f4b71Sopenharmony_ci  justify-content: center;
63e41f4b71Sopenharmony_ci  background-color: #F1F3F5;
64e41f4b71Sopenharmony_ci}
65e41f4b71Sopenharmony_ciselect{
66e41f4b71Sopenharmony_ci  margin-top: 50px;
67e41f4b71Sopenharmony_ci  margin-bottom: 50px;
68e41f4b71Sopenharmony_ci}
69e41f4b71Sopenharmony_ci```
70e41f4b71Sopenharmony_ci
71e41f4b71Sopenharmony_ci
72e41f4b71Sopenharmony_ci```js
73e41f4b71Sopenharmony_ci// index.js
74e41f4b71Sopenharmony_ciexport default {
75e41f4b71Sopenharmony_ci  data: {
76e41f4b71Sopenharmony_ci    qr_type: 'rect',
77e41f4b71Sopenharmony_ci    bcol_list: ['rect','circle']
78e41f4b71Sopenharmony_ci  },
79e41f4b71Sopenharmony_ci  settype(e) {
80e41f4b71Sopenharmony_ci    this.qr_type = e.newValue 
81e41f4b71Sopenharmony_ci  },
82e41f4b71Sopenharmony_ci}
83e41f4b71Sopenharmony_ci```
84e41f4b71Sopenharmony_ci
85e41f4b71Sopenharmony_ci![en-us_image_0000001275922965](figures/en-us_image_0000001275922965.gif)
86e41f4b71Sopenharmony_ci
87e41f4b71Sopenharmony_ci
88e41f4b71Sopenharmony_ci## Setting Styles
89e41f4b71Sopenharmony_ci
90e41f4b71Sopenharmony_ciSet the **color** and **background-color** attributes to set the color and background color of a QR code.
91e41f4b71Sopenharmony_ci
92e41f4b71Sopenharmony_ci
93e41f4b71Sopenharmony_ci```html
94e41f4b71Sopenharmony_ci<!-- xxx.hml-->
95e41f4b71Sopenharmony_ci<div class="container">
96e41f4b71Sopenharmony_ci  <qrcode value="Hello" type="rect"></qrcode>
97e41f4b71Sopenharmony_ci</div>
98e41f4b71Sopenharmony_ci```
99e41f4b71Sopenharmony_ci
100e41f4b71Sopenharmony_ci
101e41f4b71Sopenharmony_ci```css
102e41f4b71Sopenharmony_ci/* xxx.css */
103e41f4b71Sopenharmony_ci.container {
104e41f4b71Sopenharmony_ci  width: 100%;
105e41f4b71Sopenharmony_ci  height: 100%;
106e41f4b71Sopenharmony_ci  flex-direction: column;
107e41f4b71Sopenharmony_ci  align-items: center;
108e41f4b71Sopenharmony_ci  justify-content: center;
109e41f4b71Sopenharmony_ci  background-color: #F1F3F5;
110e41f4b71Sopenharmony_ci}
111e41f4b71Sopenharmony_ciqrcode{
112e41f4b71Sopenharmony_ci  width: 300px;
113e41f4b71Sopenharmony_ci  height: 300px;
114e41f4b71Sopenharmony_ci color: blue;  background-color: #ffffff;
115e41f4b71Sopenharmony_ci}
116e41f4b71Sopenharmony_ci```
117e41f4b71Sopenharmony_ci
118e41f4b71Sopenharmony_ci![en-us_image_0000001231683116](figures/en-us_image_0000001231683116.png)
119e41f4b71Sopenharmony_ci
120e41f4b71Sopenharmony_ci> **NOTE**
121e41f4b71Sopenharmony_ci> - If the values of **width** and **height** are different, the smaller value is used as the length of the QR code. The generated QR code is center displayed.
122e41f4b71Sopenharmony_ci> 
123e41f4b71Sopenharmony_ci> - If either **width** or **height** is set, the value is used as the length of the QR code. If neither of them is set, the default length of 200 px is used.
124e41f4b71Sopenharmony_ci> 
125e41f4b71Sopenharmony_ci
126e41f4b71Sopenharmony_ci
127e41f4b71Sopenharmony_ci## Example Scenario
128e41f4b71Sopenharmony_ci
129e41f4b71Sopenharmony_ciIn this example, you can bind a QR code to a text box, and change the QR code by replacing the content in the text box.
130e41f4b71Sopenharmony_ci
131e41f4b71Sopenharmony_ci
132e41f4b71Sopenharmony_ci```html
133e41f4b71Sopenharmony_ci<!-- xxx.hml-->
134e41f4b71Sopenharmony_ci<div class="container">
135e41f4b71Sopenharmony_ci  <input style="margin-bottom: 100px;" onchange="change"></input>
136e41f4b71Sopenharmony_ci  <qrcode value="{{textVal}}"></qrcode>
137e41f4b71Sopenharmony_ci</div>
138e41f4b71Sopenharmony_ci```
139e41f4b71Sopenharmony_ci
140e41f4b71Sopenharmony_ci
141e41f4b71Sopenharmony_ci```css
142e41f4b71Sopenharmony_ci/* xxx.css */
143e41f4b71Sopenharmony_ci.container {
144e41f4b71Sopenharmony_ci  width: 100%;
145e41f4b71Sopenharmony_ci  height: 100%;
146e41f4b71Sopenharmony_ci  flex-direction: column;
147e41f4b71Sopenharmony_ci  align-items: center;
148e41f4b71Sopenharmony_ci  justify-content: center;
149e41f4b71Sopenharmony_ci  background-color: #F1F3F5;
150e41f4b71Sopenharmony_ci}
151e41f4b71Sopenharmony_ciqrcode{
152e41f4b71Sopenharmony_ci  width: 400px;
153e41f4b71Sopenharmony_ci  height: 400px;
154e41f4b71Sopenharmony_ci}
155e41f4b71Sopenharmony_ci```
156e41f4b71Sopenharmony_ci
157e41f4b71Sopenharmony_ci
158e41f4b71Sopenharmony_ci```js
159e41f4b71Sopenharmony_ci// index.js
160e41f4b71Sopenharmony_ciexport default{
161e41f4b71Sopenharmony_ci  data: {
162e41f4b71Sopenharmony_ci    textVal: ''
163e41f4b71Sopenharmony_ci  },
164e41f4b71Sopenharmony_ci  change(e){
165e41f4b71Sopenharmony_ci    this.textVal = e.value
166e41f4b71Sopenharmony_ci  }
167e41f4b71Sopenharmony_ci}
168e41f4b71Sopenharmony_ci```
169e41f4b71Sopenharmony_ci
170e41f4b71Sopenharmony_ci![en-us_image_0000001232002972](figures/en-us_image_0000001232002972.gif)
171