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)会被移出文档流,不会影响到块状盒子的布局而只会影响内联 ...
随机推荐
- JavaScript事件起泡与捕获
// 向 <div> 元素添加事件句柄 document.getElementById("myDIV").addEventListener("mousemov ...
- 原生js阻止表单跳转
/* W3C浏览器下的 */ var forms = document.getElementById("from") forms.addEventListener('submit' ...
- pat 1051Pop Sequence
模拟栈的过程,一开始我是用的cin来判断每行的每一个数字,然后判断回车结束.有一个点会超时,答案用数组先记录序列的方法非常好.有一个注意点就是访问s.top()的时候先要保证s.size()>0 ...
- 有没有无痛无害的人体成像方法?OCT(光学相干断层扫描)了解一下
关于之前推送的胸片和CT有很多的小伙伴关心射线对人体的伤害的问题,在医学检查射线的强度和剂量已经有严格的标准,偶尔进行一次CT扫描是没有问题的,那么有没有一种完全无害的扫描检查呢?今天小编就给大家介绍 ...
- Python基础(一)常用函数
1.map() 此函数可以,将列表内每一个元素进行操作,并返回列表 原型 map(function,[list]) def fc(x): return x * 2 print(map(fc,[1,2, ...
- Gitlab+Jenkins实现自动部署
Gitlab+Jenkins实现自动部署 系统环境: Gitlab主机 IP:192.168.1.2 Jenkins主机 IP:192.168.1.3 一.为何要做自动部署 #部署Tomcat的在 ...
- linux 生成密钥,并向git服务器导入公钥
1. server1 上使用haieradmin用户 ,先清理之前的ssh登录记录,rm –rf ~/.ssh , 运行ssh-keygen –t rsa(只需回车下一步即可,无需输入任何密 ...
- codeforces 985A Chess Placing
题意: 移动最少的步数,使得所有的棋子在同一颜色的格子中. 每次一个棋子只能向左或者向右移动一步,不能移到有棋子的格子中. 思路: 枚举全黑和全白的情况. 对于每一个需要移动的棋子,它移动到的位置一定 ...
- 0004-20180422-自动化第五章-python基础学习笔记
内容回顾:1.数据类型 2.for和while循环 continue break #如下循环将怎么打印结果? for i in range(1,10): print(i) for i in range ...
- Unable to construct api.Node object for kubelet: can't get ip address of node master.example.com: lookup master.example.com on : no such host
openshift首页进不去 启动openshift时报的错,大意是: 无法为kubelet构造api.Node对象:无法获取节点master.example.com的IP地址: 所以就联想到新装的c ...