2010-06-30 3 views

ответ

4

Это не проблема, это дизайнерское решение. Это означает: когда соседние элементы имеют поля, которые «касаются», два поля сворачиваются в одно и то же пространство. Так, например:

_____ 
| A | Element A has 20-px bottom margin 
|___| 

     <-- space between elements is 20, not 40 
_____ 
| B | Element B has 20-px top margin 
|___| 

Поля «рухнули» вместе. Спецификация CSS требует, чтобы браузеры вели себя таким образом по дизайну. Это действительно хорошая вещь и полезно, когда вы понимаете, когда и как это происходит.

+0

Почему это хорошая вещь? Я думаю, что это был вопрос, на который начинался исходный вопрос. – Magne

+0

@Magne - причина масштабируемости дизайна. Истинная сила CSS начинает проявляться, когда мы используем ее для написания правил общего назначения о том, как должны отображаться определенные * виды * элементов, не зная точно, как эти элементы будут размещаться на определенной странице. Целью поля является создание ** желоба ** между элементами. В конструкторских спецификациях принято говорить, что водосточный желоб должен быть точным (x) пикселями - таким образом, коллапсирование гарантирует, что правильно спроектированные поля на непредсказуемых элементах никогда не превысят желаемого размера желоба. –

+0

Спасибо за указание на аспект обобщаемости. Я вижу, что это хорошо. Меня просто раздражает тот факт, что все еще нужно точно знать, как некоторые элементы расположены на определенной странице, так как сбрасывание полей зависит от соседних элементов (т. Е. Встроенных блоков против блоков). – Magne

Смежные вопросы