1e41f4b71Sopenharmony_ci# <menu> Development
2e41f4b71Sopenharmony_ci
3e41f4b71Sopenharmony_ci
4e41f4b71Sopenharmony_ciThe <menu> component serves as a temporary pop-up window to display operations that users can perform. For details, see [menu](../reference/apis-arkui/arkui-js/js-components-basic-menu.md).
5e41f4b71Sopenharmony_ci
6e41f4b71Sopenharmony_ci
7e41f4b71Sopenharmony_ci## Creating a <menu> Component
8e41f4b71Sopenharmony_ci
9e41f4b71Sopenharmony_ciCreate a **<menu>** component in the .hml file under **pages/index** and add the **target**, **type**, and **title** attributes.
10e41f4b71Sopenharmony_ci
11e41f4b71Sopenharmony_ci
12e41f4b71Sopenharmony_ci```html
13e41f4b71Sopenharmony_ci<!-- xxx.hml-->
14e41f4b71Sopenharmony_ci<div class="container">
15e41f4b71Sopenharmony_ci  <text class="title-text" id="textId">show menu</text>
16e41f4b71Sopenharmony_ci  <menu target="textId" type="click" title="title">
17e41f4b71Sopenharmony_ci    <option value="Item 1">Item 1</option>
18e41f4b71Sopenharmony_ci    <option value="Item 2">Item 2</option>
19e41f4b71Sopenharmony_ci    <option value="Item 3">Item 3</option>
20e41f4b71Sopenharmony_ci  </menu>
21e41f4b71Sopenharmony_ci</div>
22e41f4b71Sopenharmony_ci```
23e41f4b71Sopenharmony_ci
24e41f4b71Sopenharmony_ci
25e41f4b71Sopenharmony_ci```css
26e41f4b71Sopenharmony_ci/* xxx.css */
27e41f4b71Sopenharmony_ci.container{
28e41f4b71Sopenharmony_ci  width: 100%;
29e41f4b71Sopenharmony_ci  height: 100%; 
30e41f4b71Sopenharmony_ci  flex-direction: column;
31e41f4b71Sopenharmony_ci  background-color: #F1F3F5;
32e41f4b71Sopenharmony_ci  align-items: center;
33e41f4b71Sopenharmony_ci  justify-content: center;
34e41f4b71Sopenharmony_ci  width: 100%;
35e41f4b71Sopenharmony_ci}
36e41f4b71Sopenharmony_ci.title-text{
37e41f4b71Sopenharmony_ci  font-size: 35px;
38e41f4b71Sopenharmony_ci}
39e41f4b71Sopenharmony_ci```
40e41f4b71Sopenharmony_ci
41e41f4b71Sopenharmony_ci![en-us_image_0000001232162284](figures/en-us_image_0000001232162284.gif)
42e41f4b71Sopenharmony_ci
43e41f4b71Sopenharmony_ci> **NOTE**
44e41f4b71Sopenharmony_ci> - The **&lt;menu&gt;** component supports only the [option](../reference/apis-arkui/arkui-js/js-components-basic-option.md) child component.
45e41f4b71Sopenharmony_ci> 
46e41f4b71Sopenharmony_ci> - The **&lt;menu&gt;** component does not support the **focusable** and **disabled** attributes.
47e41f4b71Sopenharmony_ci
48e41f4b71Sopenharmony_ci
49e41f4b71Sopenharmony_ci## Setting Styles
50e41f4b71Sopenharmony_ci
51e41f4b71Sopenharmony_ciSet the style for the **&lt;menu&gt;** component, such as the font color, size, and character spacing.
52e41f4b71Sopenharmony_ci
53e41f4b71Sopenharmony_ci
54e41f4b71Sopenharmony_ci```html
55e41f4b71Sopenharmony_ci<!-- xxx.hml-->
56e41f4b71Sopenharmony_ci<div class="container">
57e41f4b71Sopenharmony_ci  <text class="title-text" id="textId">show menu</text>
58e41f4b71Sopenharmony_ci  <menu target="textId" type="click" title="title">
59e41f4b71Sopenharmony_ci    <option value="Item 1">Item 1</option>
60e41f4b71Sopenharmony_ci    <option value="Item 2">Item 2</option>
61e41f4b71Sopenharmony_ci    <option value="Item 3">Item 3</option>
62e41f4b71Sopenharmony_ci  </menu>
63e41f4b71Sopenharmony_ci</div>
64e41f4b71Sopenharmony_ci```
65e41f4b71Sopenharmony_ci
66e41f4b71Sopenharmony_ci
67e41f4b71Sopenharmony_ci```css
68e41f4b71Sopenharmony_ci/* xxx.css */
69e41f4b71Sopenharmony_ci.container{
70e41f4b71Sopenharmony_ci  width: 100%;
71e41f4b71Sopenharmony_ci  height: 100%; 
72e41f4b71Sopenharmony_ci  flex-direction: column;
73e41f4b71Sopenharmony_ci  background-color: #F1F3F5;
74e41f4b71Sopenharmony_ci  align-items: center;
75e41f4b71Sopenharmony_ci  justify-content: center;
76e41f4b71Sopenharmony_ci  width: 100%;
77e41f4b71Sopenharmony_ci}
78e41f4b71Sopenharmony_ci.title-text{
79e41f4b71Sopenharmony_ci  font-size: 35px;
80e41f4b71Sopenharmony_ci  background-color: #5a5aee;
81e41f4b71Sopenharmony_ci  color: white;
82e41f4b71Sopenharmony_ci  width: 70%;
83e41f4b71Sopenharmony_ci  text-align: center;
84e41f4b71Sopenharmony_ci  height: 85px;
85e41f4b71Sopenharmony_ci  border-radius: 12px;
86e41f4b71Sopenharmony_ci}
87e41f4b71Sopenharmony_cimenu{
88e41f4b71Sopenharmony_ci  text-color: blue;
89e41f4b71Sopenharmony_ci  font-size: 35px;
90e41f4b71Sopenharmony_ci  letter-spacing: 2px;
91e41f4b71Sopenharmony_ci}
92e41f4b71Sopenharmony_cioption{
93e41f4b71Sopenharmony_ci  color: #6a6aef;
94e41f4b71Sopenharmony_ci  font-size: 30px;
95e41f4b71Sopenharmony_ci}
96e41f4b71Sopenharmony_ci```
97e41f4b71Sopenharmony_ci
98e41f4b71Sopenharmony_ci![en-us_image_0000001275803137](figures/en-us_image_0000001275803137.gif)
99e41f4b71Sopenharmony_ci
100e41f4b71Sopenharmony_ci
101e41f4b71Sopenharmony_ci## Binding Events
102e41f4b71Sopenharmony_ci
103e41f4b71Sopenharmony_ciBind the **&lt;menu&gt;** component with the **onselected** event (triggered when a value in the menu is selected) and the **oncancel** event (triggered when an operation is canceled). Click the **&lt;text&gt;** component to call the **show** method to set the coordinates of the **&lt;menu&gt;** component.
104e41f4b71Sopenharmony_ci
105e41f4b71Sopenharmony_ci
106e41f4b71Sopenharmony_ci```html
107e41f4b71Sopenharmony_ci<!-- xxx.hml-->
108e41f4b71Sopenharmony_ci<div class="container">
109e41f4b71Sopenharmony_ci  <text  class="title-text" id="textId" onclick="textClick">show menu</text>
110e41f4b71Sopenharmony_ci  <menu  title="title" onselected="select" oncancel="cancel" id="menuId">
111e41f4b71Sopenharmony_ci    <option value="Item 1">Item 1</option>
112e41f4b71Sopenharmony_ci    <option value="Item 2">Item 2</option>
113e41f4b71Sopenharmony_ci    <option value="Item 3">Item 3</option>
114e41f4b71Sopenharmony_ci  </menu>
115e41f4b71Sopenharmony_ci</div>
116e41f4b71Sopenharmony_ci```
117e41f4b71Sopenharmony_ci
118e41f4b71Sopenharmony_ci
119e41f4b71Sopenharmony_ci```css
120e41f4b71Sopenharmony_ci/* xxx.css */
121e41f4b71Sopenharmony_ci.container{
122e41f4b71Sopenharmony_ci  width: 100%;
123e41f4b71Sopenharmony_ci  height: 100%;
124e41f4b71Sopenharmony_ci  flex-direction: column;
125e41f4b71Sopenharmony_ci  background-color: #F1F3F5;
126e41f4b71Sopenharmony_ci  width: 100%;
127e41f4b71Sopenharmony_ci}
128e41f4b71Sopenharmony_ci.title-text{
129e41f4b71Sopenharmony_ci  font-size: 35px;
130e41f4b71Sopenharmony_ci  background-color: #5a5aee;
131e41f4b71Sopenharmony_ci  color: white;
132e41f4b71Sopenharmony_ci  width: 70%;
133e41f4b71Sopenharmony_ci  text-align: center;
134e41f4b71Sopenharmony_ci  height: 85px;
135e41f4b71Sopenharmony_ci  border-radius: 12px;
136e41f4b71Sopenharmony_ci  margin-top: 500px;
137e41f4b71Sopenharmony_ci  margin-left: 15%;
138e41f4b71Sopenharmony_ci}
139e41f4b71Sopenharmony_cimenu{
140e41f4b71Sopenharmony_ci  text-color: blue;
141e41f4b71Sopenharmony_ci  font-size: 35px;
142e41f4b71Sopenharmony_ci  letter-spacing: 2px;
143e41f4b71Sopenharmony_ci}
144e41f4b71Sopenharmony_cioption{
145e41f4b71Sopenharmony_ci  color: #6a6aef;
146e41f4b71Sopenharmony_ci  font-size: 30px;
147e41f4b71Sopenharmony_ci}
148e41f4b71Sopenharmony_ci```
149e41f4b71Sopenharmony_ci
150e41f4b71Sopenharmony_ci
151e41f4b71Sopenharmony_ci```js
152e41f4b71Sopenharmony_ci// xxx.js
153e41f4b71Sopenharmony_ciimport promptAction from '@ohos.promptAction';
154e41f4b71Sopenharmony_ciexport default {
155e41f4b71Sopenharmony_ci  select(e) {
156e41f4b71Sopenharmony_ci    promptAction.showToast({
157e41f4b71Sopenharmony_ci      message: e.value
158e41f4b71Sopenharmony_ci    })
159e41f4b71Sopenharmony_ci  },
160e41f4b71Sopenharmony_ci  cancel(){
161e41f4b71Sopenharmony_ci    promptAction.showToast({
162e41f4b71Sopenharmony_ci      message: "cancel"
163e41f4b71Sopenharmony_ci    })
164e41f4b71Sopenharmony_ci  },
165e41f4b71Sopenharmony_ci  textClick() {
166e41f4b71Sopenharmony_ci    this.$element("menuId").show({x:175,y:590});
167e41f4b71Sopenharmony_ci  },
168e41f4b71Sopenharmony_ci}
169e41f4b71Sopenharmony_ci```
170e41f4b71Sopenharmony_ci
171e41f4b71Sopenharmony_ci![en-us_image_0000001276162713](figures/en-us_image_0000001276162713.gif)
172e41f4b71Sopenharmony_ci
173e41f4b71Sopenharmony_ci
174e41f4b71Sopenharmony_ci## Example Scenario
175e41f4b71Sopenharmony_ci
176e41f4b71Sopenharmony_ciClick the **&lt;toggle&gt;** component to change the text color and select the **&lt;menu&gt;** component to change the size of the gradient color block.
177e41f4b71Sopenharmony_ci
178e41f4b71Sopenharmony_ci
179e41f4b71Sopenharmony_ci```html
180e41f4b71Sopenharmony_ci<!-- xxx.hml-->
181e41f4b71Sopenharmony_ci<div class="container">
182e41f4b71Sopenharmony_ci    <div class="contentToggle">
183e41f4b71Sopenharmony_ci        <toggle class="toggle" for="{{item in togglesList}}" onclick="toggleClick({{$idx}})" checked="{{item.checked}}">{{item.name}}</toggle>
184e41f4b71Sopenharmony_ci    </div>
185e41f4b71Sopenharmony_ci    <text class="size" style="color: {{color}};">width:{{width}},height:{{height}}</text>
186e41f4b71Sopenharmony_ci    <div style="width: {{width}}px;height: {{height}}px; background-color: cornflowerblue;"></div>
187e41f4b71Sopenharmony_ci    <text id="menuId" class="text">change size</text>
188e41f4b71Sopenharmony_ci    <menu onselected="select" oncancel="cancel" target="menuId">
189e41f4b71Sopenharmony_ci        <option value="{{item.value}}" for="item in optionList">{{item.text}}</option>
190e41f4b71Sopenharmony_ci    </menu>
191e41f4b71Sopenharmony_ci</div>
192e41f4b71Sopenharmony_ci```
193e41f4b71Sopenharmony_ci
194e41f4b71Sopenharmony_ci
195e41f4b71Sopenharmony_ci```css
196e41f4b71Sopenharmony_ci/* xxx.css */
197e41f4b71Sopenharmony_ci.container{
198e41f4b71Sopenharmony_ci  flex-direction: column;
199e41f4b71Sopenharmony_ci  background-color: #F1F3F5;
200e41f4b71Sopenharmony_ci  width: 100%;
201e41f4b71Sopenharmony_ci  justify-content: center;
202e41f4b71Sopenharmony_ci  align-items: center;
203e41f4b71Sopenharmony_ci}
204e41f4b71Sopenharmony_ci.contentToggle{
205e41f4b71Sopenharmony_ci  width: 100%;
206e41f4b71Sopenharmony_ci  justify-content: space-around;
207e41f4b71Sopenharmony_ci}
208e41f4b71Sopenharmony_ci.toggle{
209e41f4b71Sopenharmony_ci  padding: 10px;
210e41f4b71Sopenharmony_ci  height:80px;
211e41f4b71Sopenharmony_ci  font-size: 35px;
212e41f4b71Sopenharmony_ci  width: 200px;
213e41f4b71Sopenharmony_ci  height: 85px;
214e41f4b71Sopenharmony_ci}
215e41f4b71Sopenharmony_ci.size{
216e41f4b71Sopenharmony_ci  width: 100%;
217e41f4b71Sopenharmony_ci  height: 200px;
218e41f4b71Sopenharmony_ci  text-align: center;
219e41f4b71Sopenharmony_ci  font-size: 40px;
220e41f4b71Sopenharmony_ci  text-align: center;
221e41f4b71Sopenharmony_ci}
222e41f4b71Sopenharmony_ci.text{
223e41f4b71Sopenharmony_ci  width: 300px;
224e41f4b71Sopenharmony_ci  height: 80px;
225e41f4b71Sopenharmony_ci  background-color: #615def;
226e41f4b71Sopenharmony_ci  color: white;
227e41f4b71Sopenharmony_ci  font-size: 35px;
228e41f4b71Sopenharmony_ci  text-align: center;
229e41f4b71Sopenharmony_ci  margin-top: 100px;
230e41f4b71Sopenharmony_ci}
231e41f4b71Sopenharmony_cimenu{
232e41f4b71Sopenharmony_ci  text-color: blue;
233e41f4b71Sopenharmony_ci  font-size: 35px;
234e41f4b71Sopenharmony_ci  letter-spacing: 2px;
235e41f4b71Sopenharmony_ci}
236e41f4b71Sopenharmony_cioption{
237e41f4b71Sopenharmony_ci  color: #6a6aef;
238e41f4b71Sopenharmony_ci  font-size: 30px;
239e41f4b71Sopenharmony_ci}
240e41f4b71Sopenharmony_ci```
241e41f4b71Sopenharmony_ci
242e41f4b71Sopenharmony_ci
243e41f4b71Sopenharmony_ci```js
244e41f4b71Sopenharmony_ci// xxx.js
245e41f4b71Sopenharmony_ciexport default {
246e41f4b71Sopenharmony_ci  data:{
247e41f4b71Sopenharmony_ci    fresh: false,
248e41f4b71Sopenharmony_ci    width: 200,
249e41f4b71Sopenharmony_ci    height: 200,
250e41f4b71Sopenharmony_ci    color: '',
251e41f4b71Sopenharmony_ci    optionList:[
252e41f4b71Sopenharmony_ci      {text:'200 x 200',value:2},
253e41f4b71Sopenharmony_ci      {text:'300 x 300',value:3},
254e41f4b71Sopenharmony_ci      {text:'500 x 500',value:5},
255e41f4b71Sopenharmony_ci    ],
256e41f4b71Sopenharmony_ci    togglesList:[
257e41f4b71Sopenharmony_ci      {name:"red", checked:false},
258e41f4b71Sopenharmony_ci      {name:"blue", checked:false},
259e41f4b71Sopenharmony_ci      {name: "black", checked:false},
260e41f4b71Sopenharmony_ci    ],
261e41f4b71Sopenharmony_ci  },
262e41f4b71Sopenharmony_ci  toggleClick(index) {   
263e41f4b71Sopenharmony_ci    for(let i=0;i<this.togglesList.length;i++) {     
264e41f4b71Sopenharmony_ci      if (i == index) {        
265e41f4b71Sopenharmony_ci      this.color = this.togglesList[index].name;        
266e41f4b71Sopenharmony_ci      this.togglesList[i].checked = true;      
267e41f4b71Sopenharmony_ci      }else {        
268e41f4b71Sopenharmony_ci        this.togglesList[i].checked = false;      
269e41f4b71Sopenharmony_ci      }    
270e41f4b71Sopenharmony_ci    }  
271e41f4b71Sopenharmony_ci  },
272e41f4b71Sopenharmony_ci  select(e) {
273e41f4b71Sopenharmony_ci    this.width = e.value * 100;
274e41f4b71Sopenharmony_ci    this.height = e.value * 100;
275e41f4b71Sopenharmony_ci  }
276e41f4b71Sopenharmony_ci}
277e41f4b71Sopenharmony_ci```
278e41f4b71Sopenharmony_ci
279e41f4b71Sopenharmony_ci![en-us_image_0000001226815403](figures/en-us_image_0000001226815403.gif)
280