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)会被移出文档流,不会影响到块状盒子的布局而只会影响内联 ...
随机推荐
- intellij idea 的全局搜索快捷键方法
1.Ctrl+N按名字搜索类 相当于eclipse的ctrl+shift+R,输入类名可以定位到这个类文件,就像idea在其它的搜索部分的表现一样,搜索类名也能对你所要搜索的内容多个部分进行匹配,而且 ...
- Django中一个项目使用多个数据库
在django项目中, 一个工程中存在多个APP应用很常见. 有时候希望不同的APP连接不同的数据库,这个时候需要建立多个数据库连接. 参考:http://blog.csdn.net/songfree ...
- 15.3-uC/OS-III资源管理(多值信号量)
多值信号量是 uC/OS 操作系统的一个内核对象, 主要用于标志事件的发生和共享资源管理. 1.如果想要使用多值信号量,就必须事先使能多值信号量. 多值信号量的使能位于“os_cfg.h”. 2.OS ...
- java中equals()和==的区别
java中的数据类型 基础数据类型 基础数据类型有byte.short.char.int.long.float.double.bool.String.除了 String 会比较地址,其它的基础类型的比 ...
- python框架之Flask(1)-Flask初使用
Flask是一个基于 Python 开发并且依赖 jinja2 模板和 Werkzeug WSGI 服务的一个微型框架,对于 Werkzeug 本质是 Socket 服务端,其用于接收 http 请求 ...
- linux查看cpu个数,线程数及cpu型号
1.查看CPU逻辑id grep 'physical id' /proc/cpuinfo | sort -u physical id : 0physical id : 1 2.查看物理CPU个数 $ ...
- python使用grpc调用rpc接口
proto文件: syntax = "proto3"; package coupon; // //message UnsetUseC2URequest { // int64 bid ...
- 强迫症犯了,忍不住赞一下slf4j包Logger.java的优雅代码
如下是slf4j-api包下的Logger接口类里其中几个方法的声明: package org.slf4j; public interface Logger { /** * Log a message ...
- nodejs 癞子麻将
'use strict'; var _ = require('lodash'); var quick = require('quick-pomelo'); var P = quick.Promise; ...
- 关于easy ui 的combobox遍历选中
$.post("fleetAction!queryAllCompanyByCompanyID.do",{"truckCompany.id":companyId} ...