今天重寫了一個移動端的頁面,改完后才發現頁面中間需要自適應高度,傳統的獲取高度設置方法並不能實現頁面想要的效果,便對原有頁面樣式進行了一下研究,發現原有頁面是用flex布局實現自適應,於是照搬寫法,卻始終無法向原有頁面一樣自適應高度,但寫法都是一樣的,最后仔細將頁面的結構性元素的樣式嘗試修改了一邊,才發現原因:flex做自適應時,html和body需要先設置為100%,否則下面的子元素無法獲取到高度。具體看代碼:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
html,body{
height: 100%;
}
*{
margin: 0;
padding: 0;
}
.wap{
display: flex;
flex-direction:column;
height: 100%;
}
.item1{
background: red;
}
.item2{
background: green;
}
.item3{
flex: 1;
-webkit-box-flex: 1;
background: blue;
overflow-y: auto;
}
.item4{
height: 50px;
width: 100%;
background: chartreuse;
}
</style>
</head>
<body>
<div class="wap" >
<div class="item1"></div>
<div class="item2">
<div>
<input type="text" placeholder="1111">
</div>
</div>
<div class="item3">
</div>
<div class="item4"></div>
</div>
</body>
</html>
實現效果如下:(將綠色部分內容刪除后,中間藍色部分會自動填充到上面去)


