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 42e41f4b71Sopenharmony_ci 43e41f4b71Sopenharmony_ci> **NOTE** 44e41f4b71Sopenharmony_ci> - The **<menu>** component supports only the [option](../reference/apis-arkui/arkui-js/js-components-basic-option.md) child component. 45e41f4b71Sopenharmony_ci> 46e41f4b71Sopenharmony_ci> - The **<menu>** 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 **<menu>** 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 99e41f4b71Sopenharmony_ci 100e41f4b71Sopenharmony_ci 101e41f4b71Sopenharmony_ci## Binding Events 102e41f4b71Sopenharmony_ci 103e41f4b71Sopenharmony_ciBind the **<menu>** 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 **<text>** component to call the **show** method to set the coordinates of the **<menu>** 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 172e41f4b71Sopenharmony_ci 173e41f4b71Sopenharmony_ci 174e41f4b71Sopenharmony_ci## Example Scenario 175e41f4b71Sopenharmony_ci 176e41f4b71Sopenharmony_ciClick the **<toggle>** component to change the text color and select the **<menu>** 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 280