1e41f4b71Sopenharmony_ci# stack
2e41f4b71Sopenharmony_ci
3e41f4b71Sopenharmony_ciThe **\<stack>** component provides a stack container where child components are successively stacked and the latter one overwrites the previous one.
4e41f4b71Sopenharmony_ci
5e41f4b71Sopenharmony_ci> **NOTE**
6e41f4b71Sopenharmony_ci>
7e41f4b71Sopenharmony_ci> This component is supported since API version 4. Updates will be marked with a superscript to indicate their earliest API version.
8e41f4b71Sopenharmony_ci
9e41f4b71Sopenharmony_ci
10e41f4b71Sopenharmony_ci## Child Components
11e41f4b71Sopenharmony_ci
12e41f4b71Sopenharmony_ciSupported.
13e41f4b71Sopenharmony_ci
14e41f4b71Sopenharmony_ci
15e41f4b71Sopenharmony_ci## Attributes
16e41f4b71Sopenharmony_ci
17e41f4b71Sopenharmony_ci| Name   | Type    | Default Value | Mandatory  | Description                                      |
18e41f4b71Sopenharmony_ci| ----- | ------ | ---- | ---- | ---------------------------------------- |
19e41f4b71Sopenharmony_ci| id    | string | -    | No   | Unique ID of the component.                                |
20e41f4b71Sopenharmony_ci| style | string | -    | No   | Style declaration of the component.                                |
21e41f4b71Sopenharmony_ci| class | string | -    | No   | Style class of the component, which is used to refer to a style table.                         |
22e41f4b71Sopenharmony_ci| ref   | string | -    | No   | Reference information of child elements, which is registered with the parent component on **$refs**.|
23e41f4b71Sopenharmony_ci
24e41f4b71Sopenharmony_ci
25e41f4b71Sopenharmony_ci## Events
26e41f4b71Sopenharmony_ci
27e41f4b71Sopenharmony_ci| Name                | Parameter                               | Description         |
28e41f4b71Sopenharmony_ci| ------------------ | --------------------------------- | ----------- |
29e41f4b71Sopenharmony_ci| click              | -                                 | Triggered when the component is clicked. |
30e41f4b71Sopenharmony_ci| longpress          | -                                 | Triggered when the component is long pressed. |
31e41f4b71Sopenharmony_ci| swipe<sup>5+</sup> | [SwipeEvent](js-lite-common-events.md) | Triggered when a user quickly swipes on the component.|
32e41f4b71Sopenharmony_ci
33e41f4b71Sopenharmony_ci
34e41f4b71Sopenharmony_ci## Styles
35e41f4b71Sopenharmony_ci
36e41f4b71Sopenharmony_ci| Name                                | Type                                      | Default Value  | Mandatory  | Description                                      |
37e41f4b71Sopenharmony_ci| ---------------------------------- | ---------------------------------------- | ----- | ---- | ---------------------------------------- |
38e41f4b71Sopenharmony_ci| width                              | &lt;length&gt; \| &lt;percentage&gt;<sup>5+</sup> | -     | No   | Component width.<br><br>If this attribute is not set, the default value **0** is used.       |
39e41f4b71Sopenharmony_ci| height                             | &lt;length&gt; \| &lt;percentage&gt;<sup>5+</sup> | -     | No   | Component height.<br><br>If this attribute is not set, the default value **0** is used.       |
40e41f4b71Sopenharmony_ci| padding                            | &lt;length&gt;                           | 0     | No   | Shorthand attribute to set the padding for all sides.<br>The attribute can have one to four values:<br>- If you set only one value, it specifies the padding for all the four sides.<br>- If you set two values, the first value specifies the top and bottom padding, and the second value specifies the left and right padding.<br>- If you set three values, the first value specifies the top padding, the second value specifies the left and right padding, and the third value specifies the bottom padding.<br>- If you set four values, they respectively specify the padding for top, right, bottom, and left sides (in clockwise order).|
41e41f4b71Sopenharmony_ci| padding-[left\|top\|right\|bottom] | &lt;length&gt;                           | 0     | No   | Left, top, right, and bottom padding.                         |
42e41f4b71Sopenharmony_ci| margin                             | &lt;length&gt; \| &lt;percentage&gt;<sup>5+</sup> | 0     | No   | Shorthand attribute to set the margin for all sides. The attribute can have one to four values:<br>- If you set only one value, it specifies the margin for all the four sides.<br>- If you set two values, the first value specifies the top and bottom margins, and the second value specifies the left and right margins.<br>- If you set three values, the first value specifies the top margin, the second value specifies the left and right margins, and the third value specifies the bottom margin.<br>- If you set four values, they respectively specify the margin for top, right, bottom, and left sides (in clockwise order).|
43e41f4b71Sopenharmony_ci| margin-[left\|top\|right\|bottom]  | &lt;length&gt; \| &lt;percentage&gt;<sup>5+</sup> | 0     | No   | Left, top, right, and bottom margins.                         |
44e41f4b71Sopenharmony_ci| border-width                       | &lt;length&gt;                           | 0     | No   | Shorthand attribute to set the margin for all sides.                      |
45e41f4b71Sopenharmony_ci| border-color                       | &lt;color&gt;                            | black | No   | Shorthand attribute to set the color for all borders.                      |
46e41f4b71Sopenharmony_ci| border-radius                      | &lt;length&gt;                           | -     | No   | Radius of round-corner borders.           |
47e41f4b71Sopenharmony_ci| background-color                   | &lt;color&gt;                            | -     | No   | Background color.                                 |
48e41f4b71Sopenharmony_ci| opacity<sup>5+</sup>               | number                                   | 1     | No   | Opacity of an element. The value ranges from **0** to **1**. The value **1** means opaque, and **0** means completely transparent.       |
49e41f4b71Sopenharmony_ci| display                            | string                                   | flex  | No   | How and whether to display the box containing an element. Available values are as follows:<br>- **flex**: flexible layout<br>- **none**: not rendered|
50e41f4b71Sopenharmony_ci| [left\|top]                        | &lt;length&gt; \| &lt;percentage&gt;<sup>6+</sup> | -     | No   | Edge of the element.<br>- **left**: left edge position of the element. This attribute defines the offset between the left edge of the margin area of a positioned element and left edge of its containing block.<br>- **top**: top edge position of the element. This attribute defines the offset between the top edge of a positioned element and that of a block included in the element.|
51e41f4b71Sopenharmony_ci
52e41f4b71Sopenharmony_ci>  **NOTE**
53e41f4b71Sopenharmony_ci>
54e41f4b71Sopenharmony_ci> The absolute positioning does not support a percentage. Therefore, **margin** cannot be set for the child components of the **\<stack>** component.
55e41f4b71Sopenharmony_ci
56e41f4b71Sopenharmony_ci
57e41f4b71Sopenharmony_ci## Example
58e41f4b71Sopenharmony_ci
59e41f4b71Sopenharmony_ci
60e41f4b71Sopenharmony_ci```html
61e41f4b71Sopenharmony_ci<!-- xxx.hml -->
62e41f4b71Sopenharmony_ci<stack class="stack-parent">
63e41f4b71Sopenharmony_ci  <div class="back-child bd-radius"></div>
64e41f4b71Sopenharmony_ci  <div class="positioned-child bd-radius"></div>
65e41f4b71Sopenharmony_ci  <div class="front-child bd-radius"></div>
66e41f4b71Sopenharmony_ci</stack>
67e41f4b71Sopenharmony_ci```
68e41f4b71Sopenharmony_ci
69e41f4b71Sopenharmony_ci
70e41f4b71Sopenharmony_ci```css
71e41f4b71Sopenharmony_ci/* xxx.css */
72e41f4b71Sopenharmony_ci.stack-parent {
73e41f4b71Sopenharmony_ci  width: 400px;
74e41f4b71Sopenharmony_ci  height: 400px;
75e41f4b71Sopenharmony_ci  background-color: #ffffff;
76e41f4b71Sopenharmony_ci  border-width: 1px;
77e41f4b71Sopenharmony_ci  border-style: solid;
78e41f4b71Sopenharmony_ci}
79e41f4b71Sopenharmony_ci.back-child {
80e41f4b71Sopenharmony_ci  width: 300px;
81e41f4b71Sopenharmony_ci  height: 300px;
82e41f4b71Sopenharmony_ci  background-color: #3f56ea;
83e41f4b71Sopenharmony_ci}
84e41f4b71Sopenharmony_ci.front-child {
85e41f4b71Sopenharmony_ci  width: 100px;
86e41f4b71Sopenharmony_ci  height: 100px;
87e41f4b71Sopenharmony_ci  background-color: #00bfc9;
88e41f4b71Sopenharmony_ci}
89e41f4b71Sopenharmony_ci.positioned-child {
90e41f4b71Sopenharmony_ci  width: 100px;
91e41f4b71Sopenharmony_ci  height: 100px;
92e41f4b71Sopenharmony_ci  left: 50px;
93e41f4b71Sopenharmony_ci  top: 50px;
94e41f4b71Sopenharmony_ci  background-color: #47cc47;
95e41f4b71Sopenharmony_ci}
96e41f4b71Sopenharmony_ci.bd-radius {
97e41f4b71Sopenharmony_ci  border-radius: 16px;
98e41f4b71Sopenharmony_ci}
99e41f4b71Sopenharmony_ci```
100e41f4b71Sopenharmony_ci
101e41f4b71Sopenharmony_ci![en-us_image_0000001380789188](figures/en-us_image_0000001380789188.png)
102