2015-01-24 2 views
0
<div id="a"> 
    <div style="background-color: green;">content above blue div</div> 
    <div id="b">I want this as height as the #a<br /> and if bigger, I want to get<br /> scrollbars</div> 
</div> 

#a 
{ 
    height: 100px; 
    background-color: yellow; 
} 

#b 
{ 
    background-color: blue; 
} 

Fiddle: http://jsfiddle.net/29ao3oLq/1/Как сделать 100% высоту внутри div?

содержание в голубом DIV может быть больше, и я хочу быть в высоту, как желтый DIV в настоящее время. Но я не знаю высоты, потому что есть зеленый div с неизвестной высотой.

+0

Является ли высота для '# a' (100px) фиксированным значением? что происходит, это высота зеленого div, а синий div - более 100 пикселей, вы ожидаете полосу прокрутки? –

+0

Что определяет высоту зеленой полосы? Является ли динамический контент разной высотой? – Mouser

+0

@MarcAudet да, да –

ответ

2

Если вы добавите пару элементов-оберток, вы можете реализовать этот макет с помощью таблиц CSS.

Возможно, вам понадобится изменить это, если ваш контент очень длинный (для появления полос прокрутки).

#a { 
 
    height: 100px; 
 
    width: 100%; 
 
    background-color: yellow; 
 
    display: table; 
 
} 
 
#b { 
 
    background-color: blue; 
 
    height: 100%; 
 
} 
 
#a div.row { 
 
    display: table-row; 
 
} 
 
#a div.row div { 
 
    display: table-cell; 
 
}
<div id="a"> 
 
    <div class="row r1"> 
 
    <div style="background-color: green;">content above blue div<br>more stuff</div> 
 
    </div> 
 
    <div class="row r2"> 
 
    <div id="b">I want this as height as the #a 
 
     <br />and if bigger, I want to get 
 
     <br />scrollbars</div> 
 
    </div> 
 
</div>

3

Этот CSS, используя Flexbox должны это сделать.

#a 
{ 
    height: 100px; 
    background-color: yellow; 
    display: flex; 
    flex-direction: column; 
    justify-content: flex-start; /* align items in Main Axis */ 
    align-items: stretch; /* align items in Cross Axis */ 
    align-content: stretch; /* Extra space in Cross Axis */  

} 

#c 
{ 
    background-color: green; 

} 

#b 
{ 
    background-color: blue; 
    overflow: auto; 
    flex: 1; 
} 

Маленькая адаптация к HTML:

<div id="a"> 
    <div id="c" >content above blue div</div> 
    <div id="b">I want this as height as the #a<br /> and if bigger, I want to get<br /> scrollbars<br /> scrollbars<br /> scrollbars<br /> scrollbars<br /> scrollbars<br /> scrollbars<br /> scrollbars</div> 
</div> 

Подробнее: http://css-tricks.com/snippets/css/a-guide-to-flexbox/

Посмотри: http://jsfiddle.net/29ao3oLq/3/

Ура!

+1

Что мне нравится в вашем ответе, так это то, что ему не нужна дополнительная надбавка. Единственным (временным) ограничением является то, что flex не поддерживается полностью, но это не может быть проблемой для OP. –

+0

@MarcAudet Да, я бы использовал столы год назад. Приближается почти то же самое решение. В настоящее время, если я знаю высоту нижнего колонтитула или заголовка, я использую 'calc'. Блестящая функция. Flexbox - новый парень в городе, и это хорошая функциональность. Я пытаюсь справиться с этим. – Mouser

+0

Зеленый указатель OP не имеет указанной высоты, поэтому функция 'calc' не будет работать в этом случае, наиболее неудачной. Время, когда я опираюсь на flexbox! Всего наилучшего! –

Смежные вопросы