CSS清除浮动的方法及优缺点
浮动是CSS布局里面用的比较多的属性。浮动的框向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止。
因为浮动会使当前元素产生向上浮的效果,所以浮动的元素会脱离正常的文档流,它包围的内容在文档流中不占空间。元素浮动会影响其他元素的布局,那么浮动会带来哪些影响呢?
1. 元素浮动后,父元素的背景不能显示;
2. 父元素边框不能被撑开,即父元素高度塌陷(因为父元素的高消失,当元素没有高度时就会有塌陷);
3. margin 设置值不能正确显示;
4. 兄弟元素的位置受到影响;
注:如果浮动元素后面是块元素,会与浮动元素重叠,但其在文档流中的相对垂直位置不会改变,因为文档流中块级元素是独占一整行的。如果浮动元素后面是行内元素,则会并排显示(若设置了元素的宽度,并且屏幕放不下时会换行显示)。
为了使元素表现的跟浮动之前一样,布局不受影响,就需要清除浮动来解决这些问题,我根据自己的经验总结了以下几种清除浮动的方法:
html代码:
<div class=”outer”>
<div class=”left”>左浮动</div>
<div class=”right”>右浮动</div>
</div>
方法一:给父元素 .outer 定义 height
给父元素手动定高,就解决了父元素不能自动获取高度的问题。
优点:简单,代码少,容易掌握
缺点:需要给出具体的高度值,所以只适合高度固定的布局
方法二:浮动元素同级末尾处添加空div标签
浮动元素末尾添加一个空标签,利用css clear:both 清除浮动,让父元素能自动获取高度
优点:简单,浏览器支持好,不容易出问题
缺点:代码不够优雅,如果页面浮动布局多,要增加很多无语义的空标签,易造成结构的混乱,后期不易维护
方法三:父级定义伪元素 :after 和 zoom
利用伪元素:after的css clear:both 清除浮动,原理同方法二,通过伪元素在元素最后定义一个空的内容。这种方法很多大型网站都有使用,可以定义公共样式,以减少 css 代码。
优点:浏览器支持好,不容易出问题
缺点:代码多,要两句结合使用。
.outer { zoom:;} /*为了兼容IE*/
.outer:after {
content:’.’;
display: block;
height:;
clear: both;
visibility: hidden;
}
方法四:使用双伪元素 :after :before 清除浮动
方法三的改版,bootstrap 中使用了此方法。
.outer:before,
.outer:after {
content:’’;
display: table;
}
.outer:after {
clear: both;
}
.outer {
zoom:;
}
方法五:父元素定义 overflow:hidden 或 overflow:auto
使用 overflow:hidden 时,浏览器会自动检查浮动区域的高度。在IE6中,需为父元素定义 width 或 zoom:1
优点:简单,代码少,浏览器支持好
缺点:内容宽高超出这个父元素所在的区域会被隐藏或出现滚动条
其他:1. 给父元素添加浮动
给父级也添加浮动属性也可清除内部浮动,但是这样会使其整体浮动,影响布局,需要一直浮动到 body 元素,也会产生新的浮动问题,不推荐使用
2.给父级添加 display: table;
这种方法改变了盒子模型,不建议使用
以上,是我对浮动相关知识的见解和总结,如有不足之处,希望各位可以指正,谢谢~~
CSS清除浮动的方法及优缺点的更多相关文章
- CSS清除浮动的方法
CSS清除浮动的方法有哪些呢?经常性地会使用到float,很多邪门的事儿都有可能是浮动在作怪,清除浮动是必须要做的,而且随时性地对父级元素清除浮动的做法也被认为是书写CSS的良好习惯之一.下面看今天的 ...
- 前端开发CSS清除浮动的方法有哪些?
在前端开发过程中,非IE浏览器下,当容器的高度自动,并且容器内容中有浮动元素(float为left或right),此时如果容器的高度不能自适应内容的高度,从而使得内容溢出破坏整体布局,这种现象叫做浮动 ...
- 8种CSS清除浮动的方法优缺点分析
为什么清除CSS浮动这么难? 因为浮动会使当前标签产生向上浮的效果,同时会影响到前后标签.父级标签的位置及 width height 属性.而且同样的代码,在各种浏览器中显示效果也有可能不相同,这样让 ...
- CSS清除浮动float方法总结
使用浮动造成的BUG: 使用浮动前:(子节点是将父节点撑开了) 代码如下 <div class="box"> <div class="d1"& ...
- css清除浮动的方法汇总
这是在其他地方看到的一篇文章,汇总的不错,摘过来做个记录. 引用地址 : http://www.cnblogs.com/ForEvErNoME/p/3383539.html ------------- ...
- CSS清除浮动各种方法
当容器的高度为auto,且容器的内容中有浮动(float为left或right)的元素,在这种情况下,容器的高度不能自动伸长以适应内容的高度,使得内容溢出到容器外面而影响(甚至破坏)布局的现象.这个现 ...
- css清除浮动float方法
转载:http://www.cnblogs.com/ForEvErNoME/p/3383539.html 什么是CSS清除浮动? 在非IE浏览器(如Firefox)下,当容器的高度为auto,且容器的 ...
- css清除浮动的方法总结
在各种浏览器中显示效果也有可能不相同,这样让清除浮动更难了,下面总结8种清除浮动的方法,测试已通过 ie chrome firefox opera,需要的朋友可以参考下 清除浮动是每一个 we ...
- css清除浮动各方法与原理
说到清除浮动的方法,我想网络上应该有不下7,8的方法,介绍这些方法之前,想下为什么清除浮动? 再次回到float这个属性,浮动元素(floats)会被移出文档流,不会影响到块状盒子的布局而只会影响内联 ...
随机推荐
- dbgrid 无法显示表中所有字段
有时表中字段有更新,dbgrid无法显示表中字段. 解决办法: 1.adoquery断开 2. dbgrid字段全部删除 3.adoquery打开 4.dbgrid选择全部字段
- ionic3 在ios9.0 系统下 会出现ReferenceError:Can't find variable:Intl 错误提示
ionic3 框架开发app 在ios 9.0版本中 ReferenceError:Can't find variable:Intl 错误提示: 在index.html 文件中添加 <scri ...
- git help 机器翻译
该篇发布仅为博主个人保存并参考,内容可能不对 usage: git [--version] [--help] [-C <path>] [-c <name>=<value& ...
- configparser配置文件处理
创建一个configparser格式的文档: import configparser config = configparser.ConfigParser()config["DEFAULT& ...
- Spring Boot 的 application.properties
更改默认端口:8080 server.port = 8081 更改context-path :/server.context-path = /springboot #server.address= # ...
- <转>jmeter(二十二)内存溢出原因及解决方法
本博客转载自:http://www.cnblogs.com/imyalost/category/846346.html 个人感觉不错,对jmeter讲解非常详细,担心以后找不到了,所以转发出来,留着慢 ...
- es6 复制对象
var pp = {'name': '1','work': 'teacher'} var kk = [1,2] var tt = [] for(let index = 0; index<kk.l ...
- DIV层的使用方法
1.可以判断你选择的样式是否存在用下边的方法(如果存在的话执行某个方法) if ($(this).hasClass('cur')) 2.这个方法可以查询一个页面中同样的div层总共有几个 var i= ...
- WSDL文档结构图
- Docker+Consul+Registrator 实现服务注册与发现
Docker+Consul+Registrator实现服务注册与发现 逻辑图 实现nginx节点自动化加入容器IP代理 1.三台Consul agent server作为高可用通过Consul Tem ...