Как работает CSS Format Formatting Context?
Спецификации CSS2.1 говорят о том, что в контексте форматирования блока поля располагаются вертикально, начиная с вершины. Это происходит даже в том случае, если на пути есть плавающие элементы, за исключением случаев, когда блок-блок установил новый формат форматирования блока. Как мы знаем, когда браузеры отображают блок-блоки в контексте форматирования блоков, плавающий элемент опускается, почему работает установление контекста форматирования нового блока?
Как ящики (блок-боксы и встроенные ящики) выложены в нормальном потоке?
Я где-то читал, что блочные элементы генерируют блок-блоки, но плавающие элементы игнорируются, когда пользовательский агент рисует окно и учитывает их при заполнении содержимого. В то время как плавающие элементы будут перекрывать границу других элементов полей, решение устанавливает новый контекст форматирования блока для перекрывающихся элементов с помощью overflow:hidden
.
"Новый формат форматирования блоков по-прежнему является форматированием блоков", поэтому при рисовании окна он также будет обрабатывать плавающий элемент так, как будто он не выходит. Это правильно или я неправильно понял "новый формат форматирования блоков?"
Обновление: больше вопросов
Говоря "Это поведение, которое полезно для макетов столбцов в стиле столбцов. Основное его использование заключается в том, чтобы остановить поплавки, скажем, в" основном содержимом "div, фактически очищая столбцы с плавающей стороной, то есть плавающие, которые появляются раньше в источнике код".
Я не понимаю смысла, я приведу пример, может быть, вы поймете меня.
.content {
background: #eee;
color #000;
border: 3px solid #444;
width: 500px;
height: 200px;
}
.float {
background: rgba(0, 0, 255, 0.5);
border: 1px solid #00f;
width: 150px;
height: 150px;
float: right;
}
p {
background: #444;
color: #fff;
}
<div class="content">
<h3>This is a content box</h3>
<p>It contains a left floated box, you can see the actual content div does go under the float, but that it is the <h3> and <p> <b>line boxes</b> that are shortened to make room for the float. This is normal behaviour.</p>
<div class="float">floated box</div>
</div>