Open In App

CSS z-index Property

Last Updated : 04 Jan, 2025
Summarize
Comments
Improve
Suggest changes
Like Article
Like
Share
Report
News Follow

CSS z-index is used to control the stacking order of overlapping elements, which decides whether an element appears on top or behind others based on their assigned value.

  • It works only on positioned elements (relative, absolute, or fixed).
  • Default stacking order applies if no z-index is defined.
  • The z-index property can take various values, which we’ll cover below.

Property values

These are the values of the z-index property and their descriptions:

ValueDescription
autoThe stack order is equal to that of the parent (default).
numberThe stack order depends on the number.
initialSets the property to its default value.
inheritInherits the property from the parent element.

1. Using z-index with auto

The auto value applies the default stacking order without explicitly defining the stacking context.


    <style>
        div {
            position: relative;
            width: 100px;
            height: 100px;
        }
        .box1 {
            background-color: red;
            z-index: auto;
            top: 50px;
            left: 50px;
            position: absolute;
        }
        .box2 {
            background-color: blue;
            top: 70px;
            left: 70px;
            position: absolute;
        }
    </style>

  • The red box (.box1) and blue box (.box2) overlap.
  • Since both boxes have their z-index set to auto, the default stacking order applies, and the blue box is rendered on top because it comes later in the DOM.

2. Using z-index with Numbers

Specifying numerical values controls the stacking order. Higher values stack above lower ones.


    <style>
        div {
            position: absolute;
            width: 100px;
            height: 100px;
        }
        .box1 {
            background-color: red;
            z-index: 1;
            top: 50px;
            left: 50px;
        }
        .box2 {
            background-color: blue;
            z-index: 2;
            top: 70px;
            left: 70px;
        }
    </style>

The blue box (z-index: 2) appears above the red box (z-index: 1).

3. Using z-index with initial

The initial value resets the z-index to its default value of auto.


    <style>
        div {
            position: absolute;
            width: 100px;
            height: 100px;
        }
        .box1 {
            background-color: red;
            z-index: initial;
            top: 50px;
            left: 50px;
        }
        .box2 {
            background-color: blue;
            z-index: 1;
            top: 70px;
            left: 70px;
        }
    </style>

The red box follows the default stacking order since z-index: initial resets to auto.

4. Using z-index with inherit

The inherit value ensures the element inherits its z-index value from its parent.


    <style>
        .parent {
            position: relative;
            z-index: 5;
        }
        .child {
            position: absolute;
            width: 100px;
            height: 100px;
            background-color: yellow;
            z-index: inherit;
            top: 50px;
            left: 50px;
        }
    </style>

The child element inherits the z-index value (5) from its parent.

5. Combining z-index with Multiple Contexts

When working with multiple stacking contexts, the z-index applies only within its context.


    <style>
        .parent {
            position: relative;
            z-index: 1;
            background-color: lightgray;
            width: 200px;
            height: 200px;
        }

        .child1 {
            position: absolute;
            z-index: 2;
            background-color: red;
            width: 100px;
            height: 100px;
        }
        .child2 {
            position: absolute;
            z-index: 1;
            background-color: blue;
            width: 100px;
            height: 100px;
            top: 50px;
            left: 50px;
        }
    </style>

The red box stacks above the blue box within the same stacking context defined by the parent element.

CSS z-index Property – FAQs

What is the z-index property in CSS?

The z-index property determines the stacking order of positioned elements on a webpage, controlling which elements appear in front of or behind others.

How does z-index affect overlapping elements?

Elements with higher z-index values are displayed above those with lower values when they overlap. This property only works on elements with a position value other than static.

Can z-index have negative values?

Yes, assigning a negative z-index value positions an element behind others with non-negative z-index values, allowing for more complex layering.

Why isn’t my z-index working as expected?

Ensure the element has a position property set to relative, absolute, fixed, or sticky, as z-index does not apply to statically positioned elements.

What is a stacking context in CSS?

A stacking context is a hierarchy of elements with a common parent that determines their z-index ordering. Certain properties, like position and z-index, can create new stacking contexts, affecting how elements are layered



Next Article

Similar Reads

three90RightbarBannerImg