У меня есть три вложенных элементов DIV, как это:Маржа внутренней Div влияет на внешний DIV
<div id="outer">
<div id="innerA">
<div id="innerB">
This<br/>is<br/>a<br/>multiline<br/>testcase.<br/>
This<br/>is<br/>a<br/>multiline<br/>testcase.<br/>
</div>
</div>
</div>
#innerA
имеет высоту 100%
, что делает его столь же большим, как #outer
. Высота #innerB
оставлена равной auto
, поэтому она становится такой же высокой, как и ее содержимое. Теперь, когда я установил #innerB
, чтобы иметь margin-top: 10px
, например, я ожидал бы, что #innerB
получит маржу по отношению к #innerA
. Вместо этого происходит то, что #innerA
получает этот запас по отношению к #outer
.
Как это возможно? Похоже, что это не имеет никакого отношения к box-sizing
, по крайней мере, его невозможно устранить.
Вот CSS:
#outer {
width: 500px;
height: 300px;
background: yellow;
overflow: auto;
}
#innerA {
width: 100%;
height: 100%;
background: green;
}
#innerB {
margin-top: 10px;
background: blue;
}
и скрипку:
(Здесь я бы ожидать, что зеленый ДИВ подходит желтый один, и что есть 10px из зеленого один видимый над синим DIV).
+1 для ударяя ноготь по голове – SW4
Так что не обойти это без изменения '# innerA' правильно? Какой беспорядок ... есть ли ситуация, когда это даже имеет смысл? – Chris
О, извините за плохую ссылку: http://jsfiddle.net/7e2H5/8/ Прозрачная рамка ftw! :) –