美文网首页
*清浮动——2018-01-25

*清浮动——2018-01-25

作者: 不2青年 | 来源:发表于2018-01-25 17:54 被阅读0次

一、问题:

当给子元素加浮动的时候,因为其脱离文档流,导致父元素无法包住子元素。

代码:

<style>
    /* 父元素 */
        #box{
            width: 200px;
            margin: auto;
            border: 5px solid black;
        }
    /* 子元素 */
        #box1{
            width: 100px;
            height: 100px;
            background-color: blue;
            float: left;
        }
    </style>
QQ截图20180125164719.png

二、解决方法

1、给父元素指定高度。

弊端:扩展性太差

2、给父级元素加浮动(使得两个元素在同一层级上)

弊端:
1、margin失效
2、需要给每个父级都要加浮动,导致整个页面都要浮动,不可行。

3、给父级元素加 display: inline-block;

原理:display: inline-block;与float相近,只不过不需要脱离文档流,如果该父级元素还有父级,也不需要再添加display: inline-block;父级自然会撑起高度。
弊端:margin失效,可以认为是方法2的改进版。

3、空标签清浮动

原理:因为子元素脱离文档流,父元素的高度无人撑起,所以加一个空的div,撑起高度(使用clear:both;使得该div不与浮动元素在同一行,父级的高度自然就被该div拉开了)。

    <div id="clear"></div>
#clear{
            height: 0px;
            clear: both;
        }

弊端:IE6下存在一个最小高度问题,所有高度小于19px的元素高度都被当做19px来处理。

解决方法:

在clear的样式里面再加上font-size:0;但是用这个方法只能处理2px以上的高度,2px一下就无能为力了。

4、在浮动元素下加<br clear="all"/>

原理与方法3相同,不过就是把一个空的div换成了一个折行符。
弊端:不符合W3C的标准——结构层、样式层、行为层,相分离。

5、利用after伪类(标准方法)

具体方法:给浮动元素的父级加{zoom:1;} :after{content:"";display:block;clear:both}

<style>
      #box1{
            width: 100px;
            height: 100px;
            background-color: blue;
            float: left;
        }/* 浮动元素 */
      .clear{
            zoom: 1;
        }
      .clear:after{
            content: "";
            display: block;
            clear: both;
        }
<style/>
...
<body>
    <div id="box" class="clear">
        <div id="box1"></div>
    </div>
</body>
6、overflow溢出处理

具体方法:给父级元素加overflow,同时zoom:1;

#box{
            width: 200px;
            margin: auto;
            border: 5px solid black;
/*清浮动方法*/
            overflow: auto;
            zoom: 1;
        }

弊端:如果页面中有下拉列表,下拉列表会受到影响。

总结:

其他方法了解即可,第五种方法需要掌握。

相关文章

  • *清浮动——2018-01-25

    一、问题: 当给子元素加浮动的时候,因为其脱离文档流,导致父元素无法包住子元素。 代码: 二、解决方法 1、给父元...

  • 清浮动

    1、父元素设置overflow:hidden;或者overflow:auto; 缺点:子元素有超出部分会自动隐藏 ...

  • 清浮动

    1.给父级也加浮动(页面中所有的元素都加浮动,margin左右会自动失效) 2.给父级加display:inlin...

  • 清浮动时的细节问题

    我们都知道设置浮动之后,要清浮动.但具体怎么清浮动呢. 我们在项目中最常用的清浮动的方法是给父级添加伪类.现在我们...

  • HTML清浮动

    在项目实现中,经常会用到float属性,但float会导致元素不再属于HTML文档流,盒子的高度也不在从元素中计算...

  • 清浮动(overflow)

    A+B A:display: block; float: left; B: overflow: auto; 1.很...

  • CSS清浮动

    关键词:清浮动 原因浮动是因为使用float:left或float:right,使元素脱离了文档流而产生的浮动。 ...

  • css清浮动

    一、浮动产生原因 一般浮动是什么情况呢?一般是一个盒子里使用了CSS float[http://www.divcs...

  • 《最强大脑心理学课》刘嘉

    2018-01-25

  • 导航条;清除浮动;开班信息

    清除浮动 属性:clear:清除对自己有影响的浮动 可选值 clear:both ----取最大 清除浮动大的(清...

网友评论

      本文标题:*清浮动——2018-01-25

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