zoukankan      html  css  js  c++  java
  • css浮动产生和清除浮动的几种方式

    浮动的语法:float:left/right;

    浮动float的原本设计了作用初衷是为了实现文字环绕效果

    浮动产生负作用:

        1、背景不能显示

        2、边框不能撑开父元素

        3、margin padding设置值不能正确显示

    浮动之后会使父元素内的子元素漂浮在父元素上方,造成父元素边框重叠。所以需要清除浮动来使子元素撑开父元素。

    简单来说浮动是因为使用了float:left或float:right或两者都是会产生的浮动。

    什么时候使用清除浮动呢?当父元素没有设置宽度或者高度的时,又需要子元素撑开父元素的时候使用清除浮动。

    演示:

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>浮动副作用</title>
     6     <style>
     7         .container{
     8             margin:40px auto;
     9             width:400px;
    10             border:5px solid grey;
    11             background: yellow;    /*背景不能显示*/
    12         }
    13         .left{float:left;width:200px;height:100px;border: 1px solid red;}
    14         .right{float:right;width:196px;height:100px;border: 1px solid red;background: blue;}  /*边框不能撑开父级元素*/
    15     </style>
    16 </head>
    17 <body>
    18     <div class="container"> 
    19         <div class="left">left浮动</div> 
    20         <div class="right">right浮动</div>
    21     </div>
    22 </body>
    23 </html>

    结果显示:

                                    

    本来俩个红色对象是在父级元素灰色盒子内的,但是因为对俩个红色盒子使用了float浮动,所以俩个盒子产生了浮动导致灰色盒子不能撑开,这样浮动就产生了。

    为了解决上面的浮动产生的副作用,本人总结了以下几个清除浮动的方式:

    1.clear:both清除浮动

    HTML代码:

    1     <div class="container"> 
    2         <div class="left">left浮动</div> 
    3         <div class="right">right浮动</div>
    4         <div class="clear"></div>
    5     </div>

    具体CSS代码:

     1     <style>
     2         .container{
     3             margin:40px auto;
     4             width:400px;
     5             border:5px solid grey;
     6             background: yellow;/*背景正常显示*/
     7         }
     8         .left{float:left;width:200px;height:100px;border: 1px solid red;}
     9         .right{float:right;width:196px;height:100px;border: 1px solid red;background: blue;}  /*边框能撑开*/
    10         .clear{clear:both;}
    11     </style>

    结果显示:                

                                   

    父级背景以及边框也能正常显示和撑开了,优点方便使用,缺点是会多加HTML空标签

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

    优点:无需额外的标签,浏览器兼容性好,是目前用的最多的一种清除浮动的方法之一,企业都在用;

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

    HTML代码:

    1     <div class="container"> 
    2         <div class="left">left浮动</div> 
    3         <div class="right">right浮动</div>
    4     </div>

    CSS代码:

     1     <style>
     2         .container{
     3             width:400px;
     4             border:5px solid grey;
     5             background: yellow;
     6         }
     7         .left{float:left;width:200px;height:100px;border: 1px solid red;}
     8         .right{float:right;width:196px;height:100px;border: 1px solid red;background: blue;}  
     9         .container:after{
    10             content:"";
    11             display: block;
    12             clear:both;
    13         }
    14         .container{    *zoom: 1;    /*ie6清除浮动的方式 *号只有IE6-IE7执行,其他浏览器不执行*/ }
    15     </style>

    结果显示:

                                

    3.对父级设置适合CSS高度

    一般设置高度需要能确定内容高度才能设置。这里我们知道内容高度是100PX+上下边框为2px,这样具体父级高度为102px,

    只需在上面的浮动缺点副作用代码中的设置类样式.container加上父级高度即可,这里我就不做过多演示了。缺点也非常明显,本人不建议这样清除浮动。

    4.对父级设置overflow:hidden

    原理:父元素定义overflow:hidden,此时,浏览器会自动检查浮动区域的高度;

    优点:简单,无需增加新的标签;

    缺点:不能和position配合使用,因为超出的尺寸的会被隐藏;

    代码也是在副作用基础上container中添加上overflow:hidden或者auto即可实现清除浮动效果

    结果显示:

                                    

    优缺点:很完美,但是属性太多;不好分别。

  • 相关阅读:
    springboot springcloud zuul 过滤器
    springboot springcloud eureka 熔断器
    javaweb servlet filter
    maven nexus 搭建私服(二)
    springboot springcloud zuul 网关入门
    springboot springcloud 配置中心
    springboot springcloud eureka 入门
    java rabbitmq
    java jvm调优
    maven nexus 搭建私服(一)
  • 原文地址:https://www.cnblogs.com/jing-tian/p/10950277.html
Copyright © 2011-2022 走看看