Ответ 1
Этот вопрос можно решить несколькими способами, но на самом деле, зная правила стекирования, вы можете найти лучший ответ, который будет работать для вас.
Решение
Элемент <html>
- это ваш единственный контекст стекирования, поэтому просто следуйте правилам стекирования в контексте стекирования, и вы увидите, что элементы сложены в этом порядке
- Корневой элемент контекста контекста (элемент
<html>
в этом случае)- Позиционированные элементы (и их дочерние элементы) с отрицательными значениями z-индекса (более высокие значения складываются перед более низкими значениями, элементы с одинаковым значением складываются в соответствии с внешним видом в HTML)
- Непоставленные элементы (упорядоченные по внешнему виду в HTML)
- Позиционированные элементы (и их дочерние элементы) с z-индексом значения auto (упорядочены по внешнему виду в HTML)
- Позиционированные элементы (и их дочерние элементы) с положительными значениями z-индекса (более высокие значения складываются перед более низкими значениями, элементы с одинаковым значением складываются в соответствии с внешним видом в HTML)
Итак, вы можете
- установите z-индекс -1, для
#under
расположен -ve z-index появится за нерасположенным элементом#over
- установите положение
#over
вrelative
, чтобы к нему применилось правило 5
Реальная проблема
Разработчики должны знать следующее, прежде чем пытаться изменить порядок укладки элементов.
- Когда создается контекст укладки
- По умолчанию элемент
<html>
является корневым элементом и является первым контекстом стекирования
- По умолчанию элемент
- Порядок укладки в контексте стекирования
Ниже перечислены правила контекста укладки и стекирования из этой ссылки
Когда создается контекст укладки
- Когда элемент является корневым элементом документа (элемент
<html>
) - Если элемент имеет значение позиции, отличное от статического, и значение z-index, отличное от auto
- Когда элемент имеет значение непрозрачности менее 1
- Несколько новых свойств CSS также создают контексты стекирования. К ним относятся: преобразования, фильтры, css-регионы, постраничные медиа и, возможно, другие. https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context
- Как правило, кажется, что если для свойства CSS требуется рендеринг в внеэкранном контексте, он должен создать новый контекст стекирования.
Порядок стекирования в контексте стека
Порядок элементов:
- Корневой элемент контекста стекирования (элемент
<html>
по умолчанию является единственным стекирующим контекстом, но любой элемент может быть корневым элементом для контекста стекирования, см. правила выше)- Нельзя поместить дочерний элемент за элемент контекста корневого стека
- Позиционированные элементы (и их дочерние элементы) с отрицательными значениями z-индекса (более высокие значения складываются перед более низкими значениями, элементы с одинаковым значением складываются в соответствии с внешним видом в HTML)
- Непоставленные элементы (упорядоченные по внешнему виду в HTML)
- Позиционированные элементы (и их дочерние элементы) с z-индексом значения auto (упорядочены по внешнему виду в HTML)
- Позиционированные элементы (и их дочерние элементы) с положительными значениями z-индекса (более высокие значения складываются перед более низкими значениями, элементы с одинаковым значением складываются в соответствии с внешним видом в HTML)