1e41f4b71Sopenharmony_ci# popup 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ci> **说明:** 4e41f4b71Sopenharmony_ci> 从API version 4开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 5e41f4b71Sopenharmony_ci 6e41f4b71Sopenharmony_ci气泡指示。给控件绑定气泡弹窗,并在点击控件或者调用气泡弹窗显示方法后弹出相应的气泡提示来引导用户进行操作。 7e41f4b71Sopenharmony_ci 8e41f4b71Sopenharmony_ci## 权限列表 9e41f4b71Sopenharmony_ci 10e41f4b71Sopenharmony_ci无 11e41f4b71Sopenharmony_ci 12e41f4b71Sopenharmony_ci 13e41f4b71Sopenharmony_ci## 子组件 14e41f4b71Sopenharmony_ci 15e41f4b71Sopenharmony_ci支持单个子组件节点<sup>5+</sup>。 16e41f4b71Sopenharmony_ci 17e41f4b71Sopenharmony_ci 18e41f4b71Sopenharmony_ci## 属性 19e41f4b71Sopenharmony_ci 20e41f4b71Sopenharmony_ci除支持[通用属性](js-components-common-attributes.md)外,还支持如下属性: 21e41f4b71Sopenharmony_ci 22e41f4b71Sopenharmony_ci| 名称 | 类型 | 默认值 | 必填 | 描述 | 23e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- | -------- | 24e41f4b71Sopenharmony_ci| target | string | - | 是 | popup绑定目标元素的id属性值,不支持动态切换。 | 25e41f4b71Sopenharmony_ci| placement | string | bottom | 否 | popup相对于目标元素的位置。可选值为:<br/>- left:位于目标元素左边;<br/>- right:位于目标元素右边;<br/>- top:位于目标元素上边;<br/>- bottom:位于目标元素下边;<br/>- topLeft:位于目标元素左上角;<br/>- topRight:位于目标元素右上角;<br/>- bottomLeft:位于目标元素左下角;<br/>- bottomRight:位于目标元素右下角。 | 26e41f4b71Sopenharmony_ci| keepalive<sup>5+</sup> | boolean | false | 否 | 设置当前popup是否需要保留。设置为true时,点击屏幕区域或者页面切换气泡不会消失,需调用气泡组件的hide方法才可让气泡消失;设置为false时,点击屏幕区域或者页面切换气泡会自动消失。 | 27e41f4b71Sopenharmony_ci| clickable<sup>5+</sup> | boolean | true | 否 | popup是否支持点击目标元素弹窗,当设置为false时,只支持方法调用显示弹窗。 | 28e41f4b71Sopenharmony_ci| arrowoffset<sup>5+</sup> | <length> | 0 | 否 | popup箭头在弹窗处的偏移,默认居中,正值按照语言方向进行偏移,负值相反。 | 29e41f4b71Sopenharmony_ci 30e41f4b71Sopenharmony_ci> **说明:** 31e41f4b71Sopenharmony_ci> 32e41f4b71Sopenharmony_ci> - 不支持focusable属性。 33e41f4b71Sopenharmony_ci 34e41f4b71Sopenharmony_ci 35e41f4b71Sopenharmony_ci## 样式 36e41f4b71Sopenharmony_ci 37e41f4b71Sopenharmony_ci除支持[通用样式](js-components-common-styles.md)外,还支持如下样式: 38e41f4b71Sopenharmony_ci 39e41f4b71Sopenharmony_ci| 名称 | 类型 | 默认值 | 必填 | 描述 | 40e41f4b71Sopenharmony_ci| -------- | -------- | -------- | -------- | -------- | 41e41f4b71Sopenharmony_ci| mask-color | <color> | - | 否 | 遮罩层的颜色,默认值为全透明。 | 42e41f4b71Sopenharmony_ci 43e41f4b71Sopenharmony_ci> **说明:** 44e41f4b71Sopenharmony_ci> 45e41f4b71Sopenharmony_ci> - 不支持position相关样式。 46e41f4b71Sopenharmony_ci 47e41f4b71Sopenharmony_ci 48e41f4b71Sopenharmony_ci## 事件 49e41f4b71Sopenharmony_ci 50e41f4b71Sopenharmony_ci除支持[通用事件](js-components-common-events.md)外,还支持如下事件: 51e41f4b71Sopenharmony_ci 52e41f4b71Sopenharmony_ci| 名称 | 参数 | 描述 | 53e41f4b71Sopenharmony_ci| -------- | -------- | -------- | 54e41f4b71Sopenharmony_ci| visibilitychange | { visibility: boolean } | 当气泡弹出和消失时会触发该回调函数。 | 55e41f4b71Sopenharmony_ci 56e41f4b71Sopenharmony_ci 57e41f4b71Sopenharmony_ci## 方法 58e41f4b71Sopenharmony_ci 59e41f4b71Sopenharmony_ci仅支持如下方法: 60e41f4b71Sopenharmony_ci 61e41f4b71Sopenharmony_ci| 名称 | 参数 | 描述 | 62e41f4b71Sopenharmony_ci| -------- | -------- | -------- | 63e41f4b71Sopenharmony_ci| show<sup>5+</sup> | - | 弹出气泡提示。 | 64e41f4b71Sopenharmony_ci| hide<sup>5+</sup> | - | 隐藏气泡提示。 | 65e41f4b71Sopenharmony_ci 66e41f4b71Sopenharmony_ci> **说明:** 67e41f4b71Sopenharmony_ci> 1. popup气泡弹窗属性、样式均不支持动态更新。 68e41f4b71Sopenharmony_ci> 69e41f4b71Sopenharmony_ci> 2. popup气泡弹窗的margin样式是相对于target元素进行生效的,如popup在target元素下方,此时只生效margin-top样式,popup在target元素左上方,此时只生效margin-bottom和margin-right样式。 70e41f4b71Sopenharmony_ci> 71e41f4b71Sopenharmony_ci> 3. popup的border四边样式需一致,若四边设置不一致且圆角为零,则按左、上、右、下的顺序取第一个被设置的样式,否则border不生效。 72e41f4b71Sopenharmony_ci> 73e41f4b71Sopenharmony_ci> 4. popup的target组件的click事件不生效。 74e41f4b71Sopenharmony_ci 75e41f4b71Sopenharmony_ci 76e41f4b71Sopenharmony_ci## 示例 77e41f4b71Sopenharmony_ci 78e41f4b71Sopenharmony_ci```html 79e41f4b71Sopenharmony_ci<!-- xxx.hml --> 80e41f4b71Sopenharmony_ci<div class="container"> 81e41f4b71Sopenharmony_ci <text id="text">Click to show the pop-up</text> 82e41f4b71Sopenharmony_ci <!-- popup supports single child of any type5+ --> 83e41f4b71Sopenharmony_ci <popup id="popup" class="popup" target="text" placement="top" keepalive="true" clickable="true" 84e41f4b71Sopenharmony_ci arrowoffset="100px" onvisibilitychange="visibilitychange" onclick="hidepopup"> 85e41f4b71Sopenharmony_ci <text class="text">Text content of the pop-up</text> 86e41f4b71Sopenharmony_ci </popup> 87e41f4b71Sopenharmony_ci <button class="button" onclick="showpopup">Click to show the pop-up</button> 88e41f4b71Sopenharmony_ci</div> 89e41f4b71Sopenharmony_ci``` 90e41f4b71Sopenharmony_ci 91e41f4b71Sopenharmony_ci```css 92e41f4b71Sopenharmony_ci/* xxx.css */ 93e41f4b71Sopenharmony_ci.container { 94e41f4b71Sopenharmony_ci flex-direction: column; 95e41f4b71Sopenharmony_ci align-items: center; 96e41f4b71Sopenharmony_ci padding-top: 200px; 97e41f4b71Sopenharmony_ci} 98e41f4b71Sopenharmony_ci.popup { 99e41f4b71Sopenharmony_ci mask-color: gray; 100e41f4b71Sopenharmony_ci} 101e41f4b71Sopenharmony_ci.text { 102e41f4b71Sopenharmony_ci color: white; 103e41f4b71Sopenharmony_ci} 104e41f4b71Sopenharmony_ci.button { 105e41f4b71Sopenharmony_ci width: 220px; 106e41f4b71Sopenharmony_ci height: 70px; 107e41f4b71Sopenharmony_ci margin-top: 50px; 108e41f4b71Sopenharmony_ci} 109e41f4b71Sopenharmony_ci``` 110e41f4b71Sopenharmony_ci 111e41f4b71Sopenharmony_ci```js 112e41f4b71Sopenharmony_ci// xxx.js 113e41f4b71Sopenharmony_ciimport promptAction from '@ohos.promptAction' 114e41f4b71Sopenharmony_ciexport default { 115e41f4b71Sopenharmony_ci visibilitychange(e) { 116e41f4b71Sopenharmony_ci promptAction.showToast({ 117e41f4b71Sopenharmony_ci message: 'visibility change visibility: ' + e.visibility, 118e41f4b71Sopenharmony_ci duration: 3000 119e41f4b71Sopenharmony_ci }); 120e41f4b71Sopenharmony_ci }, 121e41f4b71Sopenharmony_ci showpopup() { 122e41f4b71Sopenharmony_ci this.$element("popup").show(); 123e41f4b71Sopenharmony_ci }, 124e41f4b71Sopenharmony_ci hidepopup() { 125e41f4b71Sopenharmony_ci this.$element("popup").hide(); 126e41f4b71Sopenharmony_ci } 127e41f4b71Sopenharmony_ci} 128e41f4b71Sopenharmony_ci``` 129e41f4b71Sopenharmony_ci 130e41f4b71Sopenharmony_ci 131