移动端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;
             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>

  实现效果如下:(将绿色部分内容删除后,中间蓝色部分会自动填充到上面去)

原文地址:https://www.cnblogs.com/xiaojianwei/p/15605843.html