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)会被移出文档流,不会影响到块状盒子的布局而只会影响内联 ...
随机推荐
- Pandas的可视化操作(利用pandas得到图表)
基本折线图 Series和DataFrame上的这个功能只是使用matplotlib库的plot()方法的简单包装实现. 举个例子 import pandas as pd import numpy a ...
- [摘抄] SFM 和 Visual SLAM
来自知乎: SFM和vSLAM基本讨论的是同一问题,不过SFM是vision方向的叫法,而vSLAM是robotics方向的叫法. vSLAM所谓的mapping,vision方向叫structure ...
- 使用JavaScript实现在页面上所有内容加载完之前一直显示loading...页面
Html <body class="is-loading"> <div class="curtain"> <div class=& ...
- [ Python ] OpenGL
pyOpenGL Installation Package Version------------------- -------numpy 1.14.2 PyOpenGL 3.1.0 PyOpenGL ...
- 解决CUDA driver version is insufficient for CUDA runtime version
问题 在服务器上安装mxne的GPU版本 sudo pip install mxnet-cu80==1.2.1 然后在gpu上创建数据 import mxnet as mx mx.nd.array([ ...
- MongoDB集群单mongos的问题总结
问题发现 在使用过程中,通过spark访问集群的效率不是很令人满意,80核心同时运行的速度比单核心也就快了20倍左右,预测瓶颈在mongodb读写上.当然,此时没遇到其他问题暂时没进行问题梳理. 在数 ...
- GO数组
Array(数组) 数组是同一种数据类型元素的集合. 在Go语言中,数组从声明时就确定,使用时可以修改数组成员,但是数组大小不可变化. 数组定义: var 数组变量名 [元素数量]T ]int //定 ...
- webform ajax 异步请求
第一种就是对应方法的请求 虽然对应方法 但还是会刷新页面 webform是基于事件的 每次请求都会出发pageload <script> $(function () { $("# ...
- java框架注意
struts2 数据类型不匹配时会return "input" <result name="input">/WEB-INF/index.jsp< ...
- What's the Python Launcher?
Look! Python launcher 你可能在他处见到过这鬼东西,when you install or uninstall python, and so on.那么你肯定与我一样对这个鬼东西起 ...