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-indexis 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?"