Чтобы #outer
высота основывалась на его содержимом и #inner
основывалась на его высоте, сделайте оба элемента абсолютно позиционированными.
Больше подробностей можно найти в спецификации для свойства css height , но, по сути, #inner
должно игнорировать #outer
высоту, если есть #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>
Я удалил свой предыдущий ответ, так как он основывался на слишком многих неверных предположениях о вашей цели.