Недавно я осветил интересную статью о свойстве CSS z-index. Я нашел это, потому что я искал ответ о том, почему переполненный текст из предыдущего div был отображен над фоном следующего div, но не выше фона span в следующем div, как здесь (jsfiddle):
#overflowed {
background-color: green;
width: 300px;
height: 100px;
}
#non-floated {
background-color: pink;
width: 300px;
}
#non-floated span {
background-color: yellow;
}
Объяснение этому состоит в том, что браузер рисует элементы в определенном порядке, который основан на так называемом порядке укладки:
Итак, для корневого элемента в макете и каждом позиционированном элементе браузер создает такой порядок укладки, а затем рисует все эти заказы, извините за каламбур, соответствующий порядок.
Вот почему встроенные элементы и текст (те, которые создают встроенные ящики) вычерчены над элементами уровня блока, даже если эти элементы блока появляются позже в документе, как в моем jsfiddle выше.
Итак, сам вопрос.
Я все еще не могу найти ответ, почему эти встроенные ящики, если они созданы, для встроенных элементов и текста внутри плавающего элемента не нарисованы с другими встроенными блоками, которые находятся за пределами плавающего элемента в соответствии с схема выше порядка укладки, как здесь (jsfiddle):
#overflowed {
background-color: green;
width: 300px;
height: 100px;
}
#floated {
background-color: pink;
width: 300px;
float: left;
}
#floated span {
background-color: yellow;
}
Здесь вы можете четко видеть, что текст из первого div в документе, который не плавает, нарисован выше (после) желтого фона диапазона, тогда как span является встроенным элементом и в соответствии с изображением предполагается, что порядок укладки выше, после флотируемого контейнера (его фон и границы).
У кого-нибудь есть доказанное объяснение этому? Я полагаю, что плавающие элементы создают что-то вроде своего собственного порядка укладки, например, позиционированные элементы, но я еще не нашел упоминания об этом в Интернете.