overflow:hidden

作者: 椰果粒 | 来源:发表于2018-04-20 19:45 被阅读30次

    作用:overflow:hidden可以隐藏超出部分,清除浮动,解决塌陷

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <style type="text/css">
            .wrapper{
                width: 300px;
                height: 150px;
                background-color: yellow;
            }
            .content1{
                width: 100px;
                height: 100px;
                background-color: red;
            }
            .content2{
                width: 100px;
                height: 100px;
                background-color: green;
            }
        </style>
    </head>
    <body>
        <div class="wrapper">
            <div class="content1">1</div>
            <div class="content2">2</div>
        </div>  
    </body>
    </html>
    
    原始图
    .wrapper{
        // 给父元素添加overflow,子元素超出部分就会被隐藏了
        overflow: hidden;
    }
    
    超出隐藏
    清除浮动
    // 父元素不设置高度,子元素浮动时,给父元素添加overflow:hidden就会清除浮动
    .wrapper{
        // 给父元素添加overflow,清除浮动
        overflow: hidden;
    }
    

    参考:https://www.jianshu.com/p/1069f9cf02db
    原理:超出部分要裁切隐藏掉,如果浮动的元素不占据普通流的位置,那么没有被计算在内的浮动元素就会被裁切掉,就可能会裁切掉float,所以在没有明确设定父元素高的情况下,父元素需要计算里面内容的全部高度(浮动元素也计算)来确定在什么地方hidden,所以浮动元素的高度就被计算进去,顺便清除了浮动。
    解决塌陷
    当我们给父元素的第一个子元素设置margin-top时,按理来说应该是以下的效果:

    理想效果
    实际效果是如下样子:
    实际 效果
    从中看到:其实把父元素顶下去了。
    解决方案:给父元素添加overflow:hidden;,理由是加了overflow后就成为BFC元素了

    浮动塌陷问题及解决方式

    <div class="wrapper">
        <div class="content1">1</div>
        <div class="content2">
            <div>111</div>
            <div>222</div>
            <div>333</div>
        </div>
    </div>
    .content1{
        width: 100px;
        height: 20px;
        background-color: red;
    }
    .content2{
        width: 400px;
        background-color: green;
        /*overflow: hidden;*/
    }
    .content2 div{
        background-color: blue;
        border: 1px solid #000;
        height: 30px;
    }
    
    塌陷

    当放开右侧.content2的overflow:hidden时,.content2就成为一个BFC了,这样就不会和浮动元素重叠,从而解决了塌陷问题


    解决塌陷

    BFC
    BFC是block formatting context,可直译为块格式化上下文,定义了一块独立的渲染区域,规定了内部元素的渲染规则,渲染效果不受外部环境的干扰。

    规则:

    • 1.内部的块元素垂直放置,一个一个的
    • 2.块元素垂直方向的距离由margin决定,相邻元素的margin会重叠
    • 3.每个元素的左外边距,与包含块的左边相接触(对于从左往右的格式化,否则相反)。即使存在浮动也是如此
    • 4.BFC区域不会与float区域重合
    • 5.BFC是页面上的隔离的独立容器,容器里的子元素不会影响外部的元素,外部也不会影响里面的元素
    • 6.计算BFC的高度时,浮动元素 也计算在内

    给元素添加一下style时,该元素就会成为一个BFC元素

    • body 根元素
    • 浮动元素:float 除 none 以外的值
    • 绝对定位元素:position (absolute、fixed)
    • display 为 inline-block、table-cells、flex
    • overflow 除了 visible 以外的值 (hidden、auto、scroll)

    相关文章

      网友评论

        本文标题:overflow:hidden

        本文链接:https://www.haomeiwen.com/subject/ptkzkftx.html