• 清除浮动的方法(最常用的4种)


    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
    本文链接:https://blog.csdn.net/h_qingyi/article/details/81269667
    为什么要清除浮动?

    清除浮动主要是为了解决,父元素因为子级元素浮动引起的内部高度为0的问题

    1.如下,我给父盒子设置一个boder,内部放两个盒子一个big 一个small,未给big和small设置浮动,则他们会默认撑开父盒子

     

    2.当我给内部两个盒子加上float属性的时候

     

    顶部深蓝色盒子就会顶上来,然后父盒子因为没设置高度,变成一条线,big和small已经浮动了

    总结一下:

    当父元素不给高度的时候,

    内部元素不浮动时会撑开

    而浮动的时候,父元素变成一条线

    这时候很多人会想到新建标签clear:both和float 方法,但是这两种方法并不推荐使用!

    什么是clear:both

    clear:both:本质就是闭合浮动, 就是让父盒子闭合出口和入口,不让子盒子出来

    清除浮动的方法(最常用的4种)
    1.额外标签法(在最后一个浮动标签后,新加一个标签,给其设置clear:both;)(不推荐)

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
    .fahter{
    400px;
    border: 1px solid deeppink;
    }
    .big{
    200px;
    height: 200px;
    background: darkorange;
    float: left;
    }
    .small{
    120px;
    height: 120px;
    background: darkmagenta;
    float: left;
    }
    .footer{
    900px;
    height: 100px;
    background: darkslateblue;
    }
    .clear{
    clear:both;
    }
    </style>
    </head>
    <body>
    <div class="fahter">
    <div class="big">big</div>
    <div class="small">small</div>
    <div class="clear">额外标签法</div>
    </div>
    <div class="footer"></div>
    </body>
    </html>


    此时

     

     如果我们清除了浮动,父元素自动检测子盒子最高的高度,然后与其同高。

    优点:通俗易懂,方便

    缺点:添加无意义标签,语义化差

    不建议使用。

    2.父级添加overflow属性(父元素添加overflow:hidden)(不推荐)

    通过触发BFC方式,实现清除浮动

    .fahter{
    400px;
    border: 1px solid deeppink;
    overflow: hidden;
    }
    优点:代码简洁

    缺点:内容增多的时候容易造成不会自动换行导致内容被隐藏掉,无法显示要溢出的元素

    不推荐使用

    {

    什么是BFC

     BFC:块级格式化上下文,它是指一个独立的块级渲染区域,只有Block-level BOX参与,该区域拥有一套渲染规则来约束块级盒子的布局,且与区域外部无关。

    在一个Web页面的CSS渲染中,块级格式化上下文 (Block Fromatting Context)是按照块级盒子布局的。W3C对BFC的定义如下:

    浮动元素和绝对定位元素,非块级盒子的块级容器(例如 inline-blocks, table-cells, 和 table-captions),以及overflow值不为“visiable”的块级盒子,都会为他们的内容创建新的BFC(块级格式上下文)。
    

    为了便于理解,我们换一种方式来重新定义BFC。一个HTML元素要创建BFC,则满足下列的任意一个或多个条件即可:

    1、float的值不是none。
    2、position的值不是static或者relative。
    3、display的值是inline-block、table-cell、flex、table-caption或者inline-flex
    4、overflow的值不是visible

    BFC是一个独立的布局环境,其中的元素布局是不受外界的影响,并且在一个BFC中,块盒与行盒(行盒由一行中所有的内联元素所组成)都会垂直的沿着其父元素的边框排列。

    怎么创建BFC

    要显示的创建一个BFC是非常简单的,只要满足上述4个CSS条件之一就行。例如:

    <div class="container">
      你的内容
    </div>
    

    在类container中添加类似 overflow: scroll,overflow: hidden,display: flex,float: left,或 display: table 的规则来显示创建BFC。虽然添加上述的任意一条都能创建BFC,但会有一些副作用:

    1、display: table 可能引发响应性问题
    2、overflow: scroll 可能产生多余的滚动条
    3、float: left 将把元素移至左侧,并被其他元素环绕
    4、overflow: hidden 将裁切溢出元素

    }

    3.使用after伪元素清除浮动(推荐使用)

    .clearfix:after{/*伪元素是行内元素 正常浏览器清除浮动方法*/
    content: "";
    display: block;
    height: 0;
    clear:both;
    visibility: hidden;
    }
    .clearfix{
    *zoom: 1;/*ie6清除浮动的方式 *号只有IE6-IE7执行,其他浏览器不执行*/
    }

    <body>
    <div class="fahter clearfix">
    <div class="big">big</div>
    <div class="small">small</div>
    <!--<div class="clear">额外标签法</div>-->
    </div>
    <div class="footer"></div>
    </body>
    优点:符合闭合浮动思想,结构语义化正确

    缺点:ie6-7不支持伪元素:after,使用zoom:1触发hasLayout.

    推荐使用

    4.使用before和after双伪元素清除浮动

    .clearfix:after,.clearfix:before{
    content: "";
    display: table;
    }
    .clearfix:after{
    clear: both;
    }
    .clearfix{
    *zoom: 1;
    }

    <div class="fahter clearfix">
    <div class="big">big</div>
    <div class="small">small</div>
    </div>
    <div class="footer"></div>
    优点:代码更简洁

    缺点:用zoom:1触发hasLayout.

    推荐使用
    ————————————————
    版权声明:本文为CSDN博主「h_qingyi」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/h_qingyi/article/details/81269667

  • 相关阅读:
    几个容易混淆的集合类
    ajax操作时用于提高用户体验的两段备用代码
    word-wrap和word-break的区别
    清除MAC OS X上的流氓软件
    Windows Azure IP地址详解
    实现跨云应用——基于DNS的负载均衡
    Windows Azure虚拟机和云服务实例计费方式更新
    证明你是你——快速开启Windows Azure多重身份验证
    Windows 10 L2TP 809错误
    新版Microsoft Azure Web管理控制台
  • 原文地址:https://www.cnblogs.com/SallyShan/p/11470549.html
Copyright © 2020-2023  润新知