Home  >  Article  >  Web Front-end  >  What does the z-index property in CSS mean?

What does the z-index property in CSS mean?

怪我咯
怪我咯Original
2017-06-23 09:34:1711204browse

Concept

z-index Property sets the stacking order of elements. Elements with a higher stacking order will always appear in front of elements with a lower stacking order.

Comparison of hierarchical relationships

1. For sibling elements, the default (or position:static), elements at the back of the document flow will overwrite the previous ones.

2. For sibling elements, if the position is not static and z-index exists, the element with a larger z-index will cover the element with a smaller z-index, that is, the larger the z-index, takes precedence. The higher the level.

3. Under IE6/7, position is not static, and z-index does not exist. When z-index does not exist, z-index is 0. In other browsers, z-index is auto.

4. Elements whose z-index is auto do not participate in the comparison of hierarchical relationships. Elements traversed upward and whose z-index is not auto participate in the comparison.

Sequence rules

If the position attribute is not set on the node, the node located at the back of the document flow will cover the previous node.

<div id="a">A</div>
<div id="b">B</div>

Positioning rules

If position is set to static, nodes located behind the document flow will still Will cover the previous node float, so position:static will not affect the covering relationship of the node.

<div id="a" style="position:static;">A</div>
<div id="b">B</div>

If position is set to relative (relative positioning), absolute (absolute positioning) or fixed (fixed positioning), such nodes will be covered There is no node with the position attribute set or the attribute value is static, indicating that the former has a higher default level than the latter.

<div id="a" style="position:relative;">A</div>
<div id="b">B</div>

Without the interference of the z-index attribute, according to the order rules and positioning rules, we can make more complex structures. Here we have A and B No position is set, but position:relative is set for A's child node A-1. According to the order rules, B will cover A, and according to the positioning rules A' will cover B.

<div id="a">
    <div id="a-1" style="position:relative;">A-1</div>
</div>
<div id="b">B</div>

When should such an implementation be used to overlay each other? It may seem odd, but it is actually very commonly used. For example, this can be used for the category display list in the side column of an e-commerce website. Techniques to achieve.

The picture below is the category display area of ​​a website. The floating layer of the second-level category covers the outer frame of the first-level category list, and the nodes of the first-level category cover the second-level category. Suspended layer. If CSS is used to achieve the display effect, the outer frame of the first-level category is equivalent to A in the above example, the node of the first-level category is equivalent to A-1, and the floating layer of the second-level category is equivalent to B.

Participation rules

We try not to use the position attribute, but add the z-index attribute to the node. Found z-index has no effect on nodes. The z-index attribute only takes effect when the position attribute of the node is relative, absolute or fixed.

<div id="a" style="z-index:2;">A</div>
<div id="b" style="z-index:1;">B</div>
<div id="c" style="z-index:0;">C</div>

<div id="a" style="z-index:2;">A</div>
<div id="b" style="position:relative;z-index:1;">B</div>
<div id="c" style="position:relative;z-index:0;">C</div>

Default value rules

If all nodes are defined with position:relative. A node with a z-index of 0 is in the same location as a node with no z-index defined. There is no distinction between high and low in the hierarchy; but nodes with z-index greater than or equal to 1 will cover nodes with no z-index defined; nodes with negative z-index values ​​will be covered by nodes with no z-index defined.

<div id="a" style="position:relative;z-index:1;">A</div>
<div id="b" style="position:relative;z-index:0;">B</div>
<div id="c" style="position:relative;">C</div>
<div id="d" style="position:relative;z-index:0;">D</div>

From the parent rule

If nodes A and B both define position:relative, the z- of node A The index is larger than the B node, then the child nodes of A must cover the front of the child nodes of B.

<div id="a" style="position:relative;z-index:1;">
    <div id="a-1">A-1</div>
</div>
 
<div id="b" style="position:relative;z-index:0;">
    <div id="b-1">B-1</div>
</div>

If all nodes define position:relative, the z-index of node A is the same as that of node B, but due to the order rules, node B covers the front of node A. Even if the z-index value of A's child node is greater than that of B, If the child node is large, the child node of B will still cover the child node of A.

Many people set the z-index very large, 9999 and so on. , if the influence of the parent node is not considered, it is useless no matter how large it is, it is an insurmountable level.

The above is the detailed content of What does the z-index property in CSS mean?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn