Если мы используем z-index в сочетании с position: absolute;, его можно поместить ::before элемента под собой. Есть хороший пример в другом вопросе (jsfiddle.net/Ldtfpvxy).
В основном
<div id="element"></div>
#element {
position: relative;
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 */
}
оказывает:

Таким образом, контекст/порядок стекирования определяется z-index. Но когда я применяю z-index: 1; к элементу и z-index: -1; к его ::before, я не могу добиться того же.
Только если я опускаю z-index из элемента.
Любые идеи, почему это так? Является ли элемент визуализированным после его псевдонимов ::before и ::after, поэтому они получают одинаковый z-index?
Работа: https://jsfiddle.net/Ldtfpvxy/
Не работает: https://jsfiddle.net/Ldtfpvxy/1/ (добавлен только элемент z-index: 1; в элемент)