2013-10-04 3 views
16

Я знаю, что когда вы используете процентную высоту элемента, этот процент является процентом его родителя. Предположим, что вы хотите, чтобы ребенок был 40% его родителя. У родителя назначена максимальная и минимальная высота, но у нее нет назначенной высоты. Например:Высота процента CSS, когда родитель имеет минимальную/максимальную высоту

<div id="container"> 
    <div id="one"> 
    <div id="two"></div> 
    </div> 
</div> 

Css

#container{ 
    height: 500px; 
    background: yellow; 
} 
#one{ 
    background: red; 
    min-height:100px; 
    max-height: 50%; 
    padding: 10px; 
} 
#two{ 
    background: blue; 
    height: 40%; 
} 

Div два не появится. Когда вы меняете css своего родителя (div one) из этого max-height:50% на это: height:50% div two появится, потому что он знает, какова высота его родителя, потому что он явно определен. Мой вопрос, есть ли способ сделать DIV два появляются при использовании (min/max)-height и не height

Вот fiddle

+0

Не меняйте, добавляйте; http://jsfiddle.net/V78Kx/ –

+0

@DanHeberden Спасибо, но я не хочу, чтобы div был всегда 50%. Я хочу, чтобы он мог варьироваться от 100 до 50%. –

+0

Как это изменится? Установка 'height: 50%' и 'min-height: 100px' будет содержать мин, если размер' # container' изменяется; Я полагаю, я не понимаю, как изменчивость будет затронута с фиксированной высотой 500 пикселей на родительском:/ –

ответ

0

Если вы не указать высоту, или указать высоту percetage, но не давая его parenet указать высоту, элемент блока будет изменять размер до высоты содержимого (0px для #two в этом случае).

Longer Explain

Так просто установить высоту мин-высоту, потому что высота DOM будет начинаться с мин-высота без указания высоты.

jsFiddle

#one{ 
    background: red; 
    min-height: 100px; 
    height: 100px; 
    max-height: 50%; 
    padding: 10px; 
} 
+0

В вашей скрипке есть javascript ... Также вы можете указать высоту родителей в процентах. –

7

Проверьте это, вы упускаете один маленький кусочек. Предположим, вы хотите установить высоту #one по сравнению с #container и #two по сравнению с #one (вот что я думаю, что вы собираетесь). Нам нужна инструкция высоты #one, чтобы получить высоту от #two. Трюк здесь заключается в том, чтобы установить максимальную высоту, минимальную высоту и высоту элемента, тем самым давая ему высоту, которая ограничена минимальным и максимальным.

Попробуйте CSS:

<style> 
#container{ 
    height: 74vh; 
    background: yellow; 
} 
#one{ 
    background: red; 
    min-height:100px; 
    max-height: 50%; 
    height: 100%; 
    padding: 10px; 
} 
#two{ 
    background: blue; 
    height: 40%; 
} 
</style> 

Высота никогда не достигается, потому что она ограничена максимальной высотой, но без объявления высоты это высота: авто, которая необъявленная. Я установил высоту #container как 74vh, чтобы сделать все это отзывчивым в соответствии с размером окна просмотра.

+0

это неплохая идея! – Johannes

+0

Dat аккуратный трюк. Я просто добавил 'height: 100vh;' к элементу с 'max-height' и бумом:' height' работает с его дочерними элементами. – Thomas

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