移動端flex佈局高度自適應問題解決

今天重寫了一個移動端的頁面,改完後才發現頁面中間需要自適應高度,傳統的獲取高度設置方法並不能實現頁面想要的效果,便對原有頁面樣式進行了一下研究,發現原有頁面是用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>

  實現效果如下:(將綠色部分內容刪除後,中間藍色部分會自動填充到上面去)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章