﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-无所惧，无所悔,为梦想执着的拼搏-文章分类-CSS 技术文档</title><link>http://www.blogjava.net/DreamFight/category/41224.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 01 Mar 2011 21:14:05 GMT</lastBuildDate><pubDate>Tue, 01 Mar 2011 21:14:05 GMT</pubDate><ttl>60</ttl><item><title>css中滚动条样式的设置</title><link>http://www.blogjava.net/DreamFight/articles/335581.html</link><dc:creator>DreamFight</dc:creator><author>DreamFight</author><pubDate>Tue, 19 Oct 2010 07:37:00 GMT</pubDate><guid>http://www.blogjava.net/DreamFight/articles/335581.html</guid><wfw:comment>http://www.blogjava.net/DreamFight/comments/335581.html</wfw:comment><comments>http://www.blogjava.net/DreamFight/articles/335581.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/DreamFight/comments/commentRss/335581.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/DreamFight/services/trackbacks/335581.html</trackback:ping><description><![CDATA[<span id="reply_content_50720783">
<pre>参数说明：<br />
1、overflow-y : 设置当对象的内容超过其指定高度时如何管理内容；overflow-x : 设置当对象的内容超过其指定宽度时如何管理内容。<br />
参数:<br />
visible：扩大面积以显示所有内容<br />
auto：仅当内容超出限定值时添加滚动条<br />
hidden：总是隐藏滚动条<br />
scroll：总是显示滚动条<br />
2、height : 设置滚动条的高度（修改其后数值即可）。<br />
3、滚动条颜色参数设置：<br />
scrollbar-3d-light-color 设置或检索滚动条亮边框颜色<br />
scrollbar-highlight-color 设置或检索滚动条3D界面的亮边（ThreedHighlight）颜色<br />
scrollbar-face-color  设置或检索滚动条3D表面（ThreedFace）的颜色<br />
scrollbar-arrow-color  设置或检索滚动条方向箭头的颜色<br />
scrollbar-shadow-color  设置或检索滚动条3D界面的暗边（ThreedShadow）颜色<br />
scrollbar-dark-shadow-color 设置或检索滚动条暗边框（ThreedDarkShadow）颜色<br />
scrollbar-base-color  设置或检索滚动条基准颜色<br />
<br />
<br />
<br />
<br />
<br />
</pre>
</span>
<h2><strong>xhtml中隐藏滚动条</strong>
</h2>
<p>在用ie6浏览有框架的xhtml页面的时候，默认会水平和垂直滚动条会一起出现，这是ie6的一个bug，在firefox上是正常的，出现的原因是其对XHTML 1.0 transitional doctype的解释缺陷.对于这个bug一般有3种解决方案，<br />
<span style="line-height: 1.3em; color: #3366ff;">方法1:</span>
<br />
代码：<br />
html { overflow-y: scroll; } <br />
原理：强制显示ie的垂直滚动条，而忽略水平滚动条<br />
优点：完全解决了这个问题, 允许你保持完整的XHTML doctype. <br />
缺点：即使页面不需要垂直滚动条的时候也会出现垂直滚动条。<br />
<span style="line-height: 1.3em; color: #3366ff;">方法2:</span>
<br />
代码：<br />
html { overflow-x: hidden; overflow-y: auto; } <br />
原理：隐藏横向滚动，垂直滚动根据内容自适应<br />
优点：在视觉上解决了这个问题.在不必要的时候, 未强制垂直滚动条出现.<br />
缺点：只是隐藏了水平滚动条，如果页面真正需要水平滚动条的时候，<br />
屏幕以外的内容会因为用户无法水平滚动，而看不到。<br />
<span style="line-height: 1.3em; color: #3366ff;">方法3:</span>
<br />
代码：<br />
body { margin-right: -15px; margin-bottom: -15px; } <br />
原理：这会在margin的水平和垂直方向上添加一个负值, IE添加了该精确数值后, 便会去除对滚动条的需求假象.<br />
优点：在视觉上解决了这个问题.，垂直滚动根据内容自适应<br />
缺点：由于"人为创建"了15px的外边距(margin), 所以无法使用该填充过的屏幕区域.</p>
<h2><strong>设置滚动条样式</strong>
</h2>
在原来的html的时候，我们可以这样定义整个页面的滚动条<br />
body{<br />
scrollbar-3dlight-color:#D4D0C8; /*- 最外左 -*/<br />
&nbsp;&nbsp; scrollbar-highlight-color:#fff; /*- 左二 -*/<br />
&nbsp;&nbsp; scrollbar-face-color:#E4E4E4; /*- 面子 -*/<br />
&nbsp;&nbsp; scrollbar-arrow-color:#666; /*- 箭头 -*/<br />
&nbsp;&nbsp; scrollbar-shadow-color:#808080; /*- 右二 -*/<br />
&nbsp;&nbsp; scrollbar-darkshadow-color:#D7DCE0; /*- 右一 -*/<br />
&nbsp;&nbsp; scrollbar-base-color:#D7DCE0; /*- 基色 -*/<br />
&nbsp;&nbsp; scrollbar-track-color:#;/*- 滑道 -*/<br />
}<br />
<br />
但是同样的代码，我们应用在 xhtml下就不起作用了，我相信好多好朋友也遇到过同样的问题<br />
那么怎么才能在xhtml下应用滚动条样式呢？看下列代码<br />
html{<br />
scrollbar-3dlight-color:#D4D0C8; /*- 最外左 -*/<br />
&nbsp;&nbsp; scrollbar-highlight-color:#fff; /*- 左二 -*/<br />
&nbsp;&nbsp; scrollbar-face-color:#E4E4E4; /*- 面子 -*/<br />
&nbsp;&nbsp; scrollbar-arrow-color:#666; /*- 箭头 -*/<br />
&nbsp;&nbsp; scrollbar-shadow-color:#808080; /*- 右二 -*/<br />
&nbsp;&nbsp; scrollbar-darkshadow-color:#D7DCE0; /*- 右一 -*/<br />
&nbsp;&nbsp; scrollbar-base-color:#D7DCE0; /*- 基色 -*/<br />
&nbsp;&nbsp; scrollbar-track-color:#;/*- 滑道 -*/<br />
}<br />
<br />
这段代码和上一段唯一的不同就是在css定义的元素上，一个是body一个是html。我们再测试一下，把html页面的"body"修改成"html"测试一下，发现依然可以实现效果。那到底是为什么呢？<br />
<br />
从字面上来看，xhtml比html多一个x,那么这个x其实也就是xml,为什么要加一个xml在里面？其实最根本的原因就是要让html更加结构化标
准化（因为html实在是太烂）。我们在html里面定义的是body，因为html不是很标准所以这样可以生效，而在xhtml里面这样就不行了，我看
看那个图很明显，body标签本身不是根元素，只有html才是根元素，而页面的滚动条也是属于根元素的，所以这就是我们为什么定义body没有效果的原
因，因为我们定义的只是一个子原素。ok，我们知道了原理，来做一个试验如果把定义"body"或"xhtml"换成"*"，<br />
*{<br />
scrollbar-3dlight-color:#D4D0C8; <br />
&nbsp;&nbsp; scrollbar-highlight-color:#fff; <br />
&nbsp;&nbsp; scrollbar-face-color:#E4E4E4; <br />
&nbsp;&nbsp; scrollbar-arrow-color:#666; <br />
&nbsp;&nbsp; scrollbar-shadow-color:#808080; <br />
&nbsp;&nbsp; scrollbar-darkshadow-color:#D7DCE0; <br />
&nbsp;&nbsp; scrollbar-base-color:#D7DCE0; <br />
&nbsp;&nbsp; scrollbar-track-color:#;<br />
}<br />
<br />
在html和xhtml都通过，因为*就是定义页面上的任何标签当然也包括了&#8220;html&#8221;这个标签。<br />
<br />
(ps:其实与其说是html与xhtml的区别到不如说是有无XHTML 1.0 transitional
doctype的区别，但是如果你把页面的XHTML 1.0 transitional
doctype去掉的话，那么这个页面就没有doctype，默认的显示方式就是html4.01,不过你要把XHTML 1.0
transitional doctype修改成HTML 4.01
doctype同样页面定义body也不会有效果的，虽然这个页面的标准是html 4.01)<span id="reply_content_50720783">
<pre><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
文章出处：<a href="http://www.365wf.com">养鸡设备</a><br />
<a href="http://www.365wf.com/show/yjrefenglu.html">养鸡热风炉</a>&nbsp;<br />
</pre>
</span>

<img src ="http://www.blogjava.net/DreamFight/aggbug/335581.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/DreamFight/" target="_blank">DreamFight</a> 2010-10-19 15:37 <a href="http://www.blogjava.net/DreamFight/articles/335581.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JS获取浏览器窗口大小 获取屏幕参数</title><link>http://www.blogjava.net/DreamFight/articles/335559.html</link><dc:creator>DreamFight</dc:creator><author>DreamFight</author><pubDate>Tue, 19 Oct 2010 05:01:00 GMT</pubDate><guid>http://www.blogjava.net/DreamFight/articles/335559.html</guid><wfw:comment>http://www.blogjava.net/DreamFight/comments/335559.html</wfw:comment><comments>http://www.blogjava.net/DreamFight/articles/335559.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/DreamFight/comments/commentRss/335559.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/DreamFight/services/trackbacks/335559.html</trackback:ping><description><![CDATA[<span id="articlecontent" class="wenzhang_con" style="width: 740px;">
<div>
<div>
<p>网页可见区域宽：document.body.clientWidth<br />
网页可见区域高：document.body.clientHeight<br />
网页可见区域宽：document.body.offsetWidth (包括边线的宽)<br />
网页可见区域高：document.body.offsetHeight (包括边线的宽)<br />
网页正文全文宽：document.body.scrollWidth<br />
网页正文全文高：document.body.scrollHeight<br />
网页被卷去的高：document.body.scrollTop<br />
网页被卷去的左：document.body.scrollLeft<br />
网页正文部分上：window.screenTop<br />
网页正文部分左：window.screenLeft<br />
屏幕分辨率的高：window.screen.height<br />
屏幕分辨率的宽：window.screen.width<br />
屏幕可用工作区高度：window.screen.availHeight<br />
屏幕可用工作区宽度：window.screen.availWidth</p>
<p>HTML精确定位:scrollLeft,scrollWidth,clientWidth,offsetWidth<br />
scrollHeight: 获取对象的滚动高度。<br />
scrollLeft:设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离<br />
scrollTop:设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离<br />
scrollWidth:获取对象的滚动宽度<br />
offsetHeight:获取对象相对于版面或由父坐标 offsetParent 属性指定的父坐标的高度<br />
offsetLeft:获取对象相对于版面或由 offsetParent 属性指定的父坐标的计算左侧位置<br />
offsetTop:获取对象相对于版面或由 offsetTop 属性指定的父坐标的计算顶端位置<br />
event.clientX 相对文档的水平座标<br />
event.clientY 相对文档的垂直座标<br />
event.offsetX 相对容器的水平坐标<br />
event.offsetY 相对容器的垂直坐标<br />
document.documentElement.scrollTop 垂直方向滚动的值<br />
event.clientX+document.documentElement.scrollTop 相对文档的水平座标+垂直方向滚动的量</p>
<p><br />
IE，FireFox 差异如下：</p>
<p>IE6.0、FF1.06+：</p>
<p>clientWidth = width + padding</p>
<p>clientHeight = height + padding</p>
<p>offsetWidth = width + padding + border</p>
<p>offsetHeight = height + padding + border</p>
<p>IE5.0/5.5：<br />
clientWidth = width - border</p>
<p>clientHeight = height - border</p>
<p>offsetWidth = width</p>
<p>offsetHeight = height</p>
<p>(需要提一下：CSS中的margin属性，与clientWidth、offsetWidth、clientHeight、offsetHeight均无关)</p>
<p>网页可见区域宽： document.body.clientWidth<br />
网页可见区域高： document.body.clientHeight<br />
网页可见区域宽： document.body.offsetWidth (包括边线的宽)<br />
网页可见区域高： document.body.offsetHeight (包括边线的高)<br />
网页正文全文宽： document.body.scrollWidth<br />
网页正文全文高： document.body.scrollHeight<br />
网页被卷去的高： document.body.scrollTop<br />
网页被卷去的左： document.body.scrollLeft<br />
网页正文部分上： window.screenTop<br />
网页正文部分左： window.screenLeft<br />
屏幕分辨率的高： window.screen.height<br />
屏幕分辨率的宽： window.screen.width<br />
屏幕可用工作区高度： window.screen.availHeight<br />
屏幕可用工作区宽度： window.screen.availWidth</p>
<p>－－－－－－－－－－－－－－－－－－－</p>
<p>技术要点<br />
本节代码主要使用了Document对象关于窗口的一些属性，这些属性的主要功能和用法如下。</p>
<p>要得到窗口的尺寸，对于不同的浏览器，需要使用不同的属性和方法：若要检测窗口的真实尺寸，在Netscape下需要使用Window的属性；在
IE下需要深入Document内部对body进行检测；在DOM环境下，若要得到窗口的尺寸，需要注意根元素的尺寸，而不是元素。</p>
<p>Window对象的innerWidth属性包含当前窗口的内部宽度。Window对象的innerHeight属性包含当前窗口的内部高度。</p>
<p>Document对象的body属性对应HTML文档的标签。Document对象的documentElement属性则表示HTML文档的根节点。</p>
<p>document.body.clientHeight表示HTML文档所在窗口的当前高度。document.body. clientWidth表示HTML文档所在窗口的当前宽度。</p>
<p>实现代码</p>
<div><sup><a title="WP-CodeBox HowTo?" href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank"><span style="color: #99cc00;">?</span></a></sup><a href="http://www.cnblogs.com/ie421/admin/javascript:;"><font color="#ffffff">[Copy to clipboard]</font></a>Download <a href="http://www.52004.com.cn/wp-content/plugins/wp-codebox/wp-codebox.php?p=1199&amp;download=52004.txt"><font color="#ffffff">52004.txt</font></a>
</div>
<div style="padding-bottom: 15px;">
<table width="100%">
    <tbody>
        <tr id="p11991">
            <td width="1%">
            <pre>1
            2
            3
            4
            5
            6
            7
            8
            9
            10
            11
            12
            13
            14
            15
            16
            17
            18
            19
            20
            21
            22
            23
            24
            25
            26
            27
            28
            29
            30
            31
            32
            33
            34
            35
            36
            37
            38
            39
            40
            41
            42
            43
            44
            45
            46
            47
            48
            </pre>
            </td>
            <td id="p1199code1">
            <pre style="font-family: monospace;">&lt; !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
            "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
            &lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
            &lt;head&gt;
            &lt;title&gt;请调整浏览器窗口&lt;/title&gt;
            &lt;meta http-equiv="content-type" content="text/html; charset=gb2312"&gt;
            &lt;/meta&gt;&lt;/head&gt;
            &lt;body&gt;
            &lt;h2 align="center"&gt;请调整浏览器窗口大小&lt;/h2&gt;&lt;hr /&gt;
            &lt;form action="#" method="get" name="form1" id="form1"&gt;
            &lt;!--显示浏览器窗口的实际尺寸--&gt;
            浏览器窗口 的 实际高度: &lt;input type="text" name="availHeight" size="4"/&gt;&lt;br /&gt;
            浏览器窗口 的 实际宽度: &lt;input type="text" name="availWidth" size="4"/&gt;&lt;br /&gt;
            &lt;/form&gt;
            &lt;script type="text/javascript"&gt;
            &lt;!--
            var winWidth = 0;
            var winHeight = 0;
            function findDimensions() //函数：获取尺寸
            {
            //获取窗口宽度
            if (window.innerWidth)
            winWidth = window.innerWidth;
            else if ((document.body) &amp;&amp; (document.body.clientWidth))
            winWidth = document.body.clientWidth;
            //获取窗口高度
            if (window.innerHeight)
            winHeight = window.innerHeight;
            else if ((document.body) &amp;&amp; (document.body.clientHeight))
            winHeight = document.body.clientHeight;
            //通过深入Document内部对body进行检测，获取窗口大小
            if (document.documentElement  &amp;&amp; document.documentElement.clientHeight &amp;&amp; document.documentElement.clientWidth)
            {
            winHeight = document.documentElement.clientHeight;
            winWidth = document.documentElement.clientWidth;
            }
            //结果输出至两个文本框
            document.form1.availHeight.value= winHeight;
            document.form1.availWidth.value= winWidth;
            }
            findDimensions();
            //调用函数，获取数值
            window.onresize=findDimensions;
            &nbsp;
            //--&gt;
            &lt;/script&gt;
            &lt;/body&gt;
            &lt;/html&gt;</pre>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p>源程序解读</p>
<p>（1）程序首先建立一个表单，包含两个文本框，用于显示窗口当前的宽度和高度，并且，其数值会随窗口大小的改变而变化。</p>
<p>（2）在随后的JavaScript代码中，首先定义了两个变量winWidth和winHeight，用于保存窗口的高度值和宽度值。</p>
<p>（3）然后，在函数findDimensions ( )中，使用window.innerHeight和window.innerWidth得到窗口的高度和宽度，并将二者保存在前述两个变量中。</p>
<p>（4）再通过深入Document内部对body进行检测，获取窗口大小，并存储在前述两个变量中。</p>
<p>（5）在函数的最后，通过按名称访问表单元素，结果输出至两个文本框。</p>
<p>（6）在JavaScript代码的最后，通过调用findDimensions ( )函数，完成整个操作。<br />
<img alt="" src="http://image3.360doc.com/DownloadImg/2009/2/9/2041_2496581_1.jpg" border="0" height="602" width="609" /></p>
</div>
</div>
</span>
<img src ="http://www.blogjava.net/DreamFight/aggbug/335559.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/DreamFight/" target="_blank">DreamFight</a> 2010-10-19 13:01 <a href="http://www.blogjava.net/DreamFight/articles/335559.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>利用js使png透明图像在ie6下正常使用</title><link>http://www.blogjava.net/DreamFight/articles/335343.html</link><dc:creator>DreamFight</dc:creator><author>DreamFight</author><pubDate>Sun, 17 Oct 2010 01:05:00 GMT</pubDate><guid>http://www.blogjava.net/DreamFight/articles/335343.html</guid><wfw:comment>http://www.blogjava.net/DreamFight/comments/335343.html</wfw:comment><comments>http://www.blogjava.net/DreamFight/articles/335343.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/DreamFight/comments/commentRss/335343.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/DreamFight/services/trackbacks/335343.html</trackback:ping><description><![CDATA[<br />
详细进解在下边文件中请下载使用：<br />
<a href="http://www.blogjava.net/Files/DreamFight/msiepng.rar">http://www.blogjava.net/Files/DreamFight/msiepng.rar</a>
<img src ="http://www.blogjava.net/DreamFight/aggbug/335343.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/DreamFight/" target="_blank">DreamFight</a> 2010-10-17 09:05 <a href="http://www.blogjava.net/DreamFight/articles/335343.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用js动态改变css样式表</title><link>http://www.blogjava.net/DreamFight/articles/335342.html</link><dc:creator>DreamFight</dc:creator><author>DreamFight</author><pubDate>Sun, 17 Oct 2010 00:48:00 GMT</pubDate><guid>http://www.blogjava.net/DreamFight/articles/335342.html</guid><wfw:comment>http://www.blogjava.net/DreamFight/comments/335342.html</wfw:comment><comments>http://www.blogjava.net/DreamFight/articles/335342.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/DreamFight/comments/commentRss/335342.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/DreamFight/services/trackbacks/335342.html</trackback:ping><description><![CDATA[用setAttribute方法实现一个页面两份样式表的效果，具体方法如下： <br />
<br />
第一步：在连接样式表的元素里定义一个id,例如 <br />
<br />
&lt;link href="1.css" rel="stylesheet" type="text/css" id="css"&gt; <br />
<br />
我定义的id是css。 <br />
<br />
第二步：写一个js函数，代码如下： <br />
<br />
&lt;script type="text/javascript"&gt; <br />
function change(a){ <br />
var css=document.getElementById("css"); <br />
if (a==1) <br />
css.setAttribute("href","1.css"); <br />
if (a==2) <br />
css.setAttribute("href","2.css"); <br />
} <br />
&lt;/script&gt; <br />
<br />
这个函数的code可以放在页面的任何地方。 <br />
<br />
第三步：为改变页面的样式表的连接添加一个函数的触发事件，代码如下： <br />
<br />
&lt;a href="#" onClick="change(1)"&gt;1.css&lt;/a&gt; <br />
&lt;a href="#" onClick="change(2)"&gt;2.css&lt;/a&gt; <br />
<br />
该效果在IE和FF下均测试通过，相信大家看完后因该非常明了，利用这个方法我们可以让浏览者自己选择需要显示的样式表，比如年老者可以选择一个字体较大的样式表。这里需要注意的两点是： <br />
<br />
在这个例子中函数名function后面的名字不能为links或者link，如果为links或者link，样式表将不被改变，具体什么原因我也不大清楚，可能是javascript的保留字符。 <br />
另外如果是改变整个页面的样式，你需要在样式表文件里定义body的高度为100%<br />
<br />
<br />
还有一种方法：<br />
<br />
&lt;script language="javascript"&gt; <br />
var b_v = navigator.appVersion; <br />
var IE6 = b_v.search(/MSIE 6/i) != -1; <br />
var IE7 = b_v.search(/MSIE 7/i) != -1; <br />
if (IE6) {<br />
document.write("&lt;link href=""css/neiye_ie6.css"" rel=""stylesheet"" type=""text/css"" id=""cssStyle"" /&gt;");<br />
}else{<br />
document.write("&lt;link href=""css/neiye.css"" rel=""stylesheet"" type=""text/css"" id=""cssStyle"" /&gt;");<br />
} <br />
&lt;/script&gt; <br />
<br />
<br />
<br />
<br />
<a href="http://www.365wf.com">
自动化养鸡设备</a><br />
<img src ="http://www.blogjava.net/DreamFight/aggbug/335342.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/DreamFight/" target="_blank">DreamFight</a> 2010-10-17 08:48 <a href="http://www.blogjava.net/DreamFight/articles/335342.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>区别不同浏览器</title><link>http://www.blogjava.net/DreamFight/articles/326339.html</link><dc:creator>DreamFight</dc:creator><author>DreamFight</author><pubDate>Fri, 16 Jul 2010 10:12:00 GMT</pubDate><guid>http://www.blogjava.net/DreamFight/articles/326339.html</guid><wfw:comment>http://www.blogjava.net/DreamFight/comments/326339.html</wfw:comment><comments>http://www.blogjava.net/DreamFight/articles/326339.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/DreamFight/comments/commentRss/326339.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/DreamFight/services/trackbacks/326339.html</trackback:ping><description><![CDATA[<h3>区别不同浏览器，CSS hack写法：</h3>
<br />
<div>区别<span class="blue">IE6</span>与<span class="orange">FF</span>：</div>
<div>&nbsp; &nbsp; &nbsp; &nbsp;background:<span class="orange">orange</span>;<span class="red">*</span>background:<span class="blue">blue</span>;</div>
<br />
<div>区别<span class="blue">IE6</span>与<span class="green">IE7</span>：</div>
<div>&nbsp; &nbsp; &nbsp; &nbsp;background:<span class="green">green</span>&nbsp;<span class="red">!important</span>;background:<span class="blue">blue</span>;</div>
<br />
<div>区别<span class="green">IE7</span>与<span class="orange">FF</span>：</div>
<div>&nbsp; &nbsp; &nbsp; &nbsp;background:<span class="orange">orange</span>;&nbsp;<span class="red">*</span>background:<span class="green">green</span>;</div>
<br />
<div>区别<span class="orange">FF</span>，<span class="green">IE7</span>，<span class="blue">IE6</span>：</div>
<div>&nbsp; &nbsp; &nbsp; &nbsp;background:<span class="orange">orange</span>;<span class="red">*</span>background:<span class="green">green</span>&nbsp;<span class="red">!important</span>;*background:<span class="blue">blue</span>;</div>
<br />
<div>注：IE都能识别*;标准浏览器(如FF)不能识别*；</div>
<div>IE6能识别*，但不能识别 !important,</div>
<div>IE7能识别*，也能识别!important;</div>
<div>FF不能识别*，但能识别!important;</div>
<br />
<table class="hack" cellspacing="1" cellpadding="0" border="0">
    <tbody>
        <tr>
            <td><br />
            </td>
            <td>IE6</td>
            <td>IE7</td>
            <td>FF</td>
        </tr>
        <tr>
            <td>*</td>
            <td>&#8730;</td>
            <td>&#8730;</td>
            <td>&#215;</td>
        </tr>
        <tr>
            <td>!important</td>
            <td>&#215;</td>
            <td>&#8730;</td>
            <td>&#8730;</td>
        </tr>
    </tbody>
</table>
<br />
<br />
<hr />
另外再补充一个，下划线"<span class="red">_</span>",<br />
IE6支持下划线，IE7和firefox均不支持下划线。<br />
<br />
于是大家还可以这样来区分<span class="blue">IE6</span>，<span class="green">IE7</span>，<span class="orange">firefox</span><br />
: background:<span class="orange">orange</span>;<span class="red">*</span>background:<span class="green">green</span>;<span class="red">_</span>background:<span class="blue">blue</span>; <br />
<br />
注：不管是什么方法，书写的顺序都是firefox的写在前面，IE7的写在中间，IE6的写在最后面。<br />
<img src ="http://www.blogjava.net/DreamFight/aggbug/326339.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/DreamFight/" target="_blank">DreamFight</a> 2010-07-16 18:12 <a href="http://www.blogjava.net/DreamFight/articles/326339.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>The Underscore Hack </title><link>http://www.blogjava.net/DreamFight/articles/323612.html</link><dc:creator>DreamFight</dc:creator><author>DreamFight</author><pubDate>Tue, 15 Jun 2010 06:22:00 GMT</pubDate><guid>http://www.blogjava.net/DreamFight/articles/323612.html</guid><wfw:comment>http://www.blogjava.net/DreamFight/comments/323612.html</wfw:comment><comments>http://www.blogjava.net/DreamFight/articles/323612.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/DreamFight/comments/commentRss/323612.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/DreamFight/services/trackbacks/323612.html</trackback:ping><description><![CDATA[<ol>
    <li>下划线&#8220;_&#8221;在 CSS2.1 规范中是被承认的 CSS 标识。
    </li>
    <li>浏览器会忽略未知的 CSS 属性。
    </li>
    <li>MSIE5+（Windows）会忽略 CSS 属性名前的 &#8220;_&#8221;。 </li>
</ol>
<p>因此，这个 CSS 的分析是，例如： _color:red。首页， 正确的，对于 CSS2.1 规范来说是被允许的（即使软件验证，只支持 CSS2.0 老版本，说它是一个 Bug ：他们是错误的，但它是正确的）。其次， 被任何浏览器忽略，除了 IE 。最后， 当颜色被处理：在 WinIE 中是红色。</p>
<p>如上，这就是所说的 IE 的 Bug ，特征是以简单明了的方式建立仅对 WinIE 有效的 CSS 属性（MacIE 没有这样的 Bug 和特征）。这样很容易调整，例如被错误执行的位置：在 WinIE 中被调整（见例子）。</p>
<pre><code><span class="com">#menu {</span><span class="pln"><br />
position</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">fixed</span><span class="pun">;</span><span class="pln"><br />
_position</span><span class="pun">:</span><span class="pln"> absolute</span><span class="pun">;</span><span class="pln"><br />
</span><span class="pun">...</span><span class="pln"><br />
</span><span class="pun">}</span></code></pre>
<p>同样的方法可以用来调整 min-height 的属性在 WinIE 中消失的现象（见例子）</p>
<pre><code><span class="com">#box {</span><span class="pln"><br />
min</span><span class="pun">-</span><span class="pln">height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">300px</span><span class="pun">;</span><span class="pln"><br />
height</span><span class="pun">:</span><span class="pln"> auto</span><span class="pun">;</span><span class="pln"><br />
_height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">300px</span><span class="pun">;</span><span class="pln"><br />
</span><span class="pun">...</span><span class="pln"><br />
</span><span class="pun">}</span></code></pre>
<p><strong>注：</strong>这是利用另外一个 WinIE 的 Bug ，当 height: auto 时处理为 overflow：visible 。详细资料，看这篇文章<a href="http://wellstyled.com/singlelang.php?lang=en&amp;page=css-minheight-hack.html" target="_blank">《The &#8220;min-height&#8221; Hack&#8221;》</a>。</p>
<p>测试环境：Windows&#8217; MSIE 5, 5.5, 6, Opera, Mac OSX&#8217;s MSIE 5, Safari, Camino, Mozilla , Firefox。</p>
<p><strong>补充说明：</strong>标准模式下的 IE7 将不再解析下划线开头的属性，但是会把它当作一个&#8220;用户自定义&#8221;属性。自定义属性并不能应用到表现上，但是它会存在于文档模型中，可以使用脚本来访问。</p>
<p>而非标准模式下的IE7依旧解析&#8220;_&#8221; Bug。</p>
<br />
<br />
<br />
<br />
<br />
<dl id="interlocution">
<dt>屏蔽IE浏览器（也就是IE下不显示）
</dt><dd>*:lang(zh) <em>select</em> {<em>font:12px</em>&nbsp; !important;} /*FF,<del>OP</del>可见，特别提醒：由于Opera最近的升级，目前此句只为FF所识别*/<br />
<em>select</em>:empty {<em>font:12px</em>&nbsp; !important;} /*safari可见*/<br />
<span>这里select是选择符，根据情况更换。第二句是MAC上safari浏览器独有的。</span>
</dd><dt>仅IE7与IE5.0可以识别
</dt><dd>*+html&nbsp; <em>select</em> {<em>&#8230;</em>}<br />
<span>当面临需要只针对IE7与IE5.0做样式的时候就可以采用这个HACK。</span>
</dd><dt>仅IE7可以识别
</dt><dd>*+html&nbsp; <em>select</em> {<em>&#8230;!important;</em>}<br />
<span>当面临需要只针对IE7做样式的时候就可以采用这个HACK。</span>
</dd><dt>IE6及IE6以下识别
</dt><dd>* html&nbsp; <em>select</em> {<em>&#8230;</em>}<br />
<span>这个地方要特别注意很多博客都写成了是IE6的HACK其实IE5.x同样可以识别这个HACK。其它浏览器不识别。</span><br />
html/**/ &gt;body&nbsp; <em>select</em> {<em>&#8230;</em>}<br />
<span>这句与上一句的作用相同。</span>
</dd><dt>仅IE6不识别，屏蔽IE6
</dt><dd><em>select</em> { <em>display</em> /*屏蔽IE6*/:<em>none</em>;}<br />
<span>这里主要是通过CSS注释分开一个属性与值，注释在冒号前。</span>
</dd><dt>仅IE6与IE5不识别，屏蔽IE6与IE5
</dt><dd><em>select</em>/**/ { <em>display</em> /*IE6,IE5不识别*/<em>:none</em>;}<br />
<span>这里与上面一句不同的是在选择符与花括号之间多了一个CSS注释。<strong>不屏蔽IE5.5</strong></span>
</dd><dt>仅IE5不识别，屏蔽IE5
</dt><dd><em>select</em>/*IE5不识别*/ {<em>&#8230;</em>}<br />
<span>这一句是在上一句中去掉了属性区的注释。只有IE5不识别，IE5.5可以识别。</span>
</dd><dt>盒模型解决方法
</dt><dd><em>selct</em> {<em>width:IE5.x宽度;</em> voice-family :"\"}\""; voice-family:inherit; <em>width:正确宽度;</em>}<br />
<span>盒模型的清除方法不是通过!important来处理的。这点要明确。</span>
</dd><dt>清除浮动
</dt><dd><em>select</em>:after {content:"."; display:block; height:0; clear:both; visibility:hidden;}<br />
<span>在Firefox中，当子级都为浮动时，那么父级的高度就无法完全的包住整个子级，那么这时用这个清除浮动的HACK来对父级做一次定义，那么就可以解决这个问题。</span>
</dd><dt>截字省略号
</dt><dd><em>select</em> { -o-text-overflow:ellipsis; text-overflow:ellipsis; white-space:nowrap; overflow:hidden; }<br />
<span>这个是在越出长度后会自行的截掉多出部分的文字，并以省略号结尾，很好的一个技术。只是目前Firefox并不支持。</span>
</dd><dt>只有Opera识别
</dt><dd>@media all and (min-width: 0px){ <em>select {&#8230;&#8230;}</em> }<br />
<span>针对Opera浏览器做单独的设定。</span></dd></dl>
<p>以上都是写CSS中的一些HACK，这些都是用来解决局部的兼容性问题，如果希望把兼容性的内容也分离出来，不妨试一下下面的几种过滤器。这些过滤器有的是写在CSS中通过过滤器导入特别的样式，也有的是写在HTML中的通过条件来链接或是导入需要的补丁样式。</p>
<dl id="interlocution">
<dt>IE5.x的过滤器，只有IE5.x可见
</dt><dd>@media tty {<br />
i{content:"\";/*" "*/}} @import '<em>ie5win.css</em>'; /*";}<br />
}/* */
</dd><dt>IE5/MAC的过滤器，一般用不着
</dt><dd>/*\*//*/<br />
&nbsp;&nbsp;&nbsp; @import "<em>ie5mac.css</em>";<br />
/**/
</dd><dt>IE的if条件Hack
</dt><dd>&lt;!--[if IE]&gt; <em>Only IE</em> &lt;![endif]--&gt;<br />
<span>所有的IE可识别</span><br />
&lt;!--[if IE 5.0]&gt; <em>Only IE 5.0</em> &lt;![endif]--&gt;<br />
<span>只有IE5.0可以识别</span><br />
&lt;!--[if gt IE 5.0]&gt; <em>Only IE 5.0+</em> &lt;![endif]--&gt;<br />
<span>IE5.0包换IE5.5都可以识别</span><br />
&lt;!--[if lt IE 6]&gt; <em>Only IE 6-</em> &lt;![endif]--&gt;<br />
<span>仅IE6可识别</span><br />
&lt;!--[if gte IE 6]&gt; <em>Only IE 6/+</em> &lt;![endif]--&gt;<br />
<span>IE6以及IE6以下的IE5.x都可识别</span><br />
&lt;!--[if lte IE 7]&gt; <em>Only IE 7/-</em> &lt;![endif]--&gt;<br />
<span>仅IE7可识别</span></dd></dl>
<p>以上内容可能并不全面，欢迎大家能和我一起把这些技巧都汇总起来，为以后工作的查询提供一个方便，同时在这里感谢那些研究出这些HACK的作者们。</p>
<p>&nbsp;</p>
<img src ="http://www.blogjava.net/DreamFight/aggbug/323612.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/DreamFight/" target="_blank">DreamFight</a> 2010-06-15 14:22 <a href="http://www.blogjava.net/DreamFight/articles/323612.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>总结清除浮动的方法</title><link>http://www.blogjava.net/DreamFight/articles/314916.html</link><dc:creator>DreamFight</dc:creator><author>DreamFight</author><pubDate>Tue, 09 Mar 2010 02:22:00 GMT</pubDate><guid>http://www.blogjava.net/DreamFight/articles/314916.html</guid><wfw:comment>http://www.blogjava.net/DreamFight/comments/314916.html</wfw:comment><comments>http://www.blogjava.net/DreamFight/articles/314916.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/DreamFight/comments/commentRss/314916.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/DreamFight/services/trackbacks/314916.html</trackback:ping><description><![CDATA[http://www.webjx.com/css/divcss-5991.html<br />
<h1>CSS教程：总结清除浮动的方法</h1>
<div class="clear"></div>
<div class="clear"></div>
<div id="entrybody">
<p>
<table style="border-right: #cccccc 1px dotted; table-layout: fixed; border-top: #cccccc 1px dotted; border-left: #cccccc 1px dotted; border-bottom: #cccccc 1px dotted" cellspacing="0" cellpadding="6" width="95%" align="center" border="0">
    <tbody>
        <tr>
            <td style="word-wrap: break-word" bgcolor="#fdfddf"><font color="#ff0000">网页制作Webjx文章简介：</font><font color="#000000">很多人都有研究闭合浮动元素的问题，但是解决方法却不一样，也并不是每一种方法都尽善尽美。闭合浮动元素（或者叫清除浮动）是web标准设计中经常会遇到的一个问题，因此，这里我想总结一下目前经常用到的几种方法，并比较一下他们的易用性和适用环境。如果你有更好的方</font></td>
        </tr>
    </tbody>
</table>
</p>
<p>作者：Dudo</p>
<p>原文连接：<a href="http://www.dudo.org/article.asp?id=239" target="_blank">http://www.dudo.org/article.asp?id=239</a></p>
<p>很多人都有研究闭合浮动元素的问题，但是解决方法却不一样，也并不是每一种方法都尽善尽美。闭合浮动元素（或者叫清除浮动）是web标准设计中经常会遇到的一个问题，因此，这里我想总结一下目前经常用到的几种方法，并比较一下他们的易用性和适用环境。如果你有更好的方法不妨提出来大家一起讨论。</p>
<h3>问题的提出：</h3>
<p>最简单的一种情形就是我们把一个小的、固定宽度的div元素（比如导航、引用等）和其他元素内容一起包含在一个大的div中。比如下面这段代码：</p>
<p class="code">&lt;div id="outer"&gt;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp; &lt;div id="inner"&gt; &lt;h2&gt;A Column&lt;/h2&gt; &lt;/div&gt;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp; &lt;h1&gt;Main Content&lt;/h1&gt;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp; &lt;p&gt;Lorem ipsum&lt;/p&gt;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&lt;/div&gt;</p>
<p>我们可以为&#8220;#inner&#8221;设定一个宽度值（比如说20%），但是由于div是块级元素，即使我们设定了宽度，其后面的内容也只能在下一行中显示，除非我们给它设定一个浮动属性（无论是向左浮动或者向右浮动）。那么此时会产生我们上面提到的问题了。</p>
<p>如果&#8220;#inner&#8221;的宽度和高度都比&#8220;#outer&#8221;小，这不会有问题。</p>
<p>但是，如果&#8220;#inner&#8221;的高度超过了&#8220;#outer&#8221;，那么的底部就会超出&#8220;#outer&#8221;的底部。这是因为我们为&#8220;#inner&#8221;设定了float属性后，它就会脱离的文本流，无论其宽度和高度怎么变化都不会使&#8220;#outer&#8221;跟随变化。</p>
<p><strong>例一：未清除浮动时的布局表现</strong></p>
<p><textarea class="codeTextarea">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;head&gt;
&lt;title&gt; 清除浮动（闭合浮动元素）例一：问题的提出 &lt;/title&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt;
&lt;style type="text/css"&gt;
#outer {
background-color:#999;
border:3px solid #666;
}
#inner {
background-color:#ccc;
float:left;
width:26%;
}
#inner *, #outer p {
margin: 5px 5px 5px 10px;
}
kbd {
display:block;
background:#fafaff;
border:1px solid #b0c0d0;
text-indent:0px;
}
kbd:first-line {
color:#c3c;
font-weight:bold;
text-indent:20px
}
#footer {
clear:both;
border:3px solid #333;
background-color:#999;
margin-top:15px;
height:60px;
line-height:60px
}
ul,li,h1 { margin:0;padding:0}
&lt;/style&gt;
&lt;script type="text/javascript"&gt;
// &lt;![CDATA[
/* Pixy's filler generator - http://www.pixy.cz/blogg/clanky/css-3col-layout/ */
function toggleContent(name,n) {
var i,t='',el = document.getElementById(name);
if (!el.origCont) el.origCont = el.innerHTML;
for (i=0;i&lt;n;i++) t += el.origCont;
el.innerHTML = t;
}
// ]]&gt;
&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div id="outer"&gt;
&lt;div id="inner"&gt;
&lt;h1&gt;A Column&lt;/h1&gt;
&lt;kbd&gt;#inner {&lt;br/&gt;
float:left;&lt;br/&gt;
width:26%;&lt;br/&gt;
}&lt;/kbd&gt;
&lt;p&gt;点击下面的链接以改变该列的高度&lt;/p&gt;
&lt;ul id="lccont"&gt;
&lt;li&gt;&lt;a href="javascript:toggleContent('lccont',1)"&gt;缩短&lt;/a&gt;&lt;/li&gt;
&lt;li&gt; &lt;a href="javascript:toggleContent('lccont',5)"&gt;加长&lt;/a&gt;
&lt;/li&gt;&lt;li&gt; &lt;a href="javascript:toggleContent('lccont',10)"&gt;再长点&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;－－－－－－－&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h1&gt;Main Content&lt;/h1&gt;
&lt;p&gt;&lt;kbd&gt;#outer &lt;br /&gt;{&lt;br /&gt;
background-color:#fff;&lt;br /&gt;
width:100%;	&lt;br /&gt;
}&lt;/kbd&gt;
&lt;/p&gt;
&lt;p&gt;
点击改变长度 &lt;a href="javascript:toggleContent('mccont',1)"&gt;缩短&lt;/a&gt;，&lt;a href="javascript:toggleContent('mccont',10)"&gt;加长&lt;/a&gt; 或者 &lt;a href="javascript:toggleContent('mccont',40)"&gt;更长&lt;/a&gt;。&lt;/p&gt;
&lt;p id="mccont"&gt;闭合浮动元素（或者叫清除浮动）是web标准设计中经常会遇到的一个问题，因此，这里我想总结一下目前经常用到的几种方法，并比较一下他们的易用性和适用环境。如果你有更好的方法不妨提出来大家一起讨论。 &lt;/p&gt;
&lt;/div&gt;
&lt;div id="footer"&gt;
From: &lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;</textarea><br />
<input onclick="runCode(this.offsetParent.getElementsByTagName('textarea')[0])" type="button" value="运行代码" /> [Ctrl+A 全部选择 提示：你可先修改部分代码，再按运行]</p>
<p>在这个例子中，最开始由于&#8220;#inner&#8221;的高度小于&#8220;#outer&#8221;所以不会有问题，但是当你点击&#8220;加长&#8221;后你会发现&#8220;#inner&#8221;的底边已经超出了&#8220;#outer&#8221;的范围，而&#8220;#outer&#8221;没有发生改变。这就是我们所提到的&#8220;清除浮动（闭合浮动元素）&#8221;或者是&#8220;闭合浮动&#8221;问题</p>
<h3>解决办法：</h3>
<p><strong>1）额外标签法</strong></p>
<p>第一个，也是W3C推荐的方法就是使用额外标签的办法。这种方法就是在内容的末尾增加一个空的标签，典型的做法就是使用类似</p>
<p class="code">&lt;br style="clear:both;" /&gt;</p>
<p>或者使用</p>
<p class="code">&lt;div style="clear:both;"&gt;&lt;/div&gt;</p>
<p>这种办法通过增加一个HTML元素迫使外部容器撑开。不过这个办法会增加额外的标签使HTML结构看起来不够简洁。</p>
<p><strong>例二：使用空div闭合浮动元素</strong></p>
<p><textarea class="codeTextarea">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;head&gt;
&lt;title&gt; 清除浮动（闭合浮动元素）例二：使用空div清除浮动 &lt;/title&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt;
&lt;style type="text/css"&gt;
#outer {
background-color:#999;
border:3px solid #666;
}
#inner {
background-color:#ccc;
float:left;
width:26%;
}
#inner *, #outer p {
margin: 5px 5px 5px 10px;
}
div.clear{
clear:left;
}
kbd {
display:block;
background:#fafaff;
border:1px solid #b0c0d0;
text-indent:0px;
}
kbd:first-line {
color:#c3c;
font-weight:bold;
text-indent:20px
}
#footer {
clear:both;
border:3px solid #333;
background-color:#999;
margin-top:15px;
height:60px;
line-height:60px
}
ul,li,h1 { margin:0;padding:0}
&lt;/style&gt;
&lt;script type="text/javascript"&gt;
// &lt;![CDATA[
/* Pixy's filler generator - http://www.pixy.cz/blogg/clanky/css-3col-layout/ */
function toggleContent(name,n) {
var i,t='',el = document.getElementById(name);
if (!el.origCont) el.origCont = el.innerHTML;
for (i=0;i&lt;n;i++) t += el.origCont;
el.innerHTML = t;
}
// ]]&gt;
&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div id="outer"&gt;
&lt;div id="inner"&gt;
&lt;h1&gt;#inner&lt;/h1&gt;
&lt;kbd&gt;#inner {&lt;br/&gt;
float:left;&lt;br/&gt;
width:26%;&lt;br/&gt;
}&lt;/kbd&gt;
&lt;p&gt;点击下面的链接以改变该列的高度&lt;/p&gt;
&lt;ul id="lccont"&gt;
&lt;li&gt;&lt;a href="javascript:toggleContent('lccont',1)"&gt;缩短&lt;/a&gt;&lt;/li&gt;
&lt;li&gt; &lt;a href="javascript:toggleContent('lccont',5)"&gt;加长&lt;/a&gt;
&lt;/li&gt;&lt;li&gt; &lt;a href="javascript:toggleContent('lccont',10)"&gt;再长点&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;－－－－－－－&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h1&gt;#outer&lt;/h1&gt;
&lt;p&gt;&lt;kbd&gt;#outer &lt;br /&gt;{&lt;br /&gt;
background-color:#999;&lt;br /&gt;
width:100%;	&lt;br /&gt;
}
div.clear{
clear:left;
}&lt;/kbd&gt;
&lt;/p&gt;
&lt;p&gt;
点击改变长度 &lt;a href="javascript:toggleContent('mccont',1)"&gt;缩短&lt;/a&gt;，&lt;a href="javascript:toggleContent('mccont',10)"&gt;加长&lt;/a&gt; 或者 &lt;a href="javascript:toggleContent('mccont',40)"&gt;更长&lt;/a&gt;。&lt;/p&gt;
&lt;p id="mccont"&gt;闭合浮动元素（或者叫清除浮动）是web标准设计中经常会遇到的一个问题，因此，这里我想总结一下目前经常用到的几种方法，并比较一下他们的易用性和适用环境。如果你有更好的方法不妨提出来大家一起讨论。 &lt;/p&gt;
&lt;div class="clear"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div id="footer"&gt;
From:&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
</textarea><br />
<input onclick="runCode(this.offsetParent.getElementsByTagName('textarea')[0])" type="button" value="运行代码" /> [Ctrl+A 全部选择 提示：你可先修改部分代码，再按运行]</p>
<p>P.S. 我发现在Internet Explorer中（无论是6还是7）&lt;br style="clear:both" /&gt;可以清除浮动，但是不能闭合浮动元素，在Firefox中就没有这个问题，不知道是什么原因？！</p>
<p><strong>2）使用after伪类</strong></p>
<p>使用after伪类和内容声明在指定的现在内容末尾添加新的内容。经常的做法就是添加一个&#8220;点&#8221;，因为它比较小不太引人注意。然后我们再利用它来清除浮动（闭合浮动元素），并隐藏这个内容：</p>
<p class="code">#outer:after{&nbsp; <br />
&nbsp;&nbsp;&nbsp; content:".";&nbsp; <br />
&nbsp;&nbsp;&nbsp; height:0;&nbsp; <br />
&nbsp;&nbsp;&nbsp; visibility:hidden;&nbsp; <br />
&nbsp;&nbsp;&nbsp; display:block;&nbsp; <br />
&nbsp;&nbsp;&nbsp; clear:both;</p>
<p>但奇怪的是Windows中的Internet Explorer 6及以下版本并不支持CSS 2.1中的after伪类而Mac中的Internet Explorer却可以正常使用，所以我们还要单独针对Win/IE进行处理。在区分Win和Mac中Internet Explorer的诸多方法中，最常用就是Holly招数。Holly招数的原理是这样的，CSS代码</p>
<p class="code">/* 这段代码只有IE/Win可以看见 \*/ <br />
CSS 规则&nbsp; <br />
/* 结束Hack */</p>
<p>上面的代码中有两行注释，其中第一行结束时出现了反斜杠（\），在Mac的Internet Explorer中会认为注释并没有结束，于是继续向下直到第一个完事的&#8220;*/&#8221;出现，这中间的所有字符都被当作是注释，而IE/Win却也只会把第一行和第三行看作是注释，中间的为有效代码。所以这样就区分出来了不同平台上的IE了。</p>
<p>正是基于以上原理，在windows的IE 6上的清理浮动，可以使用如下代码：</p>
<p class="code">#outer {&nbsp; <br />
&nbsp;&nbsp;&nbsp; display:inline-block;&nbsp; <br />
}&nbsp; <br />
/* Holly Hack Begine \*/&nbsp; <br />
* html #outer {&nbsp; <br />
&nbsp;&nbsp;&nbsp; height:1%;&nbsp; <br />
}&nbsp; <br />
#outer {&nbsp; <br />
&nbsp;&nbsp;&nbsp; display:block;&nbsp; <br />
}&nbsp; <br />
/* End Hack */ </p>
<p><strong>例三：使用:after伪类清理浮动</strong></p>
<p><textarea class="codeTextarea">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;head&gt;
&lt;title&gt; 清除浮动（闭合浮动元素）例三：使用:after伪类 &lt;/title&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt;
&lt;style type="text/css"&gt;
#outer {
background-color:#999;
border:3px solid #666;
}
#outer:after {
content:".";
display:block;
height:0;
visibility:hidden;
clear:left;
}
#outer {
display:inline-block;
}
/* Holly Hack Begine \*/
* html #outer {
height:1%;
}
#outer {
display:block;
}
/* End Hack */
#inner {
background-color:#ccc;
float:left;
width:26%;
}
#inner *, #outer p {
margin: 5px 5px 5px 10px;
}
kbd {
display:block;
background:#fafaff;
border:1px solid #b0c0d0;
text-indent:0px;
}
kbd:first-line {
color:#c3c;
font-weight:bold;
text-indent:20px
}
#footer {
clear:both;
border:3px solid #333;
background-color:#999;
margin-top:15px;
height:60px;
line-height:60px
}
ul,li,h1 { margin:0;padding:0}
&lt;/style&gt;
&lt;script type="text/javascript"&gt;
// &lt;![CDATA[
/* Pixy's filler generator - http://www.pixy.cz/blogg/clanky/css-3col-layout/ */
function toggleContent(name,n) {
var i,t='',el = document.getElementById(name);
if (!el.origCont) el.origCont = el.innerHTML;
for (i=0;i&lt;n;i++) t += el.origCont;
el.innerHTML = t;
}
// ]]&gt;
&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div id="outer"&gt;
&lt;div id="inner"&gt;
&lt;h1&gt;#inner&lt;/h1&gt;
&lt;kbd&gt;#inner {&lt;br/&gt;
float:left;&lt;br/&gt;
width:26%;&lt;br/&gt;
}&lt;/kbd&gt;
&lt;p&gt;点击下面的链接以改变该列的高度&lt;/p&gt;
&lt;ul id="lccont"&gt;
&lt;li&gt;&lt;a href="javascript:toggleContent('lccont',1)"&gt;缩短&lt;/a&gt;&lt;/li&gt;
&lt;li&gt; &lt;a href="javascript:toggleContent('lccont',5)"&gt;加长&lt;/a&gt;
&lt;/li&gt;&lt;li&gt; &lt;a href="javascript:toggleContent('lccont',10)"&gt;再长点&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;－－－－－－－&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h1&gt;#outer&lt;/h1&gt;
&lt;p&gt;&lt;kbd&gt;	#outer:after {
content:".";
display:block;
height:0;
visibility:hidden;
clear:left;
}&lt;br/&gt;
#outer {
display:inline-block;
}&lt;br/&gt;
/* Holly Hack Begine \*/&lt;br/&gt;
* html #outer {
height:1%;
}&lt;br/&gt;
#outer {
display:block;
}
/* End Hack */
&lt;/kbd&gt;
&lt;/p&gt;
&lt;p&gt;
点击改变长度 &lt;a href="javascript:toggleContent('mccont',1)"&gt;缩短&lt;/a&gt;，&lt;a href="javascript:toggleContent('mccont',10)"&gt;加长&lt;/a&gt; 或者 &lt;a href="javascript:toggleContent('mccont',40)"&gt;更长&lt;/a&gt;。&lt;/p&gt;
&lt;p id="mccont"&gt;闭合浮动元素（或者叫清除浮动）是web标准设计中经常会遇到的一个问题，因此，这里我想总结一下目前经常用到的几种方法，并比较一下他们的易用性和适用环境。如果你有更好的方法不妨提出来大家一起讨论。 &lt;/p&gt;
&lt;/div&gt;
&lt;div id="footer"&gt;
From: &lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
</textarea><br />
<input onclick="runCode(this.offsetParent.getElementsByTagName('textarea')[0])" type="button" value="运行代码" /> [Ctrl+A 全部选择 提示：你可先修改部分代码，再按运行]</p>
<p>P.S. 如果你不考虑 IE6/Mac用户的话你只需要写* html #outer {height:1%;}即可。</p>
<p>另外，似乎在Internet Explorer 7中不高display:inline-block也不好使。因此要使用最完整的Hack招数。</p>
<p>如果你对如何使用CSS 2中的伪类不熟悉的话，推荐你先阅读一下&#8220;细说CSS样式选择符——CSS 2.1 Selectors（1）、（2）、（3）&#8221;</p>
<p><strong>3）浮动外部元素，float-in-float</strong></p>
<p>这种方法很简单，就是把&#8220;#outer&#8221;元素也进行浮动（向左或者向右）。</p>
<p>例子</p>
<p>但是这种方法带来的别外一个问题就是和&#8220;#outer&#8221;相邻的下一个元素会受到&#8220;#outer&#8221;的影响位置会产生变化，所以使用这种方法一定要小心。有选择把页面中的所有元素都浮动起来，最后使用一个适当的有意义的元素（比如页脚）进行清理浮动，这有助于减少不必要的标记，但是过多的浮动会增加布局的难度。</p>
<p><strong>例四：float-in-float</strong></p>
<p><textarea class="codeTextarea">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;head&gt;
&lt;title&gt; 清除浮动（闭合浮动元素）例四：float-in-float &lt;/title&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt;
&lt;style type="text/css"&gt;
#outer {
float:left;
background-color:#999;
border:3px solid #666;
}
#inner {
background-color:#ccc;
float:left;
width:26%;
}
#inner *, #outer p {
margin: 5px 5px 5px 10px;
}
kbd {
display:block;
background:#fafaff;
border:1px solid #b0c0d0;
text-indent:0px;
}
kbd:first-line {
color:#c3c;
font-weight:bold;
text-indent:20px
}
#footer {
clear:both;
border:3px solid #333;
background-color:#999;
margin-top:15px;
height:60px;
line-height:60px
}
ul,li,h1 { margin:0;padding:0}
&lt;/style&gt;
&lt;script type="text/javascript"&gt;
// &lt;![CDATA[
/* Pixy's filler generator - http://www.pixy.cz/blogg/clanky/css-3col-layout/ */
function toggleContent(name,n) {
var i,t='',el = document.getElementById(name);
if (!el.origCont) el.origCont = el.innerHTML;
for (i=0;i&lt;n;i++) t += el.origCont;
el.innerHTML = t;
}
// ]]&gt;
&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div id="outer"&gt;
&lt;div id="inner"&gt;
&lt;h1&gt;#inner&lt;/h1&gt;
&lt;kbd&gt;#inner {&lt;br/&gt;
float:left;&lt;br/&gt;
width:26%;&lt;br/&gt;
}&lt;/kbd&gt;
&lt;p&gt;点击下面的链接以改变该列的高度&lt;/p&gt;
&lt;ul id="lccont"&gt;
&lt;li&gt;&lt;a href="javascript:toggleContent('lccont',1)"&gt;缩短&lt;/a&gt;&lt;/li&gt;
&lt;li&gt; &lt;a href="javascript:toggleContent('lccont',5)"&gt;加长&lt;/a&gt;
&lt;/li&gt;&lt;li&gt; &lt;a href="javascript:toggleContent('lccont',10)"&gt;再长点&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;－－－－－－－&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h1&gt;#outer&lt;/h1&gt;
&lt;p&gt;&lt;kbd&gt;	#outer {&lt;br/&gt;
float:left;&lt;br/&gt;
background-color:#999;
}
&lt;/kbd&gt;
&lt;/p&gt;
&lt;p&gt;
点击改变长度 &lt;a href="javascript:toggleContent('mccont',1)"&gt;缩短&lt;/a&gt;，&lt;a href="javascript:toggleContent('mccont',10)"&gt;加长&lt;/a&gt; 或者 &lt;a href="javascript:toggleContent('mccont',40)"&gt;更长&lt;/a&gt;。&lt;/p&gt;
&lt;p id="mccont"&gt;闭合浮动元素（或者叫清除浮动）是web标准设计中经常会遇到的一个问题，因此，这里我想总结一下目前经常用到的几种方法，并比较一下他们的易用性和适用环境。如果你有更好的方法不妨提出来大家一起讨论。 &lt;/p&gt;
&lt;/div&gt;
&lt;div id="footer"&gt;
From: &lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
</textarea><br />
<input onclick="runCode(this.offsetParent.getElementsByTagName('textarea')[0])" type="button" value="运行代码" /> [Ctrl+A 全部选择 提示：你可先修改部分代码，再按运行]</p>
<p><strong>4）设置overflow为hidden或者auto</strong></p>
<p>把&#8220;#outer&#8221;的属性overflow值设置为hidden或者auto同样可以清理浮动</p>
<p>这种方法不需要添加额外的标记。但是使用overflow的时候一定要小心，因为它会浏览器的表现。另外，在Internet Explorer 6中单纯地设置overflow为hidden或者auto并不能有效清除浮动（闭合浮动元素），还要指定&#8220;#outer&#8221;的一个维度，即要么给它指定一个宽度，要么指定一个高度：</p>
<p class="code">#outer {<br />
&nbsp;&nbsp;&nbsp; overflow:auto;<br />
&nbsp;&nbsp;&nbsp; width:100%;<br />
}</p>
<p>注意：如果你要在IE5/Mac上使用这种方法清除浮动（闭合浮动元素）的话，你就必须设定overflow的属性为值为hidden。</p>
<p><strong>例五：overflow:hidden</strong></p>
<p><textarea class="codeTextarea">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;head&gt;
&lt;title&gt; 清除浮动（闭合浮动元素）例五：overflow:hidden或overflow:auto &lt;/title&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt;
&lt;style type="text/css"&gt;
#outer {
width:100%;
overflow:hidden;
background-color:#999;
border:3px solid #666;
}
#inner {
background-color:#ccc;
float:left;
width:26%;
}
#inner *, #outer p {
margin: 5px 5px 5px 10px;
}
kbd {
display:block;
background:#fafaff;
border:1px solid #b0c0d0;
text-indent:0px;
}
kbd:first-line {
color:#c3c;
font-weight:bold;
text-indent:20px
}
#footer {
clear:both;
border:3px solid #333;
background-color:#999;
margin-top:15px;
height:60px;
line-height:60px
}
ul,li,h1 { margin:0;padding:0}
&lt;/style&gt;
&lt;script type="text/javascript"&gt;
// &lt;![CDATA[
/* Pixy's filler generator - http://www.pixy.cz/blogg/clanky/css-3col-layout/ */
function toggleContent(name,n) {
var i,t='',el = document.getElementById(name);
if (!el.origCont) el.origCont = el.innerHTML;
for (i=0;i&lt;n;i++) t += el.origCont;
el.innerHTML = t;
}
// ]]&gt;
&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div id="outer"&gt;
&lt;div id="inner"&gt;
&lt;h1&gt;#inner&lt;/h1&gt;
&lt;kbd&gt;#inner {&lt;br/&gt;
float:left;&lt;br/&gt;
width:26%;&lt;br/&gt;
}&lt;/kbd&gt;
&lt;p&gt;点击下面的链接以改变该列的高度&lt;/p&gt;
&lt;ul id="lccont"&gt;
&lt;li&gt;&lt;a href="javascript:toggleContent('lccont',1)"&gt;缩短&lt;/a&gt;&lt;/li&gt;
&lt;li&gt; &lt;a href="javascript:toggleContent('lccont',5)"&gt;加长&lt;/a&gt;
&lt;/li&gt;&lt;li&gt; &lt;a href="javascript:toggleContent('lccont',10)"&gt;再长点&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;－－－－－－－&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h1&gt;#outer&lt;/h1&gt;
&lt;p&gt;&lt;kbd&gt;	#outer {&lt;br/&gt;
overflow:hidden;&lt;br/&gt;
width:100%;&lt;br/&gt;
background-color:#999;
}
&lt;/kbd&gt;
&lt;/p&gt;
&lt;p&gt;
点击改变长度 &lt;a href="javascript:toggleContent('mccont',1)"&gt;缩短&lt;/a&gt;，&lt;a href="javascript:toggleContent('mccont',10)"&gt;加长&lt;/a&gt; 或者 &lt;a href="javascript:toggleContent('mccont',40)"&gt;更长&lt;/a&gt;。&lt;/p&gt;
&lt;p id="mccont"&gt;闭合浮动元素（或者叫清除浮动）是web标准设计中经常会遇到的一个问题，因此，这里我想总结一下目前经常用到的几种方法，并比较一下他们的易用性和适用环境。如果你有更好的方法不妨提出来大家一起讨论。 &lt;/p&gt;
&lt;/div&gt;
&lt;div id="footer"&gt;
From:&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
</textarea><br />
<input onclick="runCode(this.offsetParent.getElementsByTagName('textarea')[0])" type="button" value="运行代码" /> [Ctrl+A 全部选择 提示：你可先修改部分代码，再按运行]</p>
<h3>比较与选择</h3>
<p>四种方法中使用哪种最好呢？首先，不推荐使用after伪类，对比其它三种方法，holly招数有点太烦琐，不好掌握，我上面讲到的holly招数中并不仅仅是IE/Win上有问题，当出现:hover时还会有其它问题，所以我们又加上了inline-block等属性，也就是说这种方法存在更多的不确定性。推荐对代码有&#8220;洁癖&#8221;并且技术较高的人使用。<br />
&nbsp;&nbsp;&nbsp; 那么其它三种方法其实都可以考虑。</p>
<p>不过使用overflow的时候，可能会对页面表现带来影响，而且这种影响是不确定的，你最好是能在多个浏览器上测试你的页面；</p>
<p>而对于使用额外标签清除浮动（闭合浮动元素），是W3C推荐的做法。至于使用&lt;br /&gt;元素还是空&lt;div&gt;&lt;/div&gt;可以根据自己的喜好来选（当然你也可以使用其它块级元素）。不过要注意的是，&lt;br /&gt;本身是有表现的，它会多出一个换行出来，所以要设定它的heigh为0，以隐藏它的表现。所以大多数情况下使用空&lt;div&gt;比较合适。</p>
<p>float-in-float，也是一个很好的选择，把你要进行清理浮动的元素外层再加上一层&lt;div&gt;并设置属性fload:left即可，不过要注意相邻元素的变化。</p>
</div>
<img src ="http://www.blogjava.net/DreamFight/aggbug/314916.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/DreamFight/" target="_blank">DreamFight</a> 2010-03-09 10:22 <a href="http://www.blogjava.net/DreamFight/articles/314916.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>firefox margin-top失效的原因与解决办法</title><link>http://www.blogjava.net/DreamFight/articles/290587.html</link><dc:creator>DreamFight</dc:creator><author>DreamFight</author><pubDate>Mon, 10 Aug 2009 13:38:00 GMT</pubDate><guid>http://www.blogjava.net/DreamFight/articles/290587.html</guid><wfw:comment>http://www.blogjava.net/DreamFight/comments/290587.html</wfw:comment><comments>http://www.blogjava.net/DreamFight/articles/290587.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/DreamFight/comments/commentRss/290587.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/DreamFight/services/trackbacks/290587.html</trackback:ping><description><![CDATA[最近发现好多用margin-top实现的，上边距效果一直没有，一直都不知道什么原因，今天偶然看到了，特分享给大家<br />
为什么要翻译这篇说明？css2本有人已翻译过，但看一下，很粗糙（不是说自己就怎么怎么样啊，翻译者真的是很值得敬佩的！），近来跟css与xhtml接触得越来越多，但接触得越多，迷惑却总不见少。 <br />
现在我觉得很多问题根本不能称之为问题，原因就在于我们的草率理解，比如杀鸡用牛刀，不是不可以，是不合理、不恰当，根源错了，表象也就会错了，如果解决问题从表象入手，难免总会摸不着头脑，还是那句话，要脚踏实地，切莫浮躁。 <br />
在这个说明中，&#8220;collapsing margins&#8221;（折叠margin）的意思是：2个或以上盒模型之间（关系可以是相邻或嵌套）相邻的margin属性（这之间不能有非空内容、 padding区域、border边框或使用清除分离方法）结合表示为一个单独的margin。 <br />
在css2.1中，水平的margin不会被折叠。 <br />
垂直margin可能在一些盒模型中被折叠： <br />
1、在常规文档流中，2个或以上的块级盒模型相邻的垂直margin会被折叠。 <br />
最终的margin值计算方法如下： <br />
a、全部都为正值，取最大者； <br />
b、不全是正值，则都取绝对值，然后用正值减去最大值； <br />
c、没有正值，则都取绝对值，然后用0减去最大值。 <br />
注意：相邻的盒模型可能由DOM元素动态产生并没有相邻或继承关系。 <br />
2、相邻的和模型中，如果其中的一个是浮动的（floated），垂直margin不会被折叠，甚至一个浮动的盒模型和它的子元素之间也是这样。 <br />
3、设置了overflow属性的元素和它的子元素之间的margin不会被折叠（overflow取值为visible除外）。 <br />
4、设置了绝对定位（position:absolute）的盒模型，垂直margin不会被折叠，甚至和他们的子元素之间也是一样。 <br />
5、设置了display:inline-block的元素，垂直margin不会被折叠，甚至和他们的子元素之间也是一样。 <br />
6、如果一个盒模型的上下margin相邻，这时它的margin可能折叠覆盖（collapse through）它。在这种情况下，元素的位置（position）取决于它的相邻元素的margin是否被折叠。 <br />
a、如果元素的margin和它的父元素的margin-top折叠在一起，盒模型border-top的边界定义和它的父元素相同。 <br />
b、另外，任意元素的父元素不参与margin的折叠，或者说只有父元素的margin-bottom是参与计算的。如果元素的border-top非零，那么元素的border-top边界位置和原来一样。 <br />
一个应用了清除操作的元素的margin-top绝不会和它的块级父元素的margin-bottom折叠。 <br />
注意，那些已经被折叠覆盖的元素的位置对其他已经被折叠的元素的位置没有任何影响；只有在对这些元素的子元素布局时，border-top边界位置才是必需的。 <br />
7、根元素的垂直margin不会被折叠。 <br />
浮动的块级元素的margin-bottom总是与它后面的浮动块级兄弟元素（floated next in-flow block-level sibling）的margin-top相邻，除非那个同级元素使用了清除操作。 <br />
浮动的块级元素的margin-top和它的第一个浮动块级子元素（floated first in-flow block-level child）的margin-top相邻（如果该元素没有border-top，没有padding-top，并且子元素没有使用清除操作）。 <br />
浮动的块级元素的margin-bottom如果符合下列条件，那么它和它的最后一个浮动块级子元素的margin-bottom相邻（如果该元素没有指定padding-bottom或border）： <br />
a、指定了height:auto <br />
b、min-height小于元素的实际使用高度（height） <br />
c、max-height大于元素的实际使用高度（height） <br />
如果一个元素的min-height属性设置为0，那么它所拥有的margin是相邻的，并且它既没有border-top和border- bottom，也没有padding-top和padding-bottom，它的height属性可以是0或auto，它不能包含一个内联的盒模型（line box），它所有的浮动子元素（如果有的话）的margin也都是相邻的。 <br />
当一个元素拥有的margin折叠了，并且它使用了清除操作，那么它的margin-top会和紧随其后的兄弟元素的相邻margin折叠，但结果是它的margin将无法和其块级父元素的margin-bottom折叠。 <br />
折叠操作是以padding、margin、border的值为基础的（即在浏览器解析所有这些值之后），折叠后的margin计算将覆盖已使用的不同margin的值。 <br />
[复制此代码]CODE:<br />
<div id="d0" style="height: 500px; background-color: rgb(51,51,51)"><br style="line-height: 0pt" />
<br />
//不加入br这一行，在FIREFOX中id1的margin-top:20px将会在d0上作用，使d0上方与body间有20px的间距,d1与d0的上方没有间距，而IE内正常显示 </div>
<img src ="http://www.blogjava.net/DreamFight/aggbug/290587.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/DreamFight/" target="_blank">DreamFight</a> 2009-08-10 21:38 <a href="http://www.blogjava.net/DreamFight/articles/290587.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>