清除浮动的三种方式

浮动元素引起的问题

1. 父元素的高度无法被撑开,影响与父元素同级的元素

2. 与浮动元素同级的非浮动元素会跟随其后

3. 若非第一个元素浮动,则该元素之前的元素也需要浮动,否则会影响页面显示的结构。


清除浮动的方式,大致有以下三种,他们之间的区别也会大概说一下。

先写个html代码结构:  

<div class="layout">

    <div class="son1  box"></div>

   <div class="son2 box"></div>

</div>

写一下css样式

.layout{border:1px solid black;background:yellow}

.box{width:100px;height:100px;background:green;}

.son1{float:left;}

.son2{float:right}

如果我们不给最外面父级元素.layout设置高度,而里面的子元素浮动的话,那么父级元素高度无法被撑开,背景颜色无法显示等等;同理,如果子元素不浮动,父元素的高就可以被撑开。那么就来解决以下该问题。

方法一:在父级元素里增加一个新的元素,比如<div class="clear"></div>,其属性为clear:both;

方法二:给父级添加一个属性:overflow:hidden;(或者overflow:auto)两者都可以达到清除浮动的效果,但是前者比较常用。

方法三:写一个伪类,:after 和 :before 方式;在父级元素里写,再给父元素增加class名<div class="layout  clearfix">

现在写一下清除浮动的代码

.clearfix{

zoom:1;    //这个zoom:1 是为了处理兼容问题

}

.clearfix : after{

display: block;

content: " ";

clear: both;

}

这种方式相对来说是清除浮动比较好的方式,其原理和clear:both差不多。以上三种方式的区别在于方法一 clear:both造成了代码的冗余且不贴合,而方法二它还有一层含义是“超出部分隐藏”,会带来一些问题,方法三还是比较实用的,只是增加了个伪类,就是实现清除浮动的效果。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,816评论 1 92
  • 这篇文章极好,以至于让我受益良多,就一字没有改动的转发过来一丝冰凉老师的文章 需要注意的是,display:tab...
    新晋小牛牛阅读 1,073评论 0 2
  • 关于清除浮动的四种方法 浮动对页面的影响: 如果一个父盒子中有一个子盒子,并且父盒子没有设置高,子盒子在父盒子中进...
    jrg陈咪咪sunny阅读 716评论 0 1
  • 一、在什么场景下会出现外边距合并?如何合并?如何不让相邻元素外边距合并?给个父子外边距合并的范例 在CSS当中,相...
    dengpan阅读 603评论 0 0
  • 有时候很累....想逃避......谈恋爱、结婚、生子......你们都好像一下子完成了所有的事情、而我却一再被催...
    木子关阅读 275评论 0 0