clear:both其实是有瑕疵的

在开发中,从美工MM给你Html代码中,肯定能经常看"<div style="clear:both;"></div>"这样的代码,但是你真的能明白它是做什么用的吗?

如:

view source

print?

1 <div style="border:2px solid red;">
2     <div style="float:left;width:80px;height:80px;border:1px solid blue;">TEST DIV</div>
3     <div style="clear:both;"></div>
4 </div>

你可以将此部分代码放到一个HTML页面看看效果,然后在去掉"<div style="clear:both;"></div>"看一下效果,就知道这句话的作用了。

原来后边的Clear:both;其实就是利用清除浮动来把外层的div撑开,所以有时候,我们在将内部div都设置成浮动之后,就会发现,外层div的背景没有显示,原因就是外层的div没有撑开,太小,所以能看到的背景仅限于一条线。偏关县信访局

但这种办法就是最好了的吗?

我这么说,当然答案就不是了。可以采用通过Hack实现:

view source

print?

01 <style>
02 .clearfix:after{
03     visibility: hidden;
04     display: block;
05     font-size: 0;
06     content: ".";
07     clear: both;
08     height: 0;
09 }
10  
11 * html .clearfix{zoom: 1;}
12   
13 *:first-child + html .clearfix{zoom: 1;}
14 </style>
15 <div class="clearfix" style="border: 2px solid red;">
16     <div style="float: left; width: 80px; height: 80px; border: 1px solid blue;">
17         TEST DIV</div>
18 </div>

看完解决办法,咱们来看里边的原理:

首先是利用:after这个伪类来兼容FF、Chrome等支持标准的浏览器。

:after伪类IE不支持,它用来和content属性一起使用设置在对象后的内容,例如:

view source

print?

1 a:after{content:"(link)";}

这个CSS将会让a标签内的文本后边加上link文本文字。

利用"* html"这个只有IE6认识的选择符,设置缩放属性"zoom: 1;"实现兼容IE6。

利用"*:first-child + html"这个只有IE7认识的选择符,设置缩放属性"zoom: 1;"实现兼容IE7。

时间: 2024-08-08 23:56:13

clear:both其实是有瑕疵的的相关文章

201/7/31-zznuoj-问题 A: A + B 普拉斯【二维字符串+暴力模拟+考虑瑕疵的题意-0的特例】

问题 A: A + B 普拉斯 在计算机中,数字是通过像01像素矩阵来显示的,最终的显示效果如下:  现在我们用01来构成这些数字 当宝儿姐输入A + B 时(log10(A)<50,log10(B)<50,且A,B均为正整数),你来计算A+B的和C,并按格式在屏幕上打印C. 输入 每组输入包括两个非负整数 A,B(log10(A)<50,log10(B)<50),已EOF结束输入 输出 按格式在屏幕中打印C,数字之间相隔三列0. 样例输入 3 8 样例输出 00100000001

瑕疵的数位相框

按照书上的方式修改成自己想要的数位相框,有很多瑕疵不知道怎么修改,希望有人能帮助解答^^ 1.相片读入会变色.扭曲--我比较希望读入原始相片,我使用ImageList,最大只能256 x 256 2.加入相片,不能按CTRL多选,只能一张一张加,这个不知道怎么办... 我相信,还有很多很多的瑕疵,但是以上两个最严重 文件在此:http://rapidshare.com/files/373468807/photo.beta.exe 程序如下: 一.FORM 1 using System;using

CSS px, em, 和rem; float以及clear(第一篇学习)

px:相对长度,相对于屏幕分辨率: em:相对长度单位,相对于当前对象内文本的字体尺寸.如当前对行内文本的字体尺寸未被人为设置,则相对于浏览器的默认字体尺寸.  任意浏览器的默认字体高都是16px.所有未经调整的浏览器都符合: 1em=16px.那么12px=0.75em,10px=0.625em.为了简化font-size的换算,需要在css中的body选择器中声明Font-size=62.5%,这就使em值变为 16px*62.5%=10px, 这样 12px=1.2em, 10px=1em

CSS浮动(float,clear)通俗讲解

很早以前就接触过CSS,但对于浮动始终非常迷惑,可能是自身理解能力差,也可能是没能遇到一篇通俗的教程. 前些天小菜终于搞懂了浮动的基本原理,迫不及待的分享给大家. 写在前面的话: 由于CSS内容比较多,小菜没有精力从头到尾讲一遍,只能有针对性的讲解. 如果读者理解CSS盒子模型,但对于浮动不理解,那么这篇文章可以帮助你. 小菜水平有限,本文仅仅是入门教程,不当之处请谅解! 本文以div元素布局为例. 教程开始: 首先要知道,div是块级元素,在页面中独占一行,自上而下排列,也就是传说中的流.如下

iOS开发——仿Clear纯手势操作的UITableView

前言 在Clear应用中,用户无需任何按钮,纯靠不同的手势就可以完成对ToDoItem的删除.完成.添加.移动.具体来说,功能上有左划删除,右划完成,点击编辑,下拉添加.捏合添加.长按移动.这里将这些功能实现并记录. 左划删除与右划完成 所谓的左右滑动,就是自定义一个cell然后在上面添加滑动手势.在处理方法中计算偏移量,如果滑动距离超过cell宽度一半,就删除它,或者是为文本添加删除线等来完成它:如果没有超过一半,那么就用动画把cell归位. 效果图如下: 关键代码如下: - (void)ha

解剖css中的clear属性

之前在面试的时候被问到如何清除浮动,笔者说使用css的clear属性可以清除:然后面试官又追问,clear如何清除浮动,笔者默然,因为自己在平时用的时候都没有搞清楚clear应该在哪里用. 首先我们先来看clear的作用:W3School上面如是说: 因此我们可以知道,当我们使用了clear属性后,我们会使清除元素也就是我们设置了clear属性的元素的上外边框边界刚好处于该边上浮动元素的下外边距边界之下. 所以如果我们设置为左边清除,那么清除元素会位于所有在它之上的左浮动的元素的下面,对于在它之

css浮动(folat),清除浮动(clear)

css浮动(float) float是css样式,用于设置标签的居左浮动和居右浮动,浮动后的元素不属于html文档流,需要用清除浮动把文档拽回到文档流中 浮动值: left:向左浮动 right:向右浮动 html文档流:自窗体自上而下分成一行一行,并在没行中从左到右的顺序排放元素. 通过例子来解释浮动 1.页面上有两个块元素,每个块元素独占一行 2.我们希望他们能并排显示,这是就可以使用float,我们先给红色的div加float:left,发现两个是在一行了,但是他们重叠在了一起. 3.这是

clear ,refresh,free

itab 即是内表也是工作区的情况下,即with header line. clear itab,仅清空HEADER LINE,对内表数据存储空间不影响,保留内存区. refresh itab,不清空HEADER LINE,清除内表数据存储空间,但保存内存区. free itab,不清空HEADER LINE,清空内表数据存储空间. clear itab[],保留工作区,清空内表数据存储空间里的内容. clear <itab> . "清空不带表头行内表 clear<itab&g

对css中clear元素的理解

clear:left;表示左侧不能有浮动元素. clear:right;表示右侧不能有浮动元素. clear:both;表示左右两侧都不能有浮动元素. 但在使用时,还得考虑css优先级问题.相同类型选择器制定的样式,在样式表文件中,越靠后的优先级越高 . 当所有元素的clear属性都设为right时,由于优先级的原因,并不是所想的那样:右侧没有浮动元素,而是右侧出现了浮动元素. 比如下面的代码: <html> <head> <style type="text/css