清除浮动是每个 web前台设计师必须掌握的机能。

css清除浮动大全,共8种方法。



浮动会使当前标签产生向上浮的效果,同一时候会影响到前后标签、父级标签的位置及 width height 属性。并且相同的代码,在各种浏览器中显示效果也有可能不相同,这样让清除浮动更难了。解决浮动引起的问题有多种方法,但有些方法在浏览器兼容性方面还有问题。




以下总结8种清除浮动的方法(測试已通过 ie chrome firefox opera,后面三种方法仅仅做了解就能够了):



1,父级div定义 height

复制代码

代码例如以下:



<style type="text/css">

.div1{background:#000080;border:1px solid red;/*解决代码*/height:200px;}

.div2{background:#800080;border:1px solid red;height:100px;margin-top:10px}

.left{float:left;width:20%;height:200px;background:#DDD}

.right{float:right;width:30%;height:80px;background:#DDD}

</style>

<div class="div1">

<div class="left">Left</div>

<div class="right">Right</div>

</div>

<div class="div2">

div2

</div>

原理:父级div手动定义height。就攻克了父级div无法自己主动获取到高度的问题。



长处:简单、代码少、easy掌握



缺点:仅仅适合高度固定的布局。要给出精确的高度,假设高度和父级div不一样时,会产生问题



建议:不推荐使用。仅仅建议高度固定的布局时使用



2,结尾处加空div标签 clear:both


代码例如以下:



<style type="text/css">

.div1{background:#000080;border:1px solid red}

.div2{background:#800080;border:1px solid red;height:100px;margin-top:10px}

.left{float:left;width:20%;height:200px;background:#DDD}

.right{float:right;width:30%;height:80px;background:#DDD}

/*清除浮动代码*/

.clearfloat{clear:both}

</style>

<div class="div1">

<div class="left">Left</div>

<div class="right">Right</div>

<div class="clearfloat"></div>

</div>

<div class="div2">

div2

</div>

原理:加入一个空div,利用css提高的clear:both清除浮动,让父级div能自己主动获取到高度



长处:简单、代码少、浏览器支持好、不easy出现怪问题



缺点:不少刚開始学习的人不理解原理。假设页面浮动布局多,就要添加非常多空div。让人感觉非常不好



建议:不推荐使用。但此方法是曾经主要使用的一种清除浮动方法



3,父级div定义 伪类:after 和 zoom


代码例如以下:



<style type="text/css">

.div1{background:#000080;border:1px solid red;}

.div2{background:#800080;border:1px solid red;height:100px;margin-top:10px}

.left{float:left;width:20%;height:200px;background:#DDD}

.right{float:right;width:30%;height:80px;background:#DDD}

/*清除浮动代码*/

.clearfloat:after{display:block;clear:both;content:"";visibility:hidden;height:0}


.clearfloat{zoom:1}

</style>

<div class="div1 clearfloat">

<div class="left">Left</div>

<div class="right">Right</div>

</div>

<div class="div2">

div2

</div>

原理:IE8以上和非IE浏览器才支持:after,原理和方法2有点类似,zoom(IE转有属性)可解决ie6,ie7浮动问题



长处:浏览器支持好、不easy出现怪问题(眼下:大型站点都有使用。如:腾迅。网易,新浪等等)



缺点:代码多、不少刚開始学习的人不理解原理,要两句代码结合使用才干让主流浏览器都支持。

建议:推荐使用,建议定义公共类,以降低CSS代码。

4,父级div定义 overflow:hidden


代码例如以下:



<style type="text/css">

.div1{background:#000080;border:1px solid red;/*解决代码*/width:98%;overflow:hidden}

.div2{background:#800080;border:1px solid red;height:100px;margin-top:10px;width:98%}


.left{float:left;width:20%;height:200px;background:#DDD}

.right{float:right;width:30%;height:80px;background:#DDD}

</style>

<div class="div1">

<div class="left">Left</div>

<div class="right">Right</div>

</div>

<div class="div2">

div2

</div>

原理:必须定义width或zoom:1,同一时候不能定义height,使用overflow:hidden时。浏览器会自己主动检查浮动区域的高度



长处:简单、代码少、浏览器支持好



缺点:不能和position配合使用。由于超出的尺寸的会被隐藏。

建议:仅仅推荐没有使用position或对overflow:hidden理解比較深的朋友使用。

5,父级div定义 overflow:auto


代码例如以下:



<style type="text/css">

.div1{background:#000080;border:1px solid red;/*解决代码*/width:98%;overflow:auto}

.div2{background:#800080;border:1px solid red;height:100px;margin-top:10px;width:98%}


.left{float:left;width:20%;height:200px;background:#DDD}

.right{float:right;width:30%;height:80px;background:#DDD}

</style>

<div class="div1">

<div class="left">Left</div>

<div class="right">Right</div>

</div>

<div class="div2">

div2

</div>

原理:必须定义width或zoom:1,同一时候不能定义height,使用overflow:auto时。浏览器会自己主动检查浮动区域的高度



长处:简单、代码少、浏览器支持好



缺点:内部宽高超过父级div时,会出现滚动栏。



建议:不推荐使用,假设你须要出现滚动栏或者确保你的代码不会出现滚动栏就使用吧。

6。父级div 也一起浮动


代码例如以下:



<style type="text/css">

.div1{background:#000080;border:1px solid red;/*解决代码*/width:98%;margin-bottom:10px;float:left}


.div2{background:#800080;border:1px solid red;height:100px;width:98%;/*解决代码*/clear:both}


.left{float:left;width:20%;height:200px;background:#DDD}

.right{float:right;width:30%;height:80px;background:#DDD}

</style>

<div class="div1">

<div class="left">Left</div>

<div class="right">Right</div>

</div>

<div class="div2">

div2

</div>

原理:全部代码一起浮动,就变成了一个总体



长处:没有长处



缺点:会产生新的浮动问题。



建议:不推荐使用。仅仅作了解。



7,父级div定义 display:table


代码例如以下:



<style type="text/css">

.div1{background:#000080;border:1px solid red;/*解决代码*/width:98%;display:table;margin-bottom:10px;}


.div2{background:#800080;border:1px solid red;height:100px;width:98%;}

.left{float:left;width:20%;height:200px;background:#DDD}

.right{float:right;width:30%;height:80px;background:#DDD}

</style>

<div class="div1">

<div class="left">Left</div>

<div class="right">Right</div>

</div>

<div class="div2">

div2

</div>

原理:将div属性变成表格



长处:没有长处



缺点:会产生新的未知问题。



建议:不推荐使用,仅仅作了解。



8。结尾处加 br标签 clear:both

复制代码

代码例如以下:



<style type="text/css">

.div1{background:#000080;border:1px solid red;margin-bottom:10px;zoom:1}

.div2{background:#800080;border:1px solid red;height:100px}

.left{float:left;width:20%;height:200px;background:#DDD}

.right{float:right;width:30%;height:80px;background:#DDD}

.clearfloat{clear:both}

</style>

<div class="div1">

<div class="left">Left</div>

<div class="right">Right</div>

<br class="clearfloat" />

</div>

<div class="div2">

div2

</div>

原理:父级div定义zoom:1来解决IE浮动问题,结尾处加 br标签 clear:both



建议:不推荐使用,仅仅作了解。

<iframe id="cproIframe_u811641_2" height="250" marginheight="0" src="http://pos.baidu.com/acom?adn=3&amp;at=103&amp;aurl=&amp;cad=1&amp;ccd=32&amp;cec=gb2312&amp;cfv=18&amp;ch=0&amp;col=zh-cn&amp;conOP=0&amp;cpa=1&amp;dai=2&amp;dis=0&amp;ltr=https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3D7LTEH3QmZ-Iezu6yOEc8Z2FWp58BcBit3wCE6TI8rlTINXE0o2pDNMXSd811dhvy%26wd%3D%26eqid%3Dda9ddabd00017a6a0000000555da8236&amp;ltu=http%3A%2F%2Fwww.jb51.net%2Fcss%2F173023.html&amp;lunum=6&amp;n=jb51_cpr&amp;pcs=1353x583&amp;pis=10000x10000&amp;ps=521x832&amp;psr=1366x768&amp;pss=1353x799&amp;qn=8e44b610bc8408d9&amp;rad=&amp;rsi0=300&amp;rsi1=250&amp;rsi5=4&amp;rss0=%23ffffff&amp;rss1=%23ffffff&amp;rss2=%23006699&amp;rss3=%23333333&amp;rss4=%23333333&amp;rss5=&amp;rss6=%23e10900&amp;rss7=&amp;scale=&amp;skin=&amp;td_id=811641&amp;tn=text_default_300_250&amp;tpr=1440383743644&amp;ts=1&amp;version=2.0&amp;xuanting=0&amp;dtm=BAIDU_DUP2_SETJSONADSLOT&amp;dc=2&amp;di=u811641&amp;ti=CSS%E6%B8%85%E9%99%A4%E6%B5%AE%E5%8A%A8%E5%A4%A7%E5%85%A8%E5%85%B18%E7%A7%8D%E6%96%B9%E6%B3%95_CSS%E6%95%99%E7%A8%8B_CSS_%E7%BD%91%E9%A1%B5%E5%88%B6%E4%BD%9C_%E8%84%9A%E6%9C%AC%E4%B9%8B%E5%AE%B6&amp;tt=1440383742605.2070.2494.2498" frameborder="0" width="300" allowtransparency="" marginwidth="0" scrolling="no" align="center,center"></iframe>

清除浮动是每个 web前台设计师必须掌握的机能。

css清除浮动大全。共8种方法。



浮动会使当前标签产生向上浮的效果,同一时候会影响到前后标签、父级标签的位置及 width height 属性。

并且相同的代码。在各种浏览器中显示效果也有可能不相同。这样让清除浮动更难了。

解决浮动引起的问题有多种方法,但有些方法在浏览器兼容性方面还有问题。

以下总结8种清除浮动的方法(測试已通过 ie chrome firefox opera,后面三种方法仅仅做了解就能够了):



1。父级div定义 height

复制代码

代码例如以下:



<style type="text/css">

.div1{background:#000080;border:1px solid red;/*解决代码*/height:200px;}

.div2{background:#800080;border:1px solid red;height:100px;margin-top:10px}

.left{float:left;width:20%;height:200px;background:#DDD}

.right{float:right;width:30%;height:80px;background:#DDD}

</style>

<div class="div1">

<div class="left">Left</div>

<div class="right">Right</div>

</div>

<div class="div2">

div2

</div>

原理:父级div手动定义height。就攻克了父级div无法自己主动获取到高度的问题。

长处:简单、代码少、easy掌握



缺点:仅仅适合高度固定的布局,要给出精确的高度,假设高度和父级div不一样时,会产生问题



建议:不推荐使用。仅仅建议高度固定的布局时使用



2。结尾处加空div标签 clear:both

复制代码

代码例如以下:



<style type="text/css">

.div1{background:#000080;border:1px solid red}

.div2{background:#800080;border:1px solid red;height:100px;margin-top:10px}

.left{float:left;width:20%;height:200px;background:#DDD}

.right{float:right;width:30%;height:80px;background:#DDD}

/*清除浮动代码*/

.clearfloat{clear:both}

</style>

<div class="div1">

<div class="left">Left</div>

<div class="right">Right</div>

<div class="clearfloat"></div>

</div>

<div class="div2">

div2

</div>

原理:加入一个空div,利用css提高的clear:both清除浮动。让父级div能自己主动获取到高度



长处:简单、代码少、浏览器支持好、不easy出现怪问题



缺点:不少刚開始学习的人不理解原理;假设页面浮动布局多,就要添加非常多空div。让人感觉非常不好



建议:不推荐使用,但此方法是曾经主要使用的一种清除浮动方法



3。父级div定义 伪类:after 和 zoom

复制代码

代码例如以下:



<style type="text/css">

.div1{background:#000080;border:1px solid red;}

.div2{background:#800080;border:1px solid red;height:100px;margin-top:10px}

.left{float:left;width:20%;height:200px;background:#DDD}

.right{float:right;width:30%;height:80px;background:#DDD}

/*清除浮动代码*/

.clearfloat:after{display:block;clear:both;content:"";visibility:hidden;height:0}


.clearfloat{zoom:1}

</style>

<div class="div1 clearfloat">

<div class="left">Left</div>

<div class="right">Right</div>

</div>

<div class="div2">

div2

</div>

原理:IE8以上和非IE浏览器才支持:after。原理和方法2有点类似,zoom(IE转有属性)可解决ie6,ie7浮动问题



长处:浏览器支持好、不easy出现怪问题(眼下:大型站点都有使用,如:腾迅。网易,新浪等等)



缺点:代码多、不少刚開始学习的人不理解原理,要两句代码结合使用才干让主流浏览器都支持。



建议:推荐使用,建议定义公共类,以降低CSS代码。



4,父级div定义 overflow:hidden

复制代码

代码例如以下:



<style type="text/css">

.div1{background:#000080;border:1px solid red;/*解决代码*/width:98%;overflow:hidden}

.div2{background:#800080;border:1px solid red;height:100px;margin-top:10px;width:98%}


.left{float:left;width:20%;height:200px;background:#DDD}

.right{float:right;width:30%;height:80px;background:#DDD}

</style>

<div class="div1">

<div class="left">Left</div>

<div class="right">Right</div>

</div>

<div class="div2">

div2

</div>

原理:必须定义width或zoom:1。同一时候不能定义height,使用overflow:hidden时,浏览器会自己主动检查浮动区域的高度



长处:简单、代码少、浏览器支持好



缺点:不能和position配合使用。由于超出的尺寸的会被隐藏。



建议:仅仅推荐没有使用position或对overflow:hidden理解比較深的朋友使用。



5,父级div定义 overflow:auto

复制代码

代码例如以下:



<style type="text/css">

.div1{background:#000080;border:1px solid red;/*解决代码*/width:98%;overflow:auto}

.div2{background:#800080;border:1px solid red;height:100px;margin-top:10px;width:98%}


.left{float:left;width:20%;height:200px;background:#DDD}

.right{float:right;width:30%;height:80px;background:#DDD}

</style>

<div class="div1">

<div class="left">Left</div>

<div class="right">Right</div>

</div>

<div class="div2">

div2

</div>

原理:必须定义width或zoom:1,同一时候不能定义height。使用overflow:auto时,浏览器会自己主动检查浮动区域的高度



长处:简单、代码少、浏览器支持好



缺点:内部宽高超过父级div时,会出现滚动栏。



建议:不推荐使用,假设你须要出现滚动栏或者确保你的代码不会出现滚动栏就使用吧。

6,父级div 也一起浮动

复制代码

代码例如以下:



<style type="text/css">

.div1{background:#000080;border:1px solid red;/*解决代码*/width:98%;margin-bottom:10px;float:left}


.div2{background:#800080;border:1px solid red;height:100px;width:98%;/*解决代码*/clear:both}


.left{float:left;width:20%;height:200px;background:#DDD}

.right{float:right;width:30%;height:80px;background:#DDD}

</style>

<div class="div1">

<div class="left">Left</div>

<div class="right">Right</div>

</div>

<div class="div2">

div2

</div>

原理:全部代码一起浮动。就变成了一个总体



长处:没有长处



缺点:会产生新的浮动问题。



建议:不推荐使用。仅仅作了解。



7,父级div定义 display:table

复制代码

代码例如以下:



<style type="text/css">

.div1{background:#000080;border:1px solid red;/*解决代码*/width:98%;display:table;margin-bottom:10px;}


.div2{background:#800080;border:1px solid red;height:100px;width:98%;}

.left{float:left;width:20%;height:200px;background:#DDD}

.right{float:right;width:30%;height:80px;background:#DDD}

</style>

<div class="div1">

<div class="left">Left</div>

<div class="right">Right</div>

</div>

<div class="div2">

div2

</div>

原理:将div属性变成表格



长处:没有长处



缺点:会产生新的未知问题。



建议:不推荐使用。仅仅作了解。



8,结尾处加 br标签 clear:both

复制代码

代码例如以下:



<style type="text/css">

.div1{background:#000080;border:1px solid red;margin-bottom:10px;zoom:1}

.div2{background:#800080;border:1px solid red;height:100px}

.left{float:left;width:20%;height:200px;background:#DDD}

.right{float:right;width:30%;height:80px;background:#DDD}

.clearfloat{clear:both}

</style>

<div class="div1">

<div class="left">Left</div>

<div class="right">Right</div>

<br class="clearfloat" />

</div>

<div class="div2">

div2

</div>

原理:父级div定义zoom:1来解决IE浮动问题,结尾处加 br标签 clear:both

css 清楚浮动的8种方式的更多相关文章

  1. css清除浮动的两种方式(clearfix和clear)

    最近总是在用浮动,这两种方式总是浮现在眼前,或者说去掉父级和同级浮动样式总在思考中.两种方式怎么写都在base.css中. 在做瑞祥之旅的过程中,还是吃了一个大亏,就是清除浮动,不管是同级还是父级,都 ...

  2. css清除浮动的几种方式,哪种最合适?

    细心的人可能发现了,写的导航条中存在一个问题,那就是使用了float之后,父级盒子的高度变为0了. 我们来写一个例子来看一下,创建一个父级div,并设置border属性,然后下边创建两个子元素span ...

  3. HTML/css清除浮动的几种方式

    浮动在HTML/CSS布局中十分常见,虽然浮动布局可以实现很多有用的排版效果,但是浮动的元素脱离了文档流,可能造成包含块高度塌陷.下方行框上移等行为.因此在使用浮动实现想要的效果后,通常还需要清除浮动 ...

  4. CSS清除浮动的几种方式

    浮动对页面的影响: 如果一个父盒子中有一个子盒子,并且父盒子没有设置高,子盒子在父盒子中进行了浮动,那么将来父盒子的高度为0.由于父盒子的高度为0, 下面的元素会自动补位,所以这个时候要进行浮动的清除 ...

  5. css清除浮动的3种方式

    前言: 当不给父元素设置宽高时,父元素的宽高会被子元素的内容撑开.但当子元素设置浮动属性(float) 后, 子元素会溢出到父元素外,父元素的宽高也不会被撑开,这称之为“高度塌陷”.可以理解为使用浮动 ...

  6. css 清楚浮动的几种方式

    方法一: 使用clear属性的空元素 <div style="clear:both;"></div> 方法二:使用overflow属性 给浮动的元素容器添加 ...

  7. css 清除浮动的几种方式

    1.给浮动的元素的父级添加 overflow:hidden;属性 ul>不浮动 添加overflow:hidden; li>浮动 2.给浮动的元素的父级添加after伪类 ul:after ...

  8. 【css】清除浮动的几种方式

    [css]清除浮动的几种方式   因为浮动框不在普通的文档流中,所以它不占据空间.如下面的代码: .news { background-color:gray; border:1px solid bla ...

  9. css考核点整理(一)-浮动的理解和清除浮动的几种方式

    浮动的理解和清除浮动的几种方式 clear语法:clear : none | left | right | both 取值:none : 默认值.允许两边都可以有浮动对象left : 不允许左边有浮动 ...

随机推荐

  1. 【codeforces 508E】Artur and Brackets

    [题目链接]:http://codeforces.com/problemset/problem/508/E [题意] 让你构造一个括号字符串; 使得每个从左往右数第i个左括号在这个括号序列中与之匹配的 ...

  2. Linux下MySql数据库常用操作

    1.显示数据库 show databases; 2.选择数据库 use 数据库名; 3.显示数据库中的表 show tables; 4.显示数据表的结构 describe 表名; 5.显示表中记录 S ...

  3. 解析如何利用ElasticSearch和Redis检索和存储十亿信息

    如果从企业应用的生存率来看,选择企业团队信息作为主要业务,HipChat的起点绝非主流:但是如果从赚钱的角度上看,企业市场的高收益确实值得任何公司追逐,这也正是像JIRA和Confluence这样的智 ...

  4. 初识Dubbo 系列之5-Dubbo 成熟度

    成熟度 功能成熟度 Feature特征 Maturity成熟度 Strength强度 Problem问题 Advise建议 User用户 并发控制 Tested 并发控制   试用   连接控制 Te ...

  5. php给图片加入文字水印

    PHP对图片的操作用到GD库.这里我们介绍怎样给图片加入文字水印. 大致分为四步: 1.打开图片 2.操作图片 3.输出图片 4.销毁图片 以下我们上代码来详细解说每步的实现过程: <? php ...

  6. C++_关于const 的全面总结

    C++中的constkeyword的使用方法很灵活.而使用const将大大改善程序的健壮性.本人依据各方面查到的资料进行总结例如以下,期望对朋友们有所帮助. Const 是C++中经常使用的类型修饰符 ...

  7. simple_strtoul()分析

    此函数有以下几点值得注意:1.第一个参数中的const.一般在函数的形参中,如果我们只是希望调用者使用该参数,而不会去改变该参数内容(一般是指针指向的内容),则可以声明为const.2.第二个参数.C ...

  8. 循环访问 TreeView 控件的所有节点

    创建测试每个节点的递归过程 . private void PrintRecursive(TreeNode treeNode) { // Print the node. System.Diagnosti ...

  9. 初识Git(三)

    这次要记录一下对branch,merge的学习. 与先前一样创建一个pro文件夹,initi该文件夹,在该文件夹中新建一个空的MainCode.txt,然后add文本文件并且commit. 接下来我们 ...

  10. ARC下dealloc过程及.cxx_destruct的探究

    我是前言 这次探索源自于自己一直以来对ARC的一个疑问,在MRC时代,经常写下面的代码: - (void)dealloc { self.array = nil; self.string = nil; ...