web容器如何自适应视口大小

果然,过了一会儿,在那个地方出现了太阳的小半边脸,红是红得很,却没有亮光。太阳像负着什么重担似的,慢慢儿,一纵一纵地,使劲儿向上升。

前言

在前端生涯上,经常会遇到需要容器自适应视口高度这种情况,本文将介绍我能想到的解决这个问题的方案。

基础知识

html元素的高度默认是auto(被内容自动撑开),宽度默认是100%(等于浏览器可视区域宽度),没有margin和padding;

body元素的高度默认是auto,宽度默认是100%,有margin而没有padding;

若想让一个块元素(如div)的高度与屏幕高度自适应,始终充满屏幕,需要从html层开始层层添加height=100%,而又因为html,body元素的width默认就是100%,因此在里面的div 设定width=100%时就能和屏幕等宽。

方法一:继承父元素高度

给html、body标签添加css属性height=100%,然后在需要撑满高度的容器添加css属性height=100%,如下:

    <html>
        <body>
            <div class="example">
            </div>
        </body>
    <html>
    html{
        height:100%;//让html的高度等于屏幕
    }

    body{
        height:100%;
        margin:0;
    }

    .example{
        width: 100%;
        height:100%;
        background:rgb(55, 137, 243);
    }

注意:添加类名.example的元素必须是块级元素而且需要是body的直接子元素,也就是要设置height=100%,其父元素必须有高度

方法二:使用绝对定位(absolute)

给需要撑满的容器添加绝对定位(absolute),然后设置top、left、right、bottom分别为0,如下:

    <html>
        <body>
            <div class="example">
            </div>
        </body>
    <html>
    .example{
        position: absolute;
        top:0;
        left:0;
        bottom:0;
        right:0;
        background:rgb(55, 137, 243);
    }

注意:若目标元素的父级元素没有设置过相对定位(relative)或绝对定位(absolute),那么目标元素将相对于html定位,html不需要设置宽高;否则相对于其设置过相对定位(relative)或绝对定位(absolute)的父级元素定位,且其父级元素必须有宽度和高度,如下:

    <html>
        <body>
            <div class="example2">
                <span class="example"></span>
            </div>
        </body>
    <html>
    .example2{
        position: relative;
        width:100%;
        height:100px;
    }
    .example{
        position: absolute;
        top:0;
        left:0;
        bottom:0;
        right:0;
        background:rgb(55, 137, 243);
    }

方法三:使用固定定位(fixed)

给需要撑满的容器添加绝对定位(absolute),然后设置top、left、right、bottom分别为0,如下:

    <html>
        <body>
            <div class="example">
            </div>
        </body>
    <html>
    .example{
        position: fixed;
        top:0;
        left:0;
        bottom:0;
        right:0;
        background:rgb(55, 137, 243);
    }

注意:使用fixed后,不需要理会父级元素是否有定位属性,均能撑满浏览器可视区域,但目标元素不随滚动容器的滚动而滚动

方法四:使用flex布局

给需要撑满的容器的父元素添加display:flex,然后给撑满的元素添加flex:1 1 auto,如下:

    <html>
        <body>
            <div class="example">
            </div>
        </body>
    <html>
    html,body{
      width:100%;
      height:100%;
    }
    body{
      display: flex;
    }
    .example{
      background:#fc1;
      flex:1 1 auto;
    }

注意:使用flex同样需要父元素的有高度和宽度,否则不会撑开。

方法五:使用javascript获取浏览器高度

    <html>
        <body>
            <div class="example">
            </div>
        </body>
    <html>
    <script>
        let example = document.getElementById('example')
        let height = document.documentElement.clientHeight
        example.style.height = `${height}px`
    </script>

本文web容器如何自适应视口大小到此结束。我一直相信,不曾独自离家生活过的人,不容易长大。小编再次感谢大家对我们的支持!

您可能有感兴趣的文章
css display table 自适应高度、宽度问题的如何解决

详解CSS多种三列自适应布局如何实现

CSS如何实现三栏布局中间一栏自适应且随文字大小变化宽度的示例代码

CSS如何实现宽度自适应宽高16:9的矩形的示例

CSS 如何实现高度自适应铺满整屏的如何实现