如何清除浮动

方式一:使用overflow属性来清除浮动
    .ovh{
      overflow:hidden;
     }
    原理:先找到浮动盒子的父元素,再在父元素中添加一个属性:overflow:hidden,这样就相当于产生了一个BFC(块级格式化上下文),BFC内元素有以下几个特性:1、BFC内元素与外部元素互不影响;2、BFC计算高度时,就算子元素浮动也会参加高度计算;3,BFC不与其他浮动元素重叠;4、会产生边距重叠。可以利用这些特性(我认为主要就是前三点)清除这个父元素中的子元素浮动对页面的影响.
    注意:一般情况下也不会使用这种方式,因为overflow:hidden有一个特点,离开了这个元素所在的区域以后会被隐藏(overflow:hidden会将超出的部分隐藏起来).

方式二:使用额外标签法
    .clear{
      clear:both;
     }
    原理:在浮动的盒子之下再放一个标签,在这个标签中使用clear:both,来清除浮动对页面的影响.
      a.内部标签:会将这个浮动盒子的父盒子高度重新撑开.
      b.外部标签:会将这个浮动盒子的影响清除,但是不会撑开父盒子.
    注意:一般情况下不会使用这一种方式来清除浮动。因为这种清除浮动的方式会增加页面的标签,造成结构的混乱.

方法三:使用伪元素来清除浮动(after意思:在浮动元素后面)
    .clearfix:after{
      content:"";//设置内容为空
      height:0;//高度为0
      line-height:0;//行高为0
      display:block;//将文本转为块级元素
      visibility:hidden;//将元素隐藏
      clear:both//清除浮动
     }
    .clearfix{
      zoom:1;为了兼容IE

    }

原理:

1) display:block 使生成的元素以块级元素显示,占满剩余空间; 
2) height:0 避免生成内容破坏原有布局的高度。 
3) visibility:hidden 使生成的内容不可见,并允许可能被生成内容盖住的内容可以进行点击和交互; 
4)通过 content:”.”生成内容作为最后一个元素,至于content里面是点还是其他都是可以的,有些版本可能content 里面内容为空,不推荐这样做的,firefox直到7.0 content:”” 仍然会产生额外的空隙;(bug!!) 
5)zoom:1 触发IE hasLayout。

猜你喜欢

转载自blog.csdn.net/qq_25461519/article/details/81003111
今日推荐