Difference Between Auto, 0, And No Z-index?
Solution 1:
Not specifying z-index
is the same as z-index: auto
; that is its initial value.
auto
and 0
mean the same thing if your element doesn't create its own stacking context; e.g. it is not positioned as relative, absolute or fixed.
If your enclosing div
isn't positioned, then whatever you set its z-index
to doesn't matter; it and all its contents will participate in the stacking context of html
, and its descendants will always be positioned in front of it.
Solution 2:
What @BoltClock said is right.
Not specifying
z-index
is the same asz-index: auto;
that is its initial value.
About z-index: 0
it's important to note the following:
z-index: 0
creates a stacking context while z-index: auto
do not. You can check MDN for more information about this.
In most cases this won't affect the rendered elements.
The following fiddle is an example where it matters: https://jsfiddle.net/ramcdvns/3/
Code and explanation below:
<style>.box {
position: relative;
width: 64px;
height: 64px;
top: 32px;
left: 32px;
}
.red {
background: red;
}
.green {
background: green;
}
.blue {
background: blue;
}
#example-0 {
margin-top: 32px;
}
</style><divid="example-auto"><divclass="box red"><divclass="box green"style="z-index: 1"></div></div><divclass="box blue"></div></div><divid="example-0"><divclass="box red"style="z-index: 0"><divclass="box green"style="z-index: 1"></div></div><divclass="box blue"></div></div>
In both examples, red and blue are siblings with a position: relative
and green is a child of red with position: relative
and z-index: 1
:
- Root
- Red:
position: relative
- Green:
position: relative; z-index: 1
- Green:
- Blue:
position: relative
- Red:
In the first example, green will be positioned above red and blue. This is because it has a z-index: 1
, so a stacking context is created and put above the root context.
In the second example, green will be positioned above red, but below blue. This is because red has z-index: 0
, so it creates a stacking context at the same level of blue. So green will be above red (because green also creates a stacking context), but below blue because it's trapped in the context of red.
Hopefully the fiddle is clear enough as it's hard to explain this in words.
Solution 3:
z-index:0
is always the "default layer" (the layer in which all elements without an explicit z-index
reside), and z-index:auto
means: "Sets the stack order equal to its parent".
Since all the children of a parent by default start in the "z-layer 0" - relative to their parent, then, in-affect, z-index:auto
and z-index:0
means the same thing: they will both be in the same "layer", and their stacking order will be according to the default stacking rules, which you can see here.
Solution 4:
z-index: auto
Sets the stack order equal to its parents. This is default.
z-index:0
does nothing
z-index:not
Sets the stack order equal to its parents same as auto.
z-index:inherit
Specifies that the z-index should be inherited from the parent element
Reference for further reading and testing:
Solution 5:
n CSS, you can position 2 or more objects to overlap each other. Their z-indexes determine which objects are "in front of" or "behind" other objects that they overlap. The higher an object's z-index, the "higher in the stack" of objects it will display
Post a Comment for "Difference Between Auto, 0, And No Z-index?"