Свертывание полей CSS

Итак, по сути, происходит ли схлопывание полей, когда вы не устанавливаете какие-либо поля, отступы или границы для данного элемента div?

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
25
0
18 348
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

"the expression collapsing margins means that adjoining margins (no non-empty content, padding or border areas or clearance separate them) of two or more boxes (which may be next to one another or nested) combine to form a single margin."

Источник: Коробчатая модель - 8.3.1 Сворачивающиеся поля

Ответ принят как подходящий

Нет. Если у вас есть два смежных вертикальных поля, используется большее из двух, а другое игнорируется.

Так, например, если у вас есть два элемента блочного отображения, A, за которым следует B под ним, и A имеет нижнее поле 3em, а B имеет верхнее поле 2em, тогда расстояние между ними будет 3em. .

Если вы установите границу или отступ, это предотвратит сворачивание. В приведенном выше примере расстояние между двумя элементами будет 5em.

Если вы не установите поля, они не будут разрушаться. Он не имеет никакого отношения к используемому типу элемента - он применим ко всем типам элементов, а не только к элементам <div>.

Прочтите спецификация CSS 2.1 для более подробной информации.

Проголосует за ответ с учетом нескольких изменений: 1. В примере «3em / 2em» вы можете вместо этого использовать абсолютные единицы; в этом случае 2em / может / быть больше, чем 3em 2. «Если вы установите границу или отступ ...» - это верно только в определенных случаях, а не в стандартном «A, за которым следует B».

Bobby Jack 15.01.2009 14:56

3. "Если вы не устанавливаете ..." обычно верно для DIV, но сжимание полей БУДЕТ влиять на большинство элементов по умолчанию.

Bobby Jack 15.01.2009 14:58

+1 - хороший ответ. Кроме того, сворачивание полей не происходит, когда элементы перемещаются, абсолютно позиционированы или встроены в блок. Более подробная информация: reference.sitepoint.com/css/collapsingmargins

stephen.hanson 23.04.2013 23:25

@ steve.hanson ... или иметь overflow: hidden

matewka 22.05.2014 17:15

это верно только в том случае, если они следуют друг за другом, но не верно, если у вас есть элемент блока с полем 2em внутри элемента, у которого нет поля (0em), тогда поле внутреннего элемента блока все равно будет 0em . Так что это не всегда будет большим из двух. Пример: jsfiddle.net/56maenuL

Roland 04.01.2017 23:06

Другие вопросы по теме