需求为父元素高度不确定,子元素高度也不确定,但是父元素和子元素都有最小高度的要求,父元素和子元素的高度均需要根据子元素中的内容高度的变化而进行变化
首先需要给父元素加上min-height属性,同时加上display:flex属性,子元素不能设置高度,但是可以设置最小高度min-height,此时该值最小为父元素的最小高度,只有大于父元素的最小值时才会起作用,子元素高度默认为100%
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<div class="box">
<div class="child">
<div class="item">子元素的子元素</div>
</div>
</div>
</body>
<style>
.box{
min-height: 200px;
width: 300px;
margin: 100px;
border: #0066CC 2px solid;
display: flex;
}
.child{
width: 100px;
min-height: 220px;
background: #ccc;
display: flex;
}
.item{
width: 100%;
height: 100px;
background: #DD1100;
}
</style>
</html>
效果图
此方法有限制,父元素中只能有一个子元素,如果要做其他布局,可以使用定位
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<div class="box">
<div class="child">
<div class="item">菜单区域</div>
</div>
<div class="child-position">
内容区域
</div>
</div>
</body>
<style>
.box{
min-height: 200px;
width: 300px;
margin: 100px;
border: #0066CC 2px solid;
display: flex;
position: relative;
}
.child{
width: 100px;
min-height: 220px;
background: #ccc;
display: flex;
}
.item{
width: 100%;
height: 50px;
line-height: 50px;
background: #DD1100;
border-bottom: #CCCCCC 1px solid;
}
.child-position{
position: absolute;
width: 200px;
height: 100%;
top: 0;
right: 0;
background: #44AA77;
}
</style>
</html>
效果图
多个item的效果图