Ваша основная проблема - использование процента с height
, который в вашем случае упадет до auto, поскольку для родительского элемента не определена явная высота:
Указывает процентную высоту. Процент рассчитывается относительно высоты содержащего блока сгенерированного блока. Если высота содержащего блока не указана явно (т. Е. Зависит от высоты содержимого), и этот элемент не является абсолютно позиционированным, значение вычисляется как 'auto' . ref.
В основном у вас будет что-то вроде max(auto,150px)
, которое не соответствует auto
не потому, что auto
больше 150px
, а потому, что сравнение недопустимо.
В вашем случае auto
будет логически вычислять до 0
, поскольку ваш элемент пуст.
Вот еще несколько примеров, чтобы лучше понять:
.box>div {
border: 1px solid;
height: max(40%, 50px);
width: max(40%, 50px);
background: red;
}
.box {
margin: 40px;
border: 1px solid green;
position:relative;
}
<div class="box">
<div>my height will <br>be the content height </div>
</div>
<div class="box">
the height will be 0
<div></div>
</div>
<div class="box" style="height:40px;">
<div>my height will be 50px</div>
</div>
<div class="box" style="height:0px;">
<div>my height will still be 50px</div>
</div>
<div class="box" style="height:200px;">
<div>my height will be 80px</div>
</div>
<div class="box">
<div style="position:absolute;"> My height will be 50px</div>
</div>
разве поведение ширины не должно быть одинаковым?
У нас почти никогда не возникает проблем с процентное значение внутри ширины, но оба ведут себя одинаково, и в случае, если мы не можем определить процентное значение, оно также не сможет автоматически.