Is it possible to set the stacking order of pseudo-elements below their parent element?
css, pseudo-element, z-index
Solution
Pseudo-elements are treated as descendants of their associated element. To position a pseudo-element below its parent, you have to create a new stacking context to change the default stacking order. Positioning the pseudo-element (absolute) and assigning a z-index value other than “auto” creates the new stacking context.
#element {
position: relative; /* optional */
width: 100px;
height: 100px;
background-color: blue;
}
#element::after {
content: "";
width: 150px;
height: 150px;
background-color: red;
/* create a new stacking context */
position: absolute;
z-index: -1; /* to be below the parent element */
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Position a pseudo-element below its parent</title>
</head>
<body>
<div id="element">
</div>
</body>
</html>
Problem
I am trying to style a element with the `:after` pseudo element CSS selector ``` #element { position: relative; z-index: 1; } #element::after { position:relative; z-index: 0; content: " "; position: absolute; width: 100px; height: 100px; } ``` It seems like the `::after` element can not be lower then the element itself. Is there a way to have the pseudo element lower then the element itself?
Related problems
- How to make child element higher z-index than parent?
- How to get a child element to show behind (lower z-index) than its parent?
- How to get a parent element to appear above child
- How to get a child element to show behind (lower z-index) than its parent?
- Why can't an element with a z-index value cover its child?