Сообщение от Siend
|
То есть по сути элементы не должны видеть друг друга, т.е. вести себя как при position:absolute;
В чем я ошибаюсь? (а я ошибаюсь, это очевидно)
|
Тут речь идёт об элементах внутри контекста, т.е. внутри каждого из блока с одим из свойств, создающих контекст.
Может быть, спецификация прояснит лучше.
http://www.w3.org/TR/CSS21/visuren.h...ock-formatting
Вольный перевод:
Сообщение от w3c spec
|
9.4.1 Блочные контексты форматирования.
Плавающие блоки, абсолютно позиционированные элементы, блочные контейнеры (такие, как inline-block, table-cells и table-captions) не являющиеся блочными элементами, и блочные элементы с 'overflow' отличным от 'visible' (за исключением случаев, когда значение наследуется от viewport) устанавливают новые блочные контексты для их содержимого.
В блочном контексте форматирования блоки располагаются вертикально один за другим от верха родительского блока. Вертикальное расстояние между двумя соседними блоками определяется свойствами 'margin'. Вертикальные отступы между соседними блоками объединяются.
В блочном контексте форматирования каждый левый край блока касается левого края родительского блока (для выравнивания справа налево касается правым). Это верно даже в присутствии плавающего блока (при этом строчные элементы могут обтекать плавающий блок), если только блок не устанавливает новый контекст (в этом случае сам блок может обтекать плавающий блок).
|
Что и подтверждается практикой. Блочный элемент занимает всю доступную ширину с учётом плавающих блоков.
Если установить ширину 100%, то блочный элемент физически не может обтекать и смещается ниже. Ведь он принимает ширину родителя и просто не помещается.