高度自适应的div

时间:2020-12-29 15:00:04

需求:有一个高度自适应的div,里面有两个div,一个高度100px,希望另一个填满剩下的高度

1.用flex 来实现

思路:flex 垂直布局(column),第一个元素固定高度,第二个元素flex-shrink 设为1,自动放大填充父容器。

    <div class="parent">
<div class="child">this is a</div>
<div class="child">this is b</div>
</div>
html,body{
height: 100%; width:100%;
margin:;
padding:;
}
.parent{
display: flex;
flex-direction: column;
height: 100%;
}
.child{
border: 1px solid;
}
.child:nth-child(1){
height: 100px;
}
.child:nth-child(2){
flex:;
}

2.设置容器和绝对定位来实现

思路:容器padding-top 100px,并且设置border-box,第一个元素绝对定位 100px,第二个元素100%

a.容器留出100px位置,
b.元素绝对定位,放到容器预留的位置上

    <div class="parent">
<div class="child">this is a</div>
<div class="child">this is b</div>
</div>
html,body{
height: 100%;
width:100%;
margin:;
padding:;
}
.parent{
height: 100%;
box-sizing: border-box;/* 重要 */
padding-top:100px;/* 重要 */
} .child:nth-child(1){
height: 100px;
width: 100%;
position: absolute;/* 重要 */
top:;
left:; background: #c569b1;
}
.child:nth-child(2){
height: 100%;
background: #9ecc44;
}

3.设置容器和偏移来实现:

和第2种思路一样,用偏移来实现

    <div class="parent">
<div class="child">this is a</div>
<div class="child">this is b</div>
</div>
html,body{
height: 100%;
width:100%;
margin:;
padding:;
}
.parent{
height: 100%;
box-sizing: border-box;/* 重要 */
padding-top:100px;/* 重要 */
} .child:nth-child(1){
height: 100px;
width: 100%;
margin-top: -100px; background: #c569b1;
}
.child:nth-child(2){
height: 100%;
background: #9ecc44;
}