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