Читая этот очень хороший пост , в конце поста автор рассказывает о внутренней работе z-порядка, но также говорит, что если вы хотите узнать больше, в следующем будет гораздо более подробная статья
Ключевым моментом является то, что порядок на оси Z, где размещены элементы.
Вот что говорит автор:
Если мы не укажем значения z-index, порядок размещения по умолчанию
от ближайшего к пользователю до самого заднего спина выглядит следующим образом:
1. Positioned elements, in order of appearance in source code
2. Inline elements
3. Non-positioned floating elements, in order of appearance in source code
4. All non-positioned, non-floating, block elements in order of source code
5. Root element backgrounds and borders
Как мы видим, позиционируемые элементы (1) всегда находятся сверху непозиционируемых элементов (3-4). Если я добавлю div
только со свойством float
, этот элемент не будет «позиционироваться» на поверхности.
В этом случае второй элемент, мой нижний колонтитул div
, который расположен с относительным значением свойства, будет в начале предыдущего, не только я не добавляю свойство clear: both
после float
div
свойство или потому что последний добавляется после плавающего элемента, а потому что он позиционирован!
Как сказал powerbuoy, вы должны установить add относительно позиции элемента float, чтобы иметь возможность занимать верхнюю часть стека плавающего элемента. Но этого недостаточно. Поскольку эти два элемента теперь находятся на одном уровне и потому что они оба пересекают друг друга, вы должны указать движку, какой из них будет первым, и поэтому вы должны установить z-порядок в 1 для плавающего элемента снова, как сказано powerbuoy.
Я не очень хороший писатель, и поэтому я настоятельно рекомендую вам прочитать статьи, на которые я ссылался ранее. Я думаю, у вас будет очень глубокое объяснение дела.