Чтобы высота #outer
основывалась на его содержимом, а высота #inner
была основана на этом, сделайте оба элемента абсолютно позиционированными.
Более подробную информацию можно найти в спецификации для свойство css height , но, по сути, #inner
должно игнорировать #outer
height, если высота #outer
равна auto
, , если #outer
не расположен абсолютно.Тогда высота #inner
будет равна 0, , если только #inner
не позиционируется абсолютно.
<style>
#outer {
position:absolute;
height:auto; width:200px;
border: 1px solid red;
}
#inner {
position:absolute;
height:100%;
width:20px;
border: 1px solid black;
}
</style>
<div id='outer'>
<div id='inner'>
</div>
text
</div>
Однако ... Если позиционировать #inner
абсолютно, настройка float
будетигнорировать, поэтому вам нужно будет явно выбрать ширину для #inner
и добавить отступ в #outer
, чтобы подделать перенос текста, я подозреваю, что вы хотите.Например, ниже, отступ #outer
равен ширине #inner
+3.Удобно (поскольку весь смысл заключался в том, чтобы получить #inner
высоту до 100%), нет необходимости переносить текст под #inner
, поэтому это будет выглядеть так же, как #inner
плавает.
<style>
#outer2{
padding-left: 23px;
position:absolute;
height:auto;
width:200px;
border: 1px solid red;
}
#inner2{
left:0;
position:absolute;
height:100%;
width:20px;
border: 1px solid black;
}
</style>
<div id='outer2'>
<div id='inner2'>
</div>
text
</div>
Iудалил мой предыдущий ответ, так как он основывался на слишком большом количестве неверных предположений о вашей цели.