1e41f4b71Sopenharmony_ci# popup
2e41f4b71Sopenharmony_ci
3e41f4b71Sopenharmony_ci>  **说明:**
4e41f4b71Sopenharmony_ci> 从API version 4开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
5e41f4b71Sopenharmony_ci
6e41f4b71Sopenharmony_ci气泡指示。给控件绑定气泡弹窗,并在点击控件或者调用气泡弹窗显示方法后弹出相应的气泡提示来引导用户进行操作。
7e41f4b71Sopenharmony_ci
8e41f4b71Sopenharmony_ci## 权限列表
9e41f4b71Sopenharmony_ci
10e41f4b71Sopenharmony_ci11e41f4b71Sopenharmony_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/>-&nbsp;left:位于目标元素左边;<br/>-&nbsp;right:位于目标元素右边;<br/>-&nbsp;top:位于目标元素上边;<br/>-&nbsp;bottom:位于目标元素下边;<br/>-&nbsp;topLeft:位于目标元素左上角;<br/>-&nbsp;topRight:位于目标元素右上角;<br/>-&nbsp;bottomLeft:位于目标元素左下角;<br/>-&nbsp;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> | &lt;length&gt; | 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 | &lt;color&gt; | - | 否 | 遮罩层的颜色,默认值为全透明。 |
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 | {&nbsp;visibility:&nbsp;boolean&nbsp;} | 当气泡弹出和消失时会触发该回调函数。 |
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![zh-cn_image_0000001178886129](figures/zh-cn_image_0000001178886129.png)
131