-
-
Notifications
You must be signed in to change notification settings - Fork 3.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[css] 第8天 清除浮动的方式有哪些及优缺点? #23
Comments
这个问题刚好有思考整理过,今天刚好复习一下。 回答前的唠叨:
什么是盒子塌陷? 问题出现的原因 解决方案
把外部盒子也从标准文档流中抽离,让它和孩子们见面。
可以是div也可以是其它块级元素,把
这也是bootstrap框架采用的清除浮动的方法。 题外话 其实还有一种最直接的办法:给每个盒子规定width和height,要多大给多大即可。但这并不算什么解决方案,因为这样的布局不是内容自适应的,但如果页面内容极少发生变动,这也是一个不错的方案,因为它的兼容性是毋庸置疑的。 |
1.通过设置父标签overflow: auto |
父元素设置
|
触发BFC 或 clear: both |
|
|
1 给每个盒子设定固定的width和height,直到合适为止,这样的好处是简单方便,兼容性好,适合只改动少量内容不涉及盒子排布的版面,缺点是非自适应,浏览器的窗口大小直接影响用户体验。 |
设置overflow的方法其实本质上是为父元素设置了BFC,同一思路下可以有很多的解决方案:
|
overflow: hidden 天下第一 |
清除浮动有如下思路去解决: 3种方法最推荐使用第二种使用伪类来实现,最方便,副作用最小。 .clearfix {*zoom: 1;}
.clearfix:before,.clearfix:after {display: table;line-height: 0;content: "";}
.clearfix:after {clear: both;}
```
将`clearfix`添加到父元素的class即可。 |
|
1、给父级 div 定义 height |
|
清除浮动的方式 |
父级元素设置高度 |
1.触发父元素BFC如给父元素设置overflow:hidden,特别注意的是:在IE6中还需要触发hasLayout,例如给父元素设置zoom:1 原理是触发父级BFC后,父元素在计算高度时,浮动的子元素也会参与计算 优点代码简洁 缺点设置overflow:hidden容易造成不会自动换行导致超出的尺寸被隐藏掉,无法显示要溢出的元素 2.给父元素设置高度优点代码简洁 缺点不够灵活,只适用于高度固定的布局 3.添加额外标签在最后一个浮动元素的后面新加一个标签如 ,并在其CSS样式中设置clear: both优点代码简洁,兼容性好 缺点额外增加无语义html元素,代码语义化差,后期维护成本大 4.使用after伪元素.clearfix::after {
content: ".";
display: block;
height: 0;
line-height: 0;
clear: both;
visibility:hidden;
font-size: 0;
}
.clearfix {
// 注意此处是为了兼容IE6和IE7浏览器,即触发hasLayoutcs
zoom: 1;
} 优点符合闭合浮动思想,结构语义化正确 缺点代码量多,因为IE6-7下不支持after伪元素,需要额外写 zoom:1来 触发hasLayout |
|
|
1.额外标签法:在最后一个浮动标签后,新加一个标签,给其设置clear:both |
方法一:额外标签法 给谁清除浮动,就在其后额外添加一个空白标签 ,给其设置clear:both。 优点:通俗易懂,书写方便。 缺点:添加许多无意义的标签,结构化比较差。 clear:both:本质就是闭合浮动, 就是让父盒子闭合出口和入口,不让子盒子出来 。 方法二:父元素添加overflow:hidden 通过触发BFC方式,实现清除浮动 优点:代码简洁 缺点:内容增多的时候容易造成不会自动换行导致内容被隐藏掉,无法显示要溢出的元素。 方法三:使用after伪元素清除浮动 优点:符合闭合浮动思想,结构语义化正确。 缺点:ie6-7不支持伪元素:after,使用zoom:1触发hasLayout。 方法四:使用before和after双伪元素清除浮动 优点:代码更简洁 缺点:用zoom:1触发hasLayout. 方法五:为父元素设置高度 缺点: 需要手动添加高度,如何后面的高度发生变化,还要再次修改高度,给后期的维护带来麻烦。 优点: 简单粗暴直接有效,清除了浮动带来的影响 |
1.在包含浮动元素容器的末尾增加一个带有clear属性的空div。缺点:需要在HTML中添加不必要的标记才能实现本应该由CSS实现的效果 |
第8天 清除浮动的方式有哪些及优缺点?
The text was updated successfully, but these errors were encountered: