Раздел 8.3.1 спецификации CSS 2.1 о сворачивании полей гласит:
Если верхнее и нижнее поля элемента с зазором прилегают друг к другу, его поля схлопываются с прилегающими полями следующих одноуровневых элементов, но полученное поле не схлопывается с нижним полем родительского блока.
Вот моя, безусловно ошибочная, попытка сделать что-то из этого утверждения:
Оператор рассматривает элемент X, для которого:
X имеет зазор, поэтому любой из вариантов «очистить: слева;», «очистить: справа»; или "очистить: оба"; к нему применены свойства.
Поскольку верхние и нижние поля X соприкасаются, в случае нормального потока мы рассматриваем сценарий, в котором:
- X has one parent above and one sibling below, or
- X имеет одного родственного брата выше и одного родственного брата ниже, или
- У X есть один родной брат выше и один родитель ниже
Затем в спецификации говорится: «Его поля схлопываются с соседними полями следующих братьев и сестер», но, как указано выше, может быть не более одного следующего брата, поэтому это по существу должно означать, что если есть соседний элемент, следующий за ним, то поле рушится.
«но это результирующее поле не сворачивается с нижним полем родительского блока». - Я не понимаю этого: если нижнее поле примыкает к верхнему полю родственного блока, то оно не может примыкать к нижнему полю родительского блока, если только высота родственного элемента не равна нулю.
Я совершенно сбит с толку. Может ли кто-нибудь объяснить это утверждение лучше, возможно, с несколькими иллюстративными примерами? Спасибо.