2013-12-15 1 views
1

Существует блок-:обивка на родительском оборота края ребенка в высоту expandation

<div class="block"> 
    <p>this is a paragraph this is a paragraph</p> 
</div> 

И его стиль:

.block{background:gray; width:300px} 
p{margin-top:50px} 

Это результат:

without padding on parent

Ну, но когда я добавляю padding-top в .block, результат отличается:

.block{background: gray; width:300px; padding-top:1px} 
p{margin-top:50px;} 

Результат:

by adding padding to parent

Похоже, что, добавляя отступы к родителю, запас ребенка (р) в результате расширения.

Вы можете оформить на скрипки: http://jsfiddle.net/YFU2f/2/ и http://jsfiddle.net/YFU2f/3/

+0

Но, что это вопрос? Почему это происходит? –

+0

@CarloCannas yes –

ответ

1

По умолчанию, соседние поля коллапса, когда вы приведете отступы между ними, они не являются больше смежными, поэтому они становятся отдельными.

В вашем примере верхнее поле, которое вы определили на элементе p, обрушивается с верхним краем элемента body (как правило, 8 пикселей по умолчанию), поэтому в конце расстояние между верхней частью холста и верхняя часть поля содержимого p составляет 50 пикселей. Если вы вводите заполнение, оно становится 8px + 1px + 50px = 59px. Вы также можете заметить крах маржи, взглянув на фон div: когда маржа рушится, это похоже на то, что маржа 50px была объявлена ​​только для body.

Вы можете найти все детали в спецификации: http://www.w3.org/TR/CSS21/box.html#collapsing-margins

+0

Но почему это происходит? Почему, когда нет прокладки, край тела разрушается? –

+0

@FarzadBayan По определению просмотрите спецификации: два поля здесь соответствуют всем требованиям, определенным как _adjoining_. Если вы вводите прокладку, это отменяет второе требование: _no строковые поля, без зазоров, без отступов и без границ. Яснее? –

+0

Ну, но добавьте magin = 0 в тело, и теперь у нас есть только один запас в работе. Хорошо, теперь почему заполнение отправляет окно вверх? –

0

вам нужно использовать дисплей в качестве блока р

p{margin-top:50px;display:inline-block;} 
Смежные вопросы