CSS清除浮动常用方法小结 CSS clear both {overflow:auto;zoom:1;}

常用的清除浮动的方法有以下三种:

此为未清除浮动源代码,运行代码无法查看到父级元素浅黄色背景

<!DOCTYPE html><html><head>    <meta charset="utf-8"/>    <title></title>    <style type="text/css">        * {            margin: 0;            padding: 0;        }        body {            font: 36px bold;            color: #F00;            text-align: center;        }        #layout {            background: #FF9;        }        #left {            float: left;            width: 20%;            height: 200px;            background: #DDD;            line-height: 200px;        }        #right {            float: right;            width: 30%;            height: 80px;            background: #DDD;            line-height: 80px;        }

    </style></head>

<div id="layout">    <div id="left">Left</div>    <div id="right">Right</div></div></html>result:

三种清除浮动方法如下:


1、使用空标签清除浮动。我用了很久的一种方法,空标签可以是div标签,也可以是P标签。我习惯用<P>,够简短,也有很多人用<hr>,只是需要另外 为其清除边框,但理论上可以是任何标签。这种方式是在需要清除浮动的父级元素内部的所有浮动元素后添加这样一个标签清除浮动,并为其定义CSS代 码:clear:both。此方法的弊端在于增加了无意义的结构元素。


对于使用额外标签清除浮动(闭合浮动元素),是W3C推荐的 做法。至于使用<br />元素还是空<div></div>可以根据自己的喜好来选(当然你也可以使用其它块级元素)。不过要注意的 是,<br />本身是有表现的,它会多出一个换行出来,所以要设定它的heigh为0,以隐藏它的表现。所以大多数情况下使用空<div>比较合 适。

<!DOCTYPE html><html><head>    <meta charset="utf-8"/>    <title></title>    <style type="text/css">        * {            margin: 0;            padding: 0;        }

        body {            font: 36px bold;            color: #F00;            text-align: center;        }

        #layout {            background: #FF9;        }

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

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

        .clr {            clear: both;        }

    </style></head>

<div id="layout">    <div id="left">Left</div>    <div id="right">Right</div>    <p class="clr"></p>

</div></html>

result:

2、使用overflow属性。此方法有效地解决了通过空标签元素清除浮动而不得不增加无意代码的弊端。使用该方法是只需在需要清除浮动的元素中定义CSS属性:overflow:auto,即可!”zoom:1″用于兼容IE6,也可以用width:100%。


不过使用overflow的时候,可能会对页面表现带来影响,而且这种影响是不确定的,你最好是能在多个浏览器上测试你的页面;

<!DOCTYPE html><html><head>    <meta charset="utf-8"/>    <title></title>    <style type="text/css">        * {            margin: 0;            padding: 0;        }

        body {            font: 36px bold;            color: #F00;            text-align: center;        }

        #layout {            background: #FF9;            overflow: auto;            zoom: 1; /* overflow:auto可以换成overflow:hidden,zoom:1可以换成width:100%*/        }

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

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

    </style></head>

<div id="layout">    <div id="left">Left</div>    <div id="right">Right</div>

</div></html>result:
3、使用after伪对象清除浮动。 该方法只适用于非IE浏览器 。具体写法可参照以下示例。使用中需注意以下几点。  一、该方法中必须为需要清除浮动元素的伪对象中设置height:0,否则该元素会比实际高出若干像素;  二、content属性是必须的,但其值可以为空,蓝色理想讨论该方法的时候content属性的值设为”.”,但我发现为空亦是可以的。

<!DOCTYPE html><html><head>    <meta charset="utf-8"/>    <title></title>    <style type="text/css">        * {            margin: 0;            padding: 0;        }

        body {            font: 36px bold;            color: #F00;            text-align: center;        }

        #layout {            background: #FF9;

        }

        #layout:after {            display: block;            clear: both;            content: "";            visibility: hidden;            height: 0;        }

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

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

    </style></head>

<div id="layout">    <div id="left">Left</div>    <div id="right">Right</div>

</div></html>



此三种方法各有利弊,使用时应择优选择,个人习惯于第一种,比较稳定可靠。


时间: 2024-10-27 01:53:21

CSS清除浮动常用方法小结 CSS clear both {overflow:auto;zoom:1;}的相关文章

CSS清除浮动常用方法小结

使用div+css布局的好处不用多说,经常性地会使用到float,那么清除浮动就是必须要做的,而且随时性地对父级元素清除浮动的做法也被认为是书写CSS的良好习惯之一. 常用的清除浮动的方法有以下三种.      此为未清除浮动源代码,运行代码无法查看到父级元素浅黄色背景. <style type="text/css"> <!-- *{margin:0;padding:0;} body{font:36px bold; color:#F00; text-align:cen

css清除浮动方法小结

清除浮动其实主要解决的就是高度塌陷问题,具体在此不再赘述~~~那些年我们一起清除过的浮动(大佬博客,写的挺不错) 方法小结:1. 1)添加额外标签 这是在学校老师就告诉我们的 一种方法,通过在浮动元素末尾添加一个空的标签例如 <div style=”clear:both”></div>,其他标签br等亦可. <div class="main left">.main{float:left;}</div> <div class=&quo

css清除浮动的五种常用方法

父级div定义固定高度height 结尾处加空div标签 clear:both <style type="text/css"> ... /*清除浮动代码*/ .clearfloat{clear:both} </style> <div class="box"> <div class="float-left">Left</div> <div class="float-righ

CSS清除浮动技巧

一般浮动是什么情况呢?一般是一个盒子里使用了CSS float浮动属性,导致父级对象盒子不能被撑开,这样CSS float浮动就产生了. 本来两个黑色对象盒子是在红色盒子内,因为对两个黑色盒子使用了float浮动,所以两个黑色盒子产生了浮动,导致红色盒子不能撑开,这样浮动就产生了. 简单地说,浮动是因为使用了float:left或float:right或两者都是有了而产生的浮动. 二.浮动产生负作用 1.背景不能显示由于浮动产生,如果对父级设置了(CSS background背景)CSS背景颜色

CSS清除浮动方法集合

CSS清除浮动方法集合 一.浮动产生原因   -   TOP 一般浮动是什么情况呢?一般是一个盒子里使用了CSS float浮动属性,导致父级对象盒子不能被撑开,这样CSS float浮动就产生了. 浮动产生样式效果截图 本来两个黑色对象盒子是在红色盒子内,因为对两个黑色盒子使用了float浮动,所以两个黑色盒子产生了浮动,导致红色盒子不能撑开,这样浮动就产生了. 简单地说,浮动是因为使用了float:left或float:right或两者都是有了而产生的浮动. 二.浮动产生负作用   -   

css清除浮动的方法总结

在各种浏览器中显示效果也有可能不相同,这样让清除浮动更难了,下面总结8种清除浮动的方法,测试已通过 ie chrome firefox opera,需要的朋友可以参考下 清除浮动是每一个 web前台设计师必须掌握的机能.css清除浮动大全,共8种方法. 浮动会使当前标签产生向上浮的效果,同时会影响到前后标签.父级标签的位置及 width height 属性.而且同样的代码,在各种浏览器中显示效果也有可能不相同,这样让清除浮动更难了.解决浮动引起的问题有多种方法,但有些方法在浏览器兼容性方面还有问

css 清除浮动 兼容IE+, FF

上代码: <!doctype html> <html> <head> <meta charset="utf-8"> <title>css 清除浮动 兼容IE+, FF</title> <style type="text/css"> .clearfix { *zoom: 1; } .clearfix:before, .clearfix:after { display: table; c

css 清除浮动的各种方法

1.为什么要清除浮动 在网页中,DIV一般都是嵌套的,外面称为窗口,里面的DIV存放内容,如果不浮动的话,如下面这段代码<div style=”background:#ccc;”> <div style=”float:left; width:30%; height:40px;background:#333; “> Content here</div> </div>本来我们期望看到的是,外面背景为#ccc的层包含了里面背景为#333的层,但实际上,外面的层在显

css清除浮动各方法与原理

说到清除浮动的方法,我想网络上应该有不下7,8的方法,介绍这些方法之前,想下为什么清除浮动? 再次回到float这个属性,浮动元素(floats)会被移出文档流,不会影响到块状盒子的布局而只会影响内联盒子(通常是文本)的排列. 这就产生了一个问题:浮动元素所在父元素不会自动伸长以便闭合浮动元素,任其“红杏出墙”,这显然不符合我们的“伦理观”,所以要“抓回来”施以家法:那么如何抓呢? 提起css,提起(x)html,首先进入脑海的是楚楚动人的页面吗?不,首先应该是这楚楚动人的页面的背后的“楚楚冻人