<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>PlanABC - 怿飞’s Blog &#187; HTML/CSS/XML/XSL</title>
	<atom:link href="http://www.planabc.net/category/html-css-xml-xsl/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.planabc.net</link>
	<description>落草为根—专注前端技术&#38;&#38;关注用户体验</description>
	<lastBuildDate>Tue, 24 Aug 2010 06:33:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>CSS Expression 的优化</title>
		<link>http://www.planabc.net/2009/09/21/optimization_of_css_eexpression/</link>
		<comments>http://www.planabc.net/2009/09/21/optimization_of_css_eexpression/#comments</comments>
		<pubDate>Mon, 21 Sep 2009 08:41:08 +0000</pubDate>
		<dc:creator>怿飞</dc:creator>
				<category><![CDATA[HTML/CSS/XML/XSL]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[expression]]></category>
		<category><![CDATA[优化]]></category>

		<guid isPermaLink="false">http://www.planabc.net/?p=292</guid>
		<description><![CDATA[IE 浏览器中 CSS Expression 特性的最大的问题：会反复执行，每秒钟可能执行了成百上千次，有严重的性能问题。 如何对 CSS Expression 进行优化呢？ 至少：如果我们将 CSS Expression 在匹配的元素中仅执行一次，性能将会提升很大。 old9 在 《CSS Expression Reloaded》一文中提供了一个解决方案： 在 CSS Expression 语句体里，将触发该 Expression 的 CSS 属性重置。 例如： div { zoom: expression(function(el){el.style.zoom = "1"; alert(el.tagName);}(this)); } 补充几点： CSS Expression 执行在任意一个匹配的元素上。 在 CSS expression 内， “this”关键字指向当前匹配的 HTML 元素。 CSS 属性选用一些不常用的属性来触发，触发完重置回默认值。 最近在 Ajaxian 的文章《Creating a querySelector for IE [...... ]]></description>
			<content:encoded><![CDATA[<p>IE 浏览器中 CSS Expression 特性的最大的问题：会反复执行，每秒钟可能执行了成百上千次，有严重的性能问题。</p>
<p>如何对 CSS Expression 进行优化呢？</p>
<p>至少：如果我们将 CSS Expression 在匹配的元素中仅执行一次，性能将会提升很大。</p>
<p><a href="http://old9.blogsome.com/" title="web.Frontend" target="_blank">old9</a> 在 <a href="http://old9.blogsome.com/2008/10/26/css-expression-reloaded/" title="CSS Expression Reloaded" target="_blank">《CSS Expression Reloaded》</a>一文中提供了一个解决方案：</p>
<blockquote><p>在 CSS Expression 语句体里，将触发该 Expression 的 CSS 属性重置。</p></blockquote>
<p>例如：</p>
<pre><code>div {
    zoom: expression(function(el){el.style.zoom = "1"; alert(el.tagName);}(this));
}</code></pre>
<p>补充几点：</p>
<ol>
<li>CSS Expression 执行在任意一个匹配的元素上。</li>
<li>在 CSS expression 内， “this”关键字指向当前匹配的 HTML 元素。</li>
<li>CSS 属性选用一些不常用的属性来触发，触发完重置回默认值。</li>
</ol>
<p>最近在 <a href="http://ajaxian.com/" title="Ajaxian" target="_blank">Ajaxian</a> 的文章<a href="http://ajaxian.com/archives/creating-a-queryselector-for-ie-that-runs-at-native-speed" title="" target="_blank">《Creating a querySelector for IE that runs at “native speed”》</a> 中看到作者 Dion Almaer 也提供了一个类似的解决方式：</p>
<pre><code>div {
    -singlex: expression(this.singlex ? 0 : (function(t) { alert(t.tagName); t.singlex = 0; } )(this));
}</code></pre>
<p>但此代码并没有完全解决 CSS Expression 最大的性能问题，因为每次触发还是要去执行 Expression 脚本。甚至你可以滚动下你鼠标的中间滚轮，意向不到的问题将会发生。</p>
<p>最后强调：<strong>仅是对 CSS Expression 做了优化，但并未说 CSS Expression 就不存在其他方面的问题。</strong></p>
<img src="http://www.planabc.net/?ak_action=api_record_view&id=292&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.planabc.net/2009/09/21/optimization_of_css_eexpression/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>如何在 IE 中使用 HTML5 元素</title>
		<link>http://www.planabc.net/2009/06/13/how_to_use_html5_elements_in_ie/</link>
		<comments>http://www.planabc.net/2009/06/13/how_to_use_html5_elements_in_ie/#comments</comments>
		<pubDate>Sat, 13 Jun 2009 06:47:03 +0000</pubDate>
		<dc:creator>怿飞</dc:creator>
				<category><![CDATA[HTML/CSS/XML/XSL]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[IE]]></category>

		<guid isPermaLink="false">http://www.planabc.net/?p=249</guid>
		<description><![CDATA[Sjoerd Visscher 发现了一个简洁的 方法 让样式在 IE 中作用到未知的元素上——仅需 JS 创建此未知元素即可： document.createElement(elementName) 同理（对于 IE 来说 HTML5 元素即是未知元素），该方法也可顺延到 HTML5 的元素上（详细见：John Resig 写的 《HTML5 Shiv》 一文）： &#60;html&#62; &#60;head&#62; &#60;style&#62;section { color: red; }&#60;/style&#62; &#60;script&#62;document.createElement("section")&#60;/script&#62; &#60;/head&#62; &#60;body&#62; &#60;section&#62;Hello World!&#60;/section&#62; &#60;/body&#62; &#60;/html&#62; 在 IE 中，为了更方便使用 HTML5 元素，我们可以引入这样的脚本： (function(){ // from: http://dean.edwards.name/weblog/2007/03/sniff/ if(!/*@cc_on!@*/0) return; var html5 = "abbr,article,aside,audio,bb,canvas,datagrid,datalist,details,dialog,eventsource,figure,footer,hgroup,header,mark,menu,meter,nav,output,progress,section,time,video".split(','); for(var i = 0, [...... ]]></description>
			<content:encoded><![CDATA[<p><a href="http://w3future.com/weblog/" target="_blank" title="Sjoerd Visscher's weblog - w3future.com">Sjoerd Visscher</a> 发现了一个简洁的 <a href="http://intertwingly.net/blog/2008/01/22/Best-Standards-Support#c1201006277" target="_blank" title="CSS rules to apply to unknown elements in IE">方法</a> 让样式在 IE 中作用到未知的元素上——仅需 JS 创建此未知元素即可：</p>
<pre><code>document.createElement(elementName)</code></pre>
<p>同理（对于 IE 来说 <a href="http://dev.w3.org/html5/spec/Overview.html" target="HTML5" target="_blank">HTML5</a> 元素即是未知元素），该方法也可顺延到 <a href="http://dev.w3.org/html5/spec/Overview.html" target="HTML5" target="_blank">HTML5</a> 的元素上（详细见：<a href="http://ejohn.org/" title="John Resig" target="_blank">John Resig</a> 写的 <a href="http://ejohn.org/blog/html5-shiv/" title="HTML5 Shi" target="_blank">《HTML5 Shiv》</a> 一文）：</p>
<pre><code>&lt;html&gt;
&lt;head&gt;
&lt;style&gt;section { color: red; }&lt;/style&gt;
&lt;script&gt;document.createElement("section")&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;section&gt;Hello World!&lt;/section&gt;
&lt;/body&gt;
&lt;/html&gt;</code></pre>
<p>在 IE 中，为了更方便使用 <a href="http://dev.w3.org/html5/spec/Overview.html" target="HTML5" target="_blank">HTML5</a> 元素，我们可以引入这样的脚本：</p>
<pre><code>(function(){
    // from: http://dean.edwards.name/weblog/2007/03/sniff/
    if(!/*@cc_on!@*/0) return; 

    var html5 = "abbr,article,aside,audio,bb,canvas,datagrid,datalist,details,dialog,eventsource,figure,footer,hgroup,header,mark,menu,meter,nav,output,progress,section,time,video".split(',');
    for(var i = 0, len = html5.length; i < len; i++ ) {
        document.createElement(html5[i]);
    }
})();</code></pre>
<p>详细具体应用的案例如下：</p>
<ul>
<li><a href="http://www.fofronline.com/2009-06/moving-markup-towards-html5/" target="_blank" title="Moving markup towards HTML5">《Moving markup towards HTML5》</a></li>
<li><a href="http://www.brucelawson.co.uk/tests/html5-elements.html" target="_blank" title="Test new HTML 5 elements">《Test new HTML 5 elements》</a></li>
</ul>
<img src="http://www.planabc.net/?ak_action=api_record_view&id=249&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.planabc.net/2009/06/13/how_to_use_html5_elements_in_ie/feed/</wfw:commentRss>
		<slash:comments>25</slash:comments>
		</item>
		<item>
		<title>如何快速定位页面中复杂 CSS BUG 问题</title>
		<link>http://www.planabc.net/2009/01/14/how_to_quickly_locate_the_complicated_css_bug/</link>
		<comments>http://www.planabc.net/2009/01/14/how_to_quickly_locate_the_complicated_css_bug/#comments</comments>
		<pubDate>Wed, 14 Jan 2009 03:40:02 +0000</pubDate>
		<dc:creator>怿飞</dc:creator>
				<category><![CDATA[HTML/CSS/XML/XSL]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://www.planabc.net/?p=178</guid>
		<description><![CDATA[相信大家对于常见 CSS BUG 的处理已经相对比较熟悉，例如：IE6 Three Pixel Gap、IE5/6 Doubled Float-Margin Bug 等等。但时常我们也会碰到复杂的 CSS BUG 问题，所谓“复杂”实质是指触发的条件很复杂，而“BUG” 也并非指一定是浏览器的 BUG 。对于此类问题，我们首先要解决的是如何定位到问题，只有快速的定位到问题，才能更好的解决问题。 对于快速定位，个人的经验处理一般如下（基本可以定位到我在 淘宝 遇到的 90% 以上的复杂 CSS BUG 问题）： 1、检查页面的标签是否闭合 不要小看这条，也许折腾了你两天都没有解决的 CSS BUG 问题，却仅仅源于这里。毕竟页面的模板一般都是由开发来嵌套的，而他们很容易犯此类问题。 快捷提示：可以用 Dreamweaver 打开文件检查，一般没有闭合的标签，会黄色背景高亮。 2、样式排除法 有些复杂的页面也许加载了 N 个外... ]]></description>
			<content:encoded><![CDATA[<p>相信大家对于常见 CSS BUG 的处理已经相对比较熟悉，例如：<a href="http://www.positioniseverything.net/explorer/threepxt" target="_blank" title="IE6 Three Pixel Gap">IE6 Three Pixel Gap</a>、<a href="http://www.positioniseverything.net/explorer/doubled-margin.html" target="_blank" title="IE5/6 Doubled Float-Margin Bug">IE5/6 Doubled Float-Margin Bug</a> 等等。但时常我们也会碰到复杂的 CSS BUG 问题，所谓“复杂”实质是指触发的条件很复杂，而“BUG” 也并非指一定是浏览器的 BUG 。对于此类问题，我们首先要解决的是如何定位到问题，只有快速的定位到问题，才能更好的解决问题。</p>
<p>对于快速定位，个人的经验处理一般如下（基本可以定位到我在 <a href="http://www.taobao.com" target="_blank" title="淘宝网">淘宝</a> 遇到的 90% 以上的复杂 CSS BUG 问题）：</p>
<p>1、检查页面的标签是否闭合</p>
<p>不要小看这条，也许折腾了你两天都没有解决的 CSS BUG 问题，却仅仅源于这里。毕竟页面的模板一般都是由开发来嵌套的，而他们很容易犯此类问题。</p>
<p>快捷提示：可以用 Dreamweaver 打开文件检查，一般没有闭合的标签，会黄色背景高亮。</p>
<p>2、样式排除法</p>
<p>有些复杂的页面也许加载了 N 个外链 CSS 文件，那么逐个删除 CSS 文件，找到 BUG 触发的具体 CSS 文件，缩小锁定的范围。</p>
<p>对于刚才锁定的问题 CSS 样式文件，逐行删除具体的样式定义，定位到具体的触发样式定义，甚至是具体的触发样式属性。</p>
<p>3、模块确认法</p>
<p>有时候我们也可以从页面的 HTML 元素出发。删除页面中不同的 HTML 模块，寻找到触发问题的 HTML 模块。</p>
<p>4、检查是否清除浮动</p>
<p>其实有不少的 CSS BUG 问题是因为没有清除浮动造成的。养成良好的清除浮动的习惯是必要的，推荐使用 <a href="http://www.planabc.net/2008/05/04/yui_grids_css/" target="_blank" title="无额外 HTML 标签的清除浮动的方法">无额外 HTML 标签的清除浮动的方法</a>（尽量避免使用 overflow:hidden;zoom:1 的类似方法来清除浮动，会有太多的限制性）。</p>
<p>5、检查 IE 下是否触发 <a href="http://www.satzansatz.de/cssd/onhavinglayout.htm" target="_blank" title="haslayout">haslayout</a></p>
<p>很多的 IE 下复杂 CSS BUG 都与 IE 特有的 <a href="http://www.satzansatz.de/cssd/onhavinglayout.htm" target="_blank" title="haslayout">haslayout</a> 息息相关。熟悉和理解 <a href="http://www.satzansatz.de/cssd/onhavinglayout.htm" target="_blank" title="haslayout">haslayout</a> 对于处理复杂的 CSS BUG 会事半功倍。推荐阅读 old9 翻译的 <a href="http://old9.blogsome.com/2006/04/11/onhavinglayout" title="On having layout" target="_blank">《On having layout》</a>（如果无法翻越穿越伟大的 GFW，可阅读 <a href="http://bbs.blueidea.com/viewthread.php?tid=2636904" title="On having layout" target="_blank">蓝色上的转帖</a> ） </p>
<p>快捷提示：如果触发了 haslayout，IE 的调试工具 <a href="http://www.microsoft.com/downloadS/details.aspx?familyid=E59C3964-672D-4511-BB3E-2D5E1DB91038&#038;displaylang=en" target="_blank" title="IE Developer Toolbar下载">IE Developer Toolbar</a> 中的属性中将会显示 haslayout 值为 -1。</p>
<p>6、边框背景调试法</p>
<p>故名思议就是给元素设置显眼的边框或者背景（一般黑色或红色），进行调试。此方法是最常用的调试 CSS BUG 的方法之一，对于复杂 BUG 依旧适用。经济实惠还环保^^</p>
<p>最后想给大家强调一点的是，养成良好的书写习惯，减少额外标签，尽量语义，符合标准，其实可以为我们减少很多额外的复杂 CSS BUG，更多的时候其实是我们自己给自己制造了麻烦。希望大家远离 BUG ，生活越来越美好。</p>
<img src="http://www.planabc.net/?ak_action=api_record_view&id=178&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.planabc.net/2009/01/14/how_to_quickly_locate_the_complicated_css_bug/feed/</wfw:commentRss>
		<slash:comments>38</slash:comments>
		</item>
		<item>
		<title>按钮在 IE 中两边被拉伸的 BUG</title>
		<link>http://www.planabc.net/2008/11/12/the_stretched_buttons_bug/</link>
		<comments>http://www.planabc.net/2008/11/12/the_stretched_buttons_bug/#comments</comments>
		<pubDate>Wed, 12 Nov 2008 08:07:09 +0000</pubDate>
		<dc:creator>怿飞</dc:creator>
				<category><![CDATA[HTML/CSS/XML/XSL]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[button]]></category>
		<category><![CDATA[IE]]></category>

		<guid isPermaLink="false">http://www.planabc.net/?p=140</guid>
		<description><![CDATA[大家在写按钮（input、button）的时候会发现在 IE 下： 随着字数的增多，两边的间距也会越来越大。 在 WIN 的XP 风格下，当字数很多时，两边还会出现严重的锯齿。 到底是什么原因呢？ 蓝色理想 原 WEB标准化专栏 的斑竹 zbm2001z 给出了一个答案： 1、IE 在按钮的 value 值每增加 4 个字节（汉字为 2 个）时，就会在按钮的两边产生总共一个字节的内边距宽度。 2、IE 的按钮（XP 风格）默认样式是一个固定尺寸的圆角矩形图片作背景，所以一旦按钮变宽变高后，这个固定尺寸的圆角矩形图片的边缘自然就会出现“拉毛”的现象了。 对于第二个问题我们暂时没办法去解决，除非 WIN 系统自己修复 BUG ，但对于第一个问题 ，我们还是可以修复的。 IE 下给按钮元素设置 overflow 属性的 visible 值（注 ：padding 值仅在设置了overflow:visible 属性后才有效），这个属性其... ]]></description>
			<content:encoded><![CDATA[<p>大家在写按钮（input、button）的时候会发现在 IE 下：</p>
<ol>
<li>随着字数的增多，两边的间距也会越来越大。</li>
<li>在 WIN 的XP 风格下，当字数很多时，两边还会出现严重的锯齿。</li>
</ol>
<p>到底是什么原因呢？</p>
<p><a href="http://www.blueidea.com" target="_blank" title="蓝色理想">蓝色理想</a> 原 <a href="http://bbs.blueidea.com/forum-5-1.html" target="_blank" title="WEB标准化专">WEB标准化专栏</a> 的斑竹 <a href="http://bbs.blueidea.com/space-uid-51676.html" target="_blank" title="zbm2001z">zbm2001z</a> 给出了<a href="http://bbs.blueidea.com/viewthread.php?tid=2707183&#038;page=1#pid2954478" target="_blank" title="按钮内容一长就模糊">一个答案</a>：</p>
<blockquote><p>1、IE 在按钮的 value 值每增加 4 个字节（汉字为 2 个）时，就会在按钮的两边产生总共一个字节的内边距宽度。<br />
2、IE 的按钮（XP 风格）默认样式是一个固定尺寸的圆角矩形图片作背景，所以一旦按钮变宽变高后，这个固定尺寸的圆角矩形图片的边缘自然就会出现“拉毛”的现象了。</li>
</blockquote>
<p>对于第二个问题我们暂时没办法去解决，除非 WIN 系统自己修复 BUG ，但对于第一个问题 ，我们还是可以修复的。</p>
<p>IE 下给按钮元素设置 overflow 属性的 visible 值（注 ：padding 值仅在设置了overflow:visible 属性后才有效），这个属性其实在上次写的<a href="http://www.planabc.net/2008/04/14/background-clip_background-origin/" target="_blank" title="background-clip 与 background-origin 的一则运用">《background-clip 与 background-origin 的一则运用》</a>一文中已经使用。不过在今天阅读了<a href="http://latrine.dgx.cz/the-stretched-buttons-problem-in-ie" target="_blank" title="The stretched buttons problem in IE">《The stretched buttons problem in IE》</a>后，发现原来还有一个小 <a href="http://jehiah.cz/archive/button-width-in-ie-revised" target="_blank" title="Button Width in IE - Revised">BUG</a> —— 如果将按钮置于表格单元格中，虽然按钮显示正确了，但是原先预留的宽度大小却没有改变，仍然占据着空间，需要在 IE6 中设置按钮的宽度（width）为 0（IE7同样也存在此 BUG，但暂时没有寻找到好的方式解决）。</p>
<p>最终的修复代码如下（<a href="http://knowhow.davidgrudl.com/css/styling-forms/demo4.html" target="_blank" title="The stretched buttons problem in IE">Demo</a>）：</p>
<pre><code>input.button {
    padding: 0 .25em;
    width: auto;
    _width: 0;
    overflow:visible !ie;
}</code></pre>
<img src="http://www.planabc.net/?ak_action=api_record_view&id=140&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.planabc.net/2008/11/12/the_stretched_buttons_bug/feed/</wfw:commentRss>
		<slash:comments>27</slash:comments>
		</item>
		<item>
		<title>可以给img元素设置背景图</title>
		<link>http://www.planabc.net/2008/09/27/using_a_background_image_on_an_image/</link>
		<comments>http://www.planabc.net/2008/09/27/using_a_background_image_on_an_image/#comments</comments>
		<pubDate>Sat, 27 Sep 2008 14:45:35 +0000</pubDate>
		<dc:creator>怿飞</dc:creator>
				<category><![CDATA[HTML/CSS/XML/XSL]]></category>
		<category><![CDATA[background]]></category>
		<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://www.planabc.net/?p=92</guid>
		<description><![CDATA[惊叹于老外的发现 《CSS Background image on html image element?》，自己从没关注过，也没想过如此的问题。 实现方法很简单：设置 img 元素为块元素（display:block;），并赋一个 padding 值。 例如（simple demo ）： img { display:block; background:url('parallax.gif') no-repeat bottom left; padding:93px 100px 75px 100px; } 根据上面的原理，举一反三，通过类似的方法，我们还可以给 img 元素设置双边： img { display:block; padding:1px; background:red; border:1px solid black; ... ]]></description>
			<content:encoded><![CDATA[<p>惊叹于老外的发现 <a href="http://www.contentwithstyle.co.uk/Blog/183/css-background-image-on-html-image-element" target="_blank" title="CSS Background image on html image element?">《CSS Background image on html image element?》</a>，自己从没关注过，也没想过如此的问题。</p>
<p>实现方法很简单：<strong>设置 img 元素为块元素（display:block;），并赋一个 padding 值。</strong></p>
<p>例如（<a href="http://www.contentwithstyle.co.uk/resources/img_bg_demo/" target="_blank" title="Image Demo">simple demo</a> ）：</p>
<pre><code>img {
    display:block;
    background:url('parallax.gif') no-repeat bottom left;
    padding:93px 100px 75px 100px;
}</code></pre>
<p>根据上面的原理，举一反三，通过类似的方法，我们还可以给 img 元素设置双边：</p>
<pre><code>img {
    display:block;
    padding:1px;
    background:red;
    border:1px solid black;
}</code></pre>
<img src="http://www.planabc.net/?ak_action=api_record_view&id=92&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.planabc.net/2008/09/27/using_a_background_image_on_an_image/feed/</wfw:commentRss>
		<slash:comments>37</slash:comments>
		</item>
		<item>
		<title>Google Chrome 浏览器支持的 CSS 选择器</title>
		<link>http://www.planabc.net/2008/09/04/google-chrome_browser_css_selector_support/</link>
		<comments>http://www.planabc.net/2008/09/04/google-chrome_browser_css_selector_support/#comments</comments>
		<pubDate>Thu, 04 Sep 2008 05:14:50 +0000</pubDate>
		<dc:creator>怿飞</dc:creator>
				<category><![CDATA[HTML/CSS/XML/XSL]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[google]]></category>

		<guid isPermaLink="false">http://www.planabc.net/?p=91</guid>
		<description><![CDATA[Google Chrome 浏览器是基于 Safari 正在使用的 Webkit 引擎，使用的版本是 AppleWebKit/525.13 。不过 Safari3.1 使用的是最新版本：AppleWebKit/525.18。 那 Google Chrome 浏览器对 CSS 选择器的支持又如何呢？感谢 Engage 公司的女前端开发工程师 Estelle 测试整理的《Google Chrome Browser CSS Selector Support》：http://www.evotech.net/blog/2008/09/google-chrome-browser-css-selector-support... ]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.google.com/chrome" target="_blank" title="Google Chrome">Google Chrome</a> 浏览器是基于 Safari 正在使用的 Webkit 引擎，使用的版本是 AppleWebKit/525.13 。不过 Safari3.1 使用的是最新版本：AppleWebKit/525.18。</p>
<p>那 Google Chrome 浏览器对 CSS 选择器的支持又如何呢？感谢 <a href="http://engage.com/" target="_blank" title="Engage">Engage</a> 公司的女前端开发工程师 <a href="http://www.evotech.net/blog/about/" target="_blank" title="About Estelle">Estelle</a> 测试整理的《Google Chrome Browser CSS Selector Support》：<br /><a href="http://www.evotech.net/blog/2008/09/google-chrome-browser-css-selector-support/" target="_blank" title="Google Chrome Browser CSS Selector Support">http://www.evotech.net/blog/2008/09/google-chrome-browser-css-selector-support/</a></p>
<img src="http://www.planabc.net/?ak_action=api_record_view&id=91&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.planabc.net/2008/09/04/google-chrome_browser_css_selector_support/feed/</wfw:commentRss>
		<slash:comments>24</slash:comments>
		</item>
		<item>
		<title>position:relative 的使用限制</title>
		<link>http://www.planabc.net/2008/08/13/limited_use_of_position_relative/</link>
		<comments>http://www.planabc.net/2008/08/13/limited_use_of_position_relative/#comments</comments>
		<pubDate>Wed, 13 Aug 2008 01:35:02 +0000</pubDate>
		<dc:creator>怿飞</dc:creator>
				<category><![CDATA[HTML/CSS/XML/XSL]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[position]]></category>

		<guid isPermaLink="false">http://www.planabc.net/?p=88</guid>
		<description><![CDATA[在 W3C 规范中 position 是可以使用在任何元素上的，但 position:relative 却有部分例外： The effect of &#8216;position:relative&#8217; on table-row-group, table-header-group, table-footer-group, table-row, table-column-group, table-column, table-cell, and table-caption elements is undefined. 经测试，在浏览器（IE 除外）中给 table 定义 position:relative 属性是无效的。如果的确需要在表格中使用该属性，建议在单元格中嵌套一个 div 元素，再在其上设置 position:relative 属性来模拟... ]]></description>
			<content:encoded><![CDATA[<p>在 W3C 规范中 <a href="http://www.w3.org/TR/2006/WD-CSS21-20061106/visuren.html#propdef-position" target="_blank" title="position">position</a> 是可以使用在任何元素上的，但 position:relative 却有部分例外：</p>
<blockquote><p>The effect of &#8216;position:relative&#8217; on table-row-group, table-header-group, table-footer-group, table-row, table-column-group, table-column, table-cell, and table-caption elements is undefined.</p></blockquote>
<p>经测试，在浏览器（IE 除外）中给 table 定义 position:relative 属性是无效的。如果的确需要在表格中使用该属性，建议在单元格中嵌套一个 div 元素，再在其上设置 position:relative 属性来模拟。</p>
<img src="http://www.planabc.net/?ak_action=api_record_view&id=88&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.planabc.net/2008/08/13/limited_use_of_position_relative/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>XHTML1.1 Tags List</title>
		<link>http://www.planabc.net/2008/07/31/xhtml11_tags_list/</link>
		<comments>http://www.planabc.net/2008/07/31/xhtml11_tags_list/#comments</comments>
		<pubDate>Thu, 31 Jul 2008 03:09:24 +0000</pubDate>
		<dc:creator>怿飞</dc:creator>
				<category><![CDATA[HTML/CSS/XML/XSL]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[XHTML]]></category>

		<guid isPermaLink="false">http://www.planabc.net/?p=86</guid>
		<description><![CDATA[http://ore.to/htmllint/tagslist.cgi?HTMLVersion=XHTML1... ]]></description>
			<content:encoded><![CDATA[<p><a href="http://ore.to/htmllint/tagslist.cgi?HTMLVersion=XHTML11" target="_blank" title="XHTML1.1 Tags List">http://ore.to/htmllint/tagslist.cgi?HTMLVersion=XHTML11</a></p>
<img src="http://www.planabc.net/?ak_action=api_record_view&id=86&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.planabc.net/2008/07/31/xhtml11_tags_list/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>line-height 属性的继承问题</title>
		<link>http://www.planabc.net/2008/07/25/unitless-line-heights/</link>
		<comments>http://www.planabc.net/2008/07/25/unitless-line-heights/#comments</comments>
		<pubDate>Fri, 25 Jul 2008 05:19:53 +0000</pubDate>
		<dc:creator>怿飞</dc:creator>
				<category><![CDATA[HTML/CSS/XML/XSL]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[line-height]]></category>

		<guid isPermaLink="false">http://www.planabc.net/?p=83</guid>
		<description><![CDATA[淘宝商城的 detail 页面“产品详情”部分是商家自定义区块，曾出现这样一个问题： &#60;style type="text/css"&#62; p { line-height:17px; } &#60;/style&#62; &#60;div class=&#34;mdse-detail&#34;&#62; &#60;p&#62; &#60;strong style=&#34;font-size:30px&#34;&#62; 品牌：XZX&#60;br /&#62; 市场价：145元&#60;br /&#62; 颜色：黑色&#60;br /&#62; 面料：棉&#60;br /&#62; 尺码：S M L&#60;br /&#62; 衣长：S 89 M 90 L 91&#60;br /&#62; 肩宽：S 35 M 36 L 37&#60;br /&#62; 胸围：S 88 M 92 L 96&#60;br /&#62; 下摆：S 104 M 108 L 112&#60;br /&#62; [...... ]]></description>
			<content:encoded><![CDATA[<p><a href="http://mall.taobao.com" title="淘宝商城" target="_blank">淘宝商城</a>的 detail 页面“产品详情”部分是商家自定义区块，曾出现这样一个问题：</p>
<pre><code>&lt;style type="text/css"&gt;
p {
    line-height:17px;
}
&lt;/style&gt;

&lt;div class=&quot;mdse-detail&quot;&gt;
    &lt;p&gt;
        &lt;strong style=&quot;font-size:30px&quot;&gt;
            品牌：XZX&lt;br /&gt;
            市场价：145元&lt;br /&gt;
            颜色：黑色&lt;br /&gt;
            面料：棉&lt;br /&gt;
            尺码：S  M  L&lt;br /&gt;
            衣长：S 89  M 90   L 91&lt;br /&gt;
            肩宽：S 35  M 36   L 37&lt;br /&gt;
            胸围：S 88  M 92   L 96&lt;br /&gt;
            下摆：S 104 M 108  L 112&lt;br /&gt;
            袖长：S 17  M 17.5 L18&lt;br /&gt;
            由于测量方法不同，误差在2CM左右！
        &lt;/strong&gt;
    &lt;/p&gt;
&lt;/div&gt;</code></pre>
<p>你会发现上面例子的文字会重叠在一起！这是什么原因呢？</p>
<p>由于.detail-content 中的 p 元素继承了默认设置的全局样式 line-height:17px，而自定义区块又是由商家自定义，其内字体被设置为了 font-size:30px;（可能为任意值），根据 <a href="http://meyerweb.com/eric/css/inline-format.html" target="_blank" title="Inline formatting model">Inline formatting model</a>，得知该文字的 line-box 高为 17px，多出的字体部分上下溢出，所以会出现字体重叠的现象。</p>
<p>那这个问题如何解决呢？</p>
<p><strong>解决方案：</strong>我们给 .mdse-detail 下的 p 元素设定样式属性<strong> line-height:1.4</strong>。</p>
<p>为什么解决方案里的 1.4 不带单位？</p>
<p>元素的 line-height 属性值会继承父元素（或祖先元素）的 line-height 属性值，如果属性值有单位，则继承的值是换算后具体的 px 值而非原始的值（比如：em、%），而如果属性值没有单位，则浏览器会继承数值（无单位），然后根据该元素的 font-size 值重新解析得到新的 line-height 值。这个和 table 的 tr 设置 display 属性有一点点类似（tr.style.display = &#8221;;，IE 显示 block，而 Firefox 等标准浏览器显示 table-row）。</p>
<p>还有另外一个相对低效的方法，但也不失为一个快捷的解决方案：</p>
<pre><code>.mdse-detail p * {
    line-height:140%;
}</code></pre>
<p>参考阅读：<a href="http://meyerweb.com/eric/thoughts/2006/02/08/unitless-line-heights/" target="_blank" title="Unitless line-heights">《Unitless line-heights》</a></p>
<img src="http://www.planabc.net/?ak_action=api_record_view&id=83&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.planabc.net/2008/07/25/unitless-line-heights/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>如何给 legend 标签设定宽度</title>
		<link>http://www.planabc.net/2008/07/24/legend_width/</link>
		<comments>http://www.planabc.net/2008/07/24/legend_width/#comments</comments>
		<pubDate>Thu, 24 Jul 2008 09:28:41 +0000</pubDate>
		<dc:creator>怿飞</dc:creator>
				<category><![CDATA[HTML/CSS/XML/XSL]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[legend]]></category>

		<guid isPermaLink="false">http://www.planabc.net/?p=82</guid>
		<description><![CDATA[我们在做表单的时候经常会使用到这样的结构： &#60;fieldset&#62; &#60;legend&#62;哪些浏览器legend标签设定的宽度有效&#60;/legend&#62; &#60;input type="checkbox" value="ie6" name="width" id="ie6" checked="checked" /&#62;&#60;label for="ie6"&#62;IE6&#60;/label&#62; &#60;input type="checkbox" value="ie7" name="width" id="ie7"checked="checked" /&#62;&#60;label for="firefox"&#62;IE7&#60;/label&#62; &#60;input type="checkbox" value="firefox2" name="width" id="firefox2" /&#62;&#60;label for="firefox2"&#62;Firefox2&#60;/label&#62; &#60;input type="checkbox" value="firefox3" name="width" id="firefox3" /&#62;&#60;label for="firefox3"&#62;Firefox3&#60;/label&#62; &#60;input type="checkbox" value="opera" name="width" id="opera" checked="checked" /&#62;&#60;label for="opera"&#62;Opera9.0+&#60;/label&#62; &#60;input type="checkbox" value="safari" name="width" id="safari"checked="checked" /&#62;&#60;label for="safari"&#62;Safari3.0+&#60;/label&#62; &#60;/fieldset&#62; ... ]]></description>
			<content:encoded><![CDATA[<p>我们在做表单的时候经常会使用到这样的结构：</p>
<pre><code>&lt;fieldset&gt;
    &lt;legend&gt;哪些浏览器legend标签设定的宽度有效&lt;/legend&gt;
    &lt;input type="checkbox" value="ie6" name="width" id="ie6" checked="checked" /&gt;&lt;label for="ie6"&gt;IE6&lt;/label&gt;
    &lt;input type="checkbox" value="ie7" name="width" id="ie7"checked="checked" /&gt;&lt;label for="firefox"&gt;IE7&lt;/label&gt;
    &lt;input type="checkbox" value="firefox2" name="width" id="firefox2" /&gt;&lt;label for="firefox2"&gt;Firefox2&lt;/label&gt;
    &lt;input type="checkbox" value="firefox3" name="width" id="firefox3" /&gt;&lt;label for="firefox3"&gt;Firefox3&lt;/label&gt;
    &lt;input type="checkbox" value="opera" name="width" id="opera" checked="checked" /&gt;&lt;label for="opera"&gt;Opera9.0+&lt;/label&gt;
    &lt;input type="checkbox" value="safari" name="width" id="safari"checked="checked" /&gt;&lt;label for="safari"&gt;Safari3.0+&lt;/label&gt;
&lt;/fieldset&gt; </code></pre>
<p>当我们使用 CSS 给 legend 标签设定固定宽度时：</p>
<pre><code>legend {
    background:red;
    width:500px;
}</code></pre>
<p>在 IE6、IE7、Opera9.0+、Safari3.0+ 都正能常显示，而在 Firefox2 和 Firefox3 中宽度却失效。</p>
<p>在这里我们不去深究为什么，只探讨解决的方法：</p>
<p>我们可以通过在 legend 标签内添加一个标签，并给标签设定所需要的宽度，此宽度的单位不可为百分比（%）:</p>
<p>HTML 修改为：</p>
<pre><code>&lt;fieldset&gt;
    &lt;legend&gt;&lt;span&gt;哪些浏览器legend标签设定的宽度有效&lt;/span&gt;&lt;/legend&gt;
    &lt;input type="checkbox" value="ie6" name="width" id="ie6" checked="checked" /&gt;&lt;label for="ie6"&gt;IE6&lt;/label&gt;
    &lt;input type="checkbox" value="ie7" name="width" id="ie7"checked="checked" /&gt;&lt;label for="firefox"&gt;IE7&lt;/label&gt;
    &lt;input type="checkbox" value="firefox2" name="width" id="firefox2" /&gt;&lt;label for="firefox2"&gt;Firefox2&lt;/label&gt;
    &lt;input type="checkbox" value="firefox3" name="width" id="firefox3" /&gt;&lt;label for="firefox3"&gt;Firefox3&lt;/label&gt;
    &lt;input type="checkbox" value="opera" name="width" id="opera" checked="checked" /&gt;&lt;label for="opera"&gt;Opera9.0+&lt;/label&gt;
    &lt;input type="checkbox" value="safari" name="width" id="safari"checked="checked" /&gt;&lt;label for="safari"&gt;Safari3.0+&lt;/label&gt;
&lt;/fieldset&gt; </code></pre>
<p>CSS 修改为：</p>
<pre><code>legend span {
    background:red;
    width:500px;
    display:block;
}</code></pre>
<p>可参考：<a href="http://archivist.incutio.com/viewlist/css-discuss/91296" target="_blank" title="how to set width of LEGEND tags in FF">《how to set width of LEGEND tags in FF》</a></p>
<p><a href="http://www.htmlcssjs.com/blog/" target="_blank" title="正淳：Rage's Blog">正淳</a> 同时也提供了另外的一种解决方案，无需修改结构，仅修改样式即可：</p>
<pre><code>legend {
    background:red;
    text-indent:-600px;
    padding-left:600px;

    /*IE下还原初始方式，只设定宽度*/
    *width:600px;
    *text-indent:0;
    *padding-left:0;
}</code></pre>
<p><strong>题外话：</strong>CSS 的兼容其实并不难，多尝试多实践就可以解决，最重要的是自己要去动手，只有动手了才会有更多的收获，才会有更深的印象。	</p>
<img src="http://www.planabc.net/?ak_action=api_record_view&id=82&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.planabc.net/2008/07/24/legend_width/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>如何跨浏览器使用连续字符的换行</title>
		<link>http://www.planabc.net/2008/07/03/cross_browser_word_breaker/</link>
		<comments>http://www.planabc.net/2008/07/03/cross_browser_word_breaker/#comments</comments>
		<pubDate>Thu, 03 Jul 2008 12:33:22 +0000</pubDate>
		<dc:creator>怿飞</dc:creator>
				<category><![CDATA[HTML/CSS/XML/XSL]]></category>
		<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://www.planabc.net/?p=80</guid>
		<description><![CDATA[由于连续的字符（字母、符号、数字）在默认情况下是不换行的，可能会破坏整个界面布局。 那如何解决这个问题呢？ 在 IE 和 Safari 1.3+ 下相对比较容易解决，使用 CSS 属性 word-wrap: break-word;。有朋友会问为什么不是使用 word-break:break-all; ，因为有一个特殊的情况，该属性无法解决换行——连续的英文标点符号。 注：word-break 主要使用在 CJK 文本，即：中文（Chinese）、日文（Japanese）、韩文（Korean）。 而 Firefox 和 Opera 浏览器，无法识别 word-wrap: break-word; 和 word-break:break-all; 属性。可以通过脚本给连续字符的每个字符之间插入 \ u8203 的字符（该字符在非 IE 浏览下不占据空间），使连续变为了不连续，达到了换行的效果。 breakWord = function(dEl){ var dWalker = document.createTreeWalker(dEl, NodeFilter.SHOW_TEXT, null, false); var node,s,c = String.fromCharCode('8203'); while (dWalker.nextNod... ]]></description>
			<content:encoded><![CDATA[<p>由于连续的字符（字母、符号、数字）在默认情况下是不换行的，可能会破坏整个界面布局。</p>
<p>那如何解决这个问题呢？</p>
<p>在 IE 和 Safari 1.3+ 下相对比较容易解决，使用 CSS 属性 <a href="http://www.w3.org/TR/css3-text/#word-wrap" target="_blank" title="Force Wrapping: the 'word-wrap' property">word-wrap: break-word;</a>。有朋友会问为什么不是使用 <a href="http://www.w3.org/TR/css3-text/#word-break" target="_blank" title="Line Breaking Restrictions: the 'word-break' property">word-break:break-all;</a> ，因为有一个特殊的情况，该属性无法解决换行——连续的英文标点符号。</p>
<p><strong>注：</strong><a href="http://www.w3.org/TR/css3-text/#word-break" target="_blank" title="Line Breaking Restrictions: the 'word-break' property">word-break</a> 主要使用在 CJK 文本，即：中文（Chinese）、日文（Japanese）、韩文（Korean）。</p>
<p>而 Firefox 和 Opera 浏览器，无法识别  word-wrap: break-word; 和 word-break:break-all; 属性。可以通过脚本给连续字符的每个字符之间插入 \ u8203 的字符（该字符在非 IE 浏览下不占据空间），使连续变为了不连续，达到了换行的效果。</p>
<pre><code>breakWord = function(dEl){
    var dWalker = document.createTreeWalker(dEl, NodeFilter.SHOW_TEXT, null, false);
    var node,s,c = String.fromCharCode('8203');
    while (dWalker.nextNode()){
        node = dWalker.currentNode;
        s = trim( node.nodeValue ) .split('').join(c);
        node.nodeValue = s;
    }
    return true;
}</code></pre>
<p>详细的脚本，可参看 <a title="Hedger Wang" href="http://www.hedgerwow.com/">Hedger Wang</a> 整理的脚本<a href="http://www.hedgerwow.com/360/dhtml/css-word-break.html" target="_blank" title="Cross Browser Word Breaker">《Cross Browser Word Breaker》</a></p>
<p>对于 Firefox ，你还可以通过 <a href="http://www.w3.org/TR/xbl/" target="_blank" title="XBL bindings">XBL bindings</a> 来实现此效果：<a href="http://blog.stchur.com/2007/02/22/emulating-css-word-wrap-for-mozillafirefox/" title="Emulating CSS word-wrap for Mozilla/Firefox" target="_blank">《Emulating CSS word-wrap for Mozilla/Firefox》</a></p>
<img src="http://www.planabc.net/?ak_action=api_record_view&id=80&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.planabc.net/2008/07/03/cross_browser_word_breaker/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>两个不太常用的 CSS Hack</title>
		<link>http://www.planabc.net/2008/06/26/two_css_hack_not_commonly_used/</link>
		<comments>http://www.planabc.net/2008/06/26/two_css_hack_not_commonly_used/#comments</comments>
		<pubDate>Thu, 26 Jun 2008 02:45:13 +0000</pubDate>
		<dc:creator>怿飞</dc:creator>
				<category><![CDATA[HTML/CSS/XML/XSL]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Firfox]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[Safari]]></category>

		<guid isPermaLink="false">http://www.planabc.net/?p=78</guid>
		<description><![CDATA[1、仅 Safari 和 Opera 识别的 Hack @media all and (min-width: 0px) { /* Safari and Opera rules here */ } 或者 @media screen and (-webkit-min-device-pixel-ratio:0) { /* Safari and Opera rules here */ } 注：这里所指代的 Safari 和 Opera 一般为最新版本。 2、仅 Firefox 3 和 IE7 识别的 Hack selector, x:-moz-any-link, x:default { /* Firefox 3 and IE7 [...... ]]></description>
			<content:encoded><![CDATA[<p>1、仅 Safari  和 Opera  识别的 Hack</p>
<pre><code>@media all and (min-width: 0px) {
/* Safari and Opera  rules here */
}
</code></pre>
<p>或者</p>
<pre><code>@media screen and (-webkit-min-device-pixel-ratio:0) {
/* Safari and Opera rules here */
}</code></pre>
<p>注：这里所指代的 Safari  和 Opera 一般为最新版本。</p>
<p>2、仅 Firefox 3 和 IE7 识别的 Hack</p>
<pre><code>selector, x:-moz-any-link, x:default {
/* Firefox 3  and IE7 rules here */
}</code></pre>
<p>注：由于 Firefox 2 和 Firefox 3 共存，且两个版本对 CSS 的解析有部分不一致，或许用得着这个 Hack 。</p>
<img src="http://www.planabc.net/?ak_action=api_record_view&id=78&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.planabc.net/2008/06/26/two_css_hack_not_commonly_used/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>针对 IE8 的 hack</title>
		<link>http://www.planabc.net/2008/06/17/ie8_beta1_hack/</link>
		<comments>http://www.planabc.net/2008/06/17/ie8_beta1_hack/#comments</comments>
		<pubDate>Tue, 17 Jun 2008 15:11:50 +0000</pubDate>
		<dc:creator>怿飞</dc:creator>
				<category><![CDATA[HTML/CSS/XML/XSL]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[IE]]></category>

		<guid isPermaLink="false">http://www.planabc.net/?p=77</guid>
		<description><![CDATA[前言：对于 Hack 的使用，一直以来不提倡，应该尽可能的知道为什么，从根本上去解决问题，而不要遇到问题就 Hack，我们应该对代码“不作恶”，尽少使用，甚至不用。 对于 IE8 beta1 可以尝试下面的 Hack： /*/ selector { &#8230; } /**/ 此规则仅 IE8 beta1 识别，而其他 A-grade 浏览器都不识别。 不过这个 Hack 也许会在 IE 的 beta2 版本或正式版中被修复，暂可作为 IE8 beta1 调试之用... ]]></description>
			<content:encoded><![CDATA[<p>前言：对于 Hack 的使用，一直以来不提倡，应该尽可能的知道为什么，从根本上去解决问题，而不要遇到问题就 Hack，我们应该对代码“不作恶”，尽少使用，甚至不用。</p>
<p>对于 IE8 beta1 可以尝试下面的 Hack：</p>
<p>/*/ selector { &#8230; } /**/</p>
<p>此规则仅 IE8 beta1 识别，而其他 <a title="Graded Browser Support" href="http://developer.yahoo.com/yui/articles/gbs/" target="_blank">A-grade</a> 浏览器都不识别。</p>
<p>不过这个 Hack 也许会在 IE 的 beta2 版本或正式版中被修复，暂可作为 IE8  beta1 调试之用。</p>
<img src="http://www.planabc.net/?ak_action=api_record_view&id=77&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.planabc.net/2008/06/17/ie8_beta1_hack/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>图片垂直居中的使用技巧</title>
		<link>http://www.planabc.net/2008/05/26/img_vertical_center_solution/</link>
		<comments>http://www.planabc.net/2008/05/26/img_vertical_center_solution/#comments</comments>
		<pubDate>Mon, 26 May 2008 13:03:17 +0000</pubDate>
		<dc:creator>怿飞</dc:creator>
				<category><![CDATA[HTML/CSS/XML/XSL]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[垂直居中]]></category>

		<guid isPermaLink="false">http://www.planabc.net/?p=71</guid>
		<description><![CDATA[在曾经的 淘宝UED 招聘 中有这样一道题目： “使用纯CSS实现未知尺寸的图片(但高宽都小于200px)在200px的正方形容器中水平和垂直居中。” 当然出题并不是随意，而是有其现实的原因，垂直居中是 淘宝 工作中最常遇到的一个问题，很有代表性。 题目的难点在于两点： 垂直居中； 图片是个置换元素，有些特殊的特性。 至于如何解决，下面是一个权衡的相对结构干净，CSS简单的解决方法： .box { /*非IE的主流浏览器识别的垂直居中的方法*/ display: table-cell; vertical-align:middle; /*设置水平居中*/ text-align:center; /* 针对IE的Hack */ *display: block; *font-size: 175px;/*约为高度的0.873，200*0.873 约为175*/ *font-family:Arial;/*防止非utf-8引起的hack失效问题，如gbk编码*/ width:200px; height:200px; border: 1px solid #eee; } .box img { /*设置图片垂直居中*/ vertical-align:middle; } &#60;div class=&#34;box&#34;&#62... ]]></description>
			<content:encoded><![CDATA[<p>在曾经的 <a href="http://ued.taobao.com/blog/2007/11/20/job_test_explanation/" target="_blank" title="2007淘宝UED招聘题解(前端开发部分)">淘宝UED 招聘</a> 中有这样一道题目：</p>
<blockquote><p>“使用纯CSS实现未知尺寸的图片(但高宽都小于200px)在200px的正方形容器中水平和垂直居中。”</p></blockquote>
<p>当然出题并不是随意，而是有其现实的原因，垂直居中是 <a href="http://www.taobao.com" target="_blank" title="淘宝网">淘宝</a> 工作中最常遇到的一个问题，很有代表性。</p>
<p>题目的难点在于两点：</p>
<ol>
<li>垂直居中；</li>
<li>图片是个置换元素，有些特殊的特性。</li>
</ol>
<p>至于如何解决，下面是一个权衡的相对结构干净，CSS简单的解决方法：</p>
<pre><code>.box {
	/*非IE的主流浏览器识别的垂直居中的方法*/
	display: table-cell;
	vertical-align:middle;

	/*设置水平居中*/
	text-align:center;

	/* 针对IE的Hack */
	*display: block;
	*font-size: 175px;/*约为高度的0.873，200*0.873 约为175*/
	*font-family:Arial;/*防止非utf-8引起的hack失效问题，如gbk编码*/

	width:200px;
	height:200px;
	border: 1px solid #eee;
}
.box img {
	/*设置图片垂直居中*/
	vertical-align:middle;
}

&lt;div class=&quot;box&quot;&gt;
	&lt;img src=&quot;http://pics.taobao.com/bao/album/promotion/taoscars_180x95_071112_sr.jpg&quot; /&gt;
&lt;/div&gt;</code></pre>
<p>当然还有其他的解决方法，在此不深究，有兴趣的可以阅读下：</p>
<ul>
<li><a href="http://www.student.oulu.fi/~laurirai/www/css/middle/" target="_blank" title="Vertical centering using CSS">《Vertical centering using CSS》</a></li>
<li><a href="http://www.jakpsatweb.cz/css/css-vertical-center-solution.html" target="_blank" title="Vertical centering using CSS">《Vertical centering using CSS》</a>（标题和上同，内容不同）</li>
<li><a href="http://www.hedgerwow.com/360/dhtml/css-layout-gridview.html" target="_blank" title="CSS List Grid Layout">《CSS List Grid Layout》</a></li>
</ul>
<img src="http://www.planabc.net/?ak_action=api_record_view&id=71&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.planabc.net/2008/05/26/img_vertical_center_solution/feed/</wfw:commentRss>
		<slash:comments>55</slash:comments>
		</item>
		<item>
		<title>link 和 style 元素在 HTML 文档中的位置</title>
		<link>http://www.planabc.net/2008/05/16/style_and_link_in_html_documents/</link>
		<comments>http://www.planabc.net/2008/05/16/style_and_link_in_html_documents/#comments</comments>
		<pubDate>Fri, 16 May 2008 09:51:15 +0000</pubDate>
		<dc:creator>怿飞</dc:creator>
				<category><![CDATA[HTML/CSS/XML/XSL]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[style]]></category>

		<guid isPermaLink="false">http://www.planabc.net/?p=69</guid>
		<description><![CDATA[对于 link 元素 和 style 元素 我相信大家都比较了解，但对于他们的出现位置可能有误解。 在 淘宝 的所有频道中出现这样一个问题：频道头部文件由于是统一支配的（为什么？历史原因！），所以我们无法在每个频道的 head 元素中以 link 或 style 方式加入各自的样式。最后选取了折中的方式，在主体内容中直接写入 style 元素，也就是说 style 元素置于了 body 元素中。 一切看着貌似很完美。其实不然，在 W3C 中对于 link 元素 和 style 元素 出现的位置有详细的说明： HTML permits any number of STYLE elements in the HEAD section of a document. The LINK element defines a link. Unlike A, it may [...... ]]></description>
			<content:encoded><![CDATA[<p>对于 <a href="http://www.w3.org/TR/REC-html40/struct/links.html#edef-LINK" target="_blank" title="link 元素">link 元素</a> 和 <a href="http://www.w3.org/TR/REC-html40/present/styles.html#edef-STYLE" target="_blank" title="style 元素">style 元素</a> 我相信大家都比较了解，但对于他们的出现位置可能有误解。</p>
<p>在 <a href="http://www.taobao.com" target="_blank" title="淘宝网">淘宝</a> 的所有频道中出现这样一个问题：频道头部文件由于是统一支配的（为什么？历史原因！），所以我们无法在每个频道的 head 元素中以 link 或 style 方式加入各自的样式。最后选取了折中的方式，在主体内容中直接写入 style 元素，也就是说 style 元素置于了 body 元素中。</p>
<p>一切看着貌似很完美。其实不然，在 W3C 中对于 <a href="http://www.w3.org/TR/REC-html40/struct/links.html#edef-LINK" target="_blank" title="link 元素">link 元素</a> 和 <a href="http://www.w3.org/TR/REC-html40/present/styles.html#edef-STYLE" target="_blank" title="style 元素">style 元素</a> 出现的位置有详细的说明：</p>
<blockquote><p>HTML permits any number of <strong>STYLE </strong>elements in the HEAD section of a document.</p>
<p>The <strong>LINK</strong> element defines a link. Unlike A, it may only appear in the HEAD section of a document, although it may appear any number of times.</p></blockquote>
<p>也就是说 <a href="http://www.w3.org/TR/REC-html40/struct/links.html#edef-LINK" target="_blank" title="link 元素">link 元素</a> 和 <a href="http://www.w3.org/TR/REC-html40/present/styles.html#edef-STYLE" target="_blank" title="style 元素">style 元素</a> 必须出现在 head 元素中。</p>
<p>在下面的工作中，我们将会对页面中的这个错误进行优化，可能优化的进度不是理想中的速度（为什么？个人经验：历史原因的解决一向都不会很直接！）。</p>
<p>其实对于上面的问题，外国的开发人员有过相关讨论：</p>
<ul>
<li><a href="http://archivist.incutio.com/viewlist/css-discuss/30792" target="_blank" title="Style Element within Body Tag">《Style Element within Body Tag》</a></li>
<li><a href="http://archivist.incutio.com/viewlist/css-discuss/65550" target="_blank" title="Style Sheet Link in Body Tag?">《Style Sheet Link in Body Tag?》</a></li>
</ul>
<p>如果想温习一下样式的引入，可参读：<a href="http://www.w3.org/TR/REC-html40/present/styles.html" target="_blank" title="Style Sheets in HTML documents">《Style Sheets in HTML documents》</a></p>
<p>如有你想知道如何优化样式加载方式，可参读：<a href="http://www.planabc.net/2008/03/25/css_onload_optimize/" target="_blank" title=" 页面中 CSS 加载方式的优化">《页面中 CSS 加载方式的优化》</a></p>
<img src="http://www.planabc.net/?ak_action=api_record_view&id=69&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.planabc.net/2008/05/16/style_and_link_in_html_documents/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>详解CSS的优先权</title>
		<link>http://www.planabc.net/2008/05/06/css_specificity/</link>
		<comments>http://www.planabc.net/2008/05/06/css_specificity/#comments</comments>
		<pubDate>Tue, 06 May 2008 13:34:05 +0000</pubDate>
		<dc:creator>怿飞</dc:creator>
				<category><![CDATA[HTML/CSS/XML/XSL]]></category>
		<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://www.planabc.net/?p=67</guid>
		<description><![CDATA[发现很多朋友对 CSS 的优先权不甚了解，规则很简单。需要说明的一点，如果你的样式管理需要深层判断 CSS 的优先权，更应反思自己的 CSS 代码，是否合理？是否优化？ CSS2.1 中规定了关于 CSS 规则 Specificity（特异性）的计算方式，用一个四位的数字串（注：CSS2 中是用三位）来表示，最后以 Specificity 的高低判断 CSS 的优先权。 Specificity 具体的计算规则： 元素的 style 样式属性，加 1,0,0,0。 每个 ID 选择符（#id），加 0,1,0,0。 每个 class 选择符（.class）、每个属性选择符（例 [attr=&#8221;&#34;] ）、每个伪类（例 :hover），加 0,0,1,0。 每个元素或伪元素（例 :firstchild）等，加 0,0,0,1。 其他选择符（例 全局选择符 *，子选择符 &#62;），加 0,0,0,0。 最后逐位相加数字串，得到最终的 Specificity 值，按照从左到右的顺序逐位比较。 除了 Specificity 还有一些其他规则：... ]]></description>
			<content:encoded><![CDATA[<p>发现很多朋友对 CSS 的优先权不甚了解，规则很简单。需要说明的一点，如果你的样式管理需要深层判断 CSS 的优先权，更应反思自己的 CSS 代码，是否合理？是否优化？</p>
<p><a title="CSS2.1" target="_blank" href="http://www.w3.org/TR/CSS21">CSS2.1</a> 中规定了关于 CSS 规则 <a title="Calculating a selector's specificity" target="_blank" href="http://www.w3.org/TR/CSS21/cascade.html#specificity">Specificity</a>（特异性）的计算方式，用一个四位的数字串（注：CSS2 中是用三位）来表示，最后以 Specificity 的高低判断 CSS 的优先权。</p>
<p>Specificity 具体的计算规则：</p>
<ul>
<li>元素的 style 样式属性，加 1,0,0,0。</li>
<li>每个 ID 选择符（#id），加 0,1,0,0。</li>
<li>每个 class 选择符（.class）、每个属性选择符（例 [attr=&rdquo;&quot;] ）、每个伪类（例 :hover），加 0,0,1,0。</li>
<li>每个元素或伪元素（例 :firstchild）等，加 0,0,0,1。</li>
<li>其他选择符（例 全局选择符 *，子选择符 &gt;），加 0,0,0,0。</li>
</ul>
<p>最后逐位相加数字串，得到最终的 Specificity 值，按照从左到右的顺序逐位比较。</p>
<p>除了 Specificity 还有一些其他规则：</p>
<ul>
<li>!important 声明的规则高于一切，如果 !important 声明冲突，则比较优先权。</li>
<li>如果优先权一样，则按源码中&ldquo;后来者居上&rdquo;的原则。</li>
<li>由继承而得到的样式属性不参与 specificity 的计算，低于一切其他规则（例 全局选择符 * ）。</li>
</ul>
<p>范例分析：</p>
<pre><code>h1 {color: red;}
/* 只有一个普通元素加成，结果是 0,0,0,1 */
body h1 {color: green;}
/* 两个普通元素加成，结果是 0,0,0,2 */
/*0,0,0,1 小于 0,0,0,2 ，后者胜出*/

h2.grape {color: purple;}
/* 一个普通元素、一个class选择符加成，结果是 0,0,1,1*/
h2 {color: silver;}
/*一个普通元素，结果是 0,0,0,1 */
/*0,0,1,1 大于 0,0,0,1 ，前者胜出*/

html &gt; body table tr[id=&rdquo;totals&rdquo;] td ul &gt; li {color: maroon;}
/* 7个普通元素、一个属性选择符、两个其他选择符（子选择符 &gt;），结果是0,0,1,7 */
li#answer {color: navy;}
/* 一个ID选择符，一个普通选择符，结果是0,1,0,1 */
/*0,0,1,7 小于 0,1,0,1，后者胜出*/</code></pre>
<p>节选 old9 的<a href="http://old9.blogsome.com/2006/03/13/css_conflict_resolve/" target="_blank" title="CSS的优先权">《CSS的优先权》</a>（无法穿越 GFW）</p>
<img src="http://www.planabc.net/?ak_action=api_record_view&id=67&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.planabc.net/2008/05/06/css_specificity/feed/</wfw:commentRss>
		<slash:comments>42</slash:comments>
		</item>
		<item>
		<title>YUI Grids CSS 解读</title>
		<link>http://www.planabc.net/2008/05/04/yui_grids_css/</link>
		<comments>http://www.planabc.net/2008/05/04/yui_grids_css/#comments</comments>
		<pubDate>Sun, 04 May 2008 13:26:38 +0000</pubDate>
		<dc:creator>怿飞</dc:creator>
				<category><![CDATA[HTML/CSS/XML/XSL]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[YUI]]></category>

		<guid isPermaLink="false">http://www.planabc.net/?p=66</guid>
		<description><![CDATA[YUI 中的 Grids CSS 主要有三个部分值得大家关注和学习： 1、布局的思想：使用 “负 margin（Negative Margins）” 技术 详细可参阅：《Creating Liquid Layouts with Negative Margins》 2、使用 em ：当用户改变字体大小时，宽度同时改变。 技巧：用 13 像素来平分宽度（保留小数到千分位），而 IE 浏览器用 13.333 。 /* 750 centered, and backward compatibility */ #doc { width:57.69em; *width:56.251em; min-width:750px; } 57.69 = 750 / 13 56.251 = 750 / 13.333 注：《Setting Page Width with YUI Grids》 [...... ]]></description>
			<content:encoded><![CDATA[<p><a href="http://developer.yahoo.com/yui/" target="_blank" title="YUI">YUI</a> 中的 <a href="http://developer.yahoo.com/yui/grids/" target="_blank" title="YUI Grids CSS">Grids CSS</a> 主要有三个部分值得大家关注和学习：</p>
<p><strong>1、布局的思想：使用 “负 margin（Negative Margins）” 技术</strong></p>
<p>详细可参阅：<a href="http://www.alistapart.com/articles/negativemargins" target="_blank" title="Creating Liquid Layouts with Negative Margins">《Creating Liquid Layouts with Negative Margins》</a></p>
<p><strong>2、使用 em ：当用户改变字体大小时，宽度同时改变。</strong></p>
<p>技巧：用 13 像素来平分宽度（保留小数到千分位），而 IE 浏览器用 <a href="http://tech.groups.yahoo.com/group/ydn-javascript/message/27139" target="_blank" title="YUI CSS Problems">13.333 </a>。</p>
<pre><code>/* 750 centered, and backward compatibility */
#doc {
	width:57.69em;
	*width:56.251em;
	min-width:750px;
}</code></pre>
<ul>
<li>57.69 = 750 / 13</li>
<li>56.251 = 750 / 13.333</li>
</ul>
<p><strong>注：</strong><a href="http://developer.yahoo.com/yui/examples/grids/grids-doc-custom.html" target="_blank" title="Setting Page Width with YUI Grids">《Setting Page Width with YUI Grids》</a> 一文中提到：IE 下的 em 是宽度除以 13 ，再乘以 .9759 得到。同解于为什么现在的 YUI 源码中 IE 下 750px 的宽度是：56.301em（<strong>750 / 13 * 0.9759</strong>）。</p>
<p>此算法将在 YUI 的下个版本中换为上面的新算法（IE 浏览器用 <a href="http://tech.groups.yahoo.com/group/ydn-javascript/message/27139" target="_blank" title="YUI CSS Problems">13.333 </a>）。</p>
<p><strong>3、清除布局的浮动</strong></p>
<p>针对非 IE 浏览器：</p>
<pre><code>.yui-gf:after {
	content:".";
	display:block;
	height:0;
	clear:both;
	visibility:hidden;
}</code></pre>
<p>而对于 IE 浏览器，使用了 zoom:1 来触发 <a href="http://www.satzansatz.de/cssd/onhavinglayout.htm" target="_blank" title="On having layout">haslayout</a>。不过对于此 <a href="http://nate.koechley.com/blog/ " target="_blank" title="Nate Koechley">Nate Koechley</a> 这样解释的：</p>
<blockquote><p>Zoom is a non-valid attribute and so you&#8217;ll see warnings when you validate your CSS. I&#8217;m aware of that and think it is an acceptable tradeoff. </p></blockquote>
<p>个人比较赞成他的想法：<strong>I think it is an acceptable tradeoff</strong>。</p>
<img src="http://www.planabc.net/?ak_action=api_record_view&id=66&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.planabc.net/2008/05/04/yui_grids_css/feed/</wfw:commentRss>
		<slash:comments>40</slash:comments>
		</item>
		<item>
		<title>background-clip 与 background-origin 的一则运用</title>
		<link>http://www.planabc.net/2008/04/14/background-clip_background-origin/</link>
		<comments>http://www.planabc.net/2008/04/14/background-clip_background-origin/#comments</comments>
		<pubDate>Mon, 14 Apr 2008 11:42:24 +0000</pubDate>
		<dc:creator>怿飞</dc:creator>
				<category><![CDATA[HTML/CSS/XML/XSL]]></category>
		<category><![CDATA[background]]></category>
		<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://www.planabc.net/?p=62</guid>
		<description><![CDATA[background-clip 和 background-origin 是 CSS3 中新加的 background module 属性，用来确定背景的定位。 background-clip 用来判断 background 是否包含 border 区域。而 background-origin 用来决定 background-position 计算的参考位置。 语法为： background-clip: [border &#124; padding] [, [border &#124; padding]]* background-origin: [border &#124; padding &#124; content] [, [border &#124; padding &#124; content]]* 对于 background-clip： 如果是 padding 值，则 background 忽略 padding边缘，border 是透明的。如果是 border 值，则background 包括 border 区域。如果 background-image [...... ]]></description>
			<content:encoded><![CDATA[<p>background-clip 和 background-origin 是 CSS3 中新加的 <a href="http://www.w3.org/TR/css3-background/#dependencies" title="background module" target="_blank">background module </a>属性，用来确定背景的定位。</p>
<p>background-clip 用来判断 background 是否包含 border 区域。而 background-origin 用来决定 background-position 计算的参考位置。</p>
<p>语法为：</p>
<ul>
<li>background-clip: [border | padding] [, [border | padding]]* </li>
<li>background-origin: [border | padding | content] [, [border | padding | content]]* </li>
</ul>
<p><img src="http://www.planabc.net/wp-content/uploads/2008/04/box.png" alt="盒模型示意图" /></p>
<p>对于 <strong>background-clip</strong>：</p>
<p>如果是 padding 值，则 background 忽略 padding边缘，border 是透明的。如果是 border 值，则background 包括 border 区域。如果 <a href="http://www.w3.org/TR/css3-background/#layering" target="_blank" title="background-image">background-image</a> 图片有多个，对应的 background-clip 值之间用逗号分隔。</p>
<p>对于 <strong>background-origin</strong>：</p>
<p>如果是 padding 值，则 position 相对于 padding 边缘（&#8221;0 0&#8243; 为 padding 边缘的左上角，而 &#8220;100% 100%&#8221; 为右下角）。如果是 border 值，则意味着相对 border 边缘。而 border 值则相对于内容边缘。与 background-clip 相同，多个值也用逗号分隔。如果 background-clip 是 padding 值，background-origin 是 border 值，并且 background-position 是 &#8220;top left&#8221;（默认初始值），则背景图左上角将会被截取掉部分。</p>
<p>这两个属性仅从 CSS3 才出现，在未使用该属性 background module 中的默认表现又如何呢？</p>
<p>background-clip 默认类似于 background-clip:border。</p>
<p>background-origin 默认类似于 background-origin:padding。 </p>
<p>但 IE 又是特例 （It sucks）。 </p>
<p>在 IE6 、IE7 中，一般元素（button 等除外）的背景相当于：background-clip:border; background-origin:border; </p>
<p>而 hasLayout 的元素（加上 button 等）的背景则相当于：background-clip:padding; background-origin:padding; </p>
<p>这一对 CSS3 属性已在 Mozilla, Safari 3 和 Konqueror 等浏览器中实现，不过都是通过其私有属性的表达方式。</p>
<blockquote><p>基本非 IE 的浏览器的私有属性一般都会以 -xxx- 这样开始，-o-就是以 Presto 为引擎的 Opera 私有的、-icab- 是 iCab 私有的，-khtml- 是以 KHTML 为引擎的浏览器（如 Konqueror Safari）、-moz- 就是以 Mozilla 的 Gecko 为引擎的浏览器（如Firefox，Mozilla）、-webkit- 就是以 Webkit 渲染引擎（是 KHTML 的衍生产品）的浏览器（如 Safari、Swift）。</p></blockquote>
<p>即支持的私有属性分别为：</p>
<ul>
<li><a href="http://developer.mozilla.org/en/docs/CSS:-moz-background-clip" title=":-moz-background-clip" target="_blank">-moz-background-clip</a></li>
<li>-webkit-background-clip</li>
<li>-khtml-background-clip</li>
<li><a href="http://developer.mozilla.org/en/docs/CSS:-moz-background-origin" title="-moz-background-origin" target="_blank">-moz-background-origin</a></li>
<li>-webkit-background-origin</li>
<li>-khtml-background-origin</li>
</ul>
<p>下面举个运用 background-origin 属性的<a href="http://www.planabc.net/demo/background-clip_background-origin.html" target="_blank" title="background-clip 与 background-origin 的一则运用">简单例子</a>，效果如下图：</p>
<p><img src="http://www.planabc.net/wp-content/uploads/2008/04/button080414.gif" alt="范例示意图" /></p>
<p>HTML 部分：</p>
<p><code>
<pre>&lt;button&gt;这里是按钮，是钮不是妞&lt;/button&gt;</pre>
<p></code></p>
<p>CSS 部分（详细见注释）：</p>
<p><code>
<pre>button {
	display:inline-block;/*触发hasLayout*/
	height:26px;
	padding:0 20px;
	cursor:pointer;
	*overflow:visible;/*消除IE按钮左右padding随字数长度变化的BUG*/

	border:3px double #95071b;/*用3px 双边来模拟设计图中的白线*/
	border-right-color:#650513;
	border-bottom-color:#650513;

	background-color:#95071b;

	/*设置背景裁切方式和参考线*/
	-moz-background-clip:padding;
	-webkit-background-clip:padding;
	-khtml-background-clip:padding;

	-moz-background-origin:padding;
	-webkit-background-origin:padding;
	-khtml-background-origin:padding;

	/*向前兼容*/
	background-clip:padding;
	background-origin:padding;

	color:#fff;
	font-size:12px;
	line-height:20px;

	/*修正IE6下高度问题*/
	_padding-top:2px;
	_line-height:14px;
}</pre>
<p></code></p>
<p>不足之处：此效果在 Opera 下无法实现。</p>
<p>当然这只是一种对 HTML 代码有洁癖的解决方法（限于对 background-clip 和 background-origin 属性的学习和理解），当然也可尝试其他方法，也许会使 CSS 更简洁，至于各种方法的优缺点自己衡量。</p>
<p>扩展阅读：</p>
<ul>
<li><a href="http://www.brunildo.org/test/BackgroundBorder2.html" title="Background and Border" target="_blank">《Background and Border》</a></li>
</ul>
<img src="http://www.planabc.net/?ak_action=api_record_view&id=62&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.planabc.net/2008/04/14/background-clip_background-origin/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>模拟兼容性的 inline-block 属性</title>
		<link>http://www.planabc.net/2008/04/08/cross_browser_support_for_inline-block_styling/</link>
		<comments>http://www.planabc.net/2008/04/08/cross_browser_support_for_inline-block_styling/#comments</comments>
		<pubDate>Tue, 08 Apr 2008 03:56:20 +0000</pubDate>
		<dc:creator>怿飞</dc:creator>
				<category><![CDATA[HTML/CSS/XML/XSL]]></category>
		<category><![CDATA[display]]></category>
		<category><![CDATA[inline-block]]></category>

		<guid isPermaLink="false">http://www.planabc.net/?p=60</guid>
		<description><![CDATA[一年前网上还找不到关于 inline-block 属性的文章，为了方便大家更好的理解该属性，当时总结整理了篇《display:inline-block的深入理解》。 而现在对于 inline-block 属性运用的需求也越来越多，可惜依旧只有 Firefox3 beta、IE8 beta、Opera、Safari 支持 inline-block 属性（注：原来只有 Opera、Safari 支持），但 IE6、IE7 可以通过触发 hasLayout 来模拟，Firefox2 有-moz-inline-box 和 -moz-inline-stack 私有属性（这两个属性的比较引用自秦歌的《display:inline-block的应用两例》）。 在实际应用中 -moz-inline-box 会存在元素间的对齐等问题，虽然 Firefox 还有一个私有属性 -moz-box-align 来帮助解决对齐问题，但依旧难以预料问题多多，而相对来说 -moz-inline-stack 的表现更像 inline-block ，这点可以在 Firefox3 中测试出来。但 -moz-inline-stack 使用时也会有一个 bug ，如果一个 display:-moz-inline-stack; 的元... ]]></description>
			<content:encoded><![CDATA[<p>一年前网上还找不到关于 <a href="http://www.w3.org/TR/CSS21/visuren.html#display-prop" target="_blank" title="inline-block">inline-block</a> 属性的文章，为了方便大家更好的理解该属性，当时总结整理了篇<a href="http://www.planabc.net/2007/03/11/display_inline-block/" title="display:inline-block的深入理解">《display:inline-block的深入理解》</a>。</p>
<p>而现在对于 inline-block 属性运用的需求也越来越多，可惜依旧只有 Firefox3 beta、IE8 beta、Opera、Safari 支持 inline-block 属性（注：原来只有 Opera、Safari 支持），但 IE6、IE7 可以通过触发 <a href="http://old9.blogsome.com/2006/04/11/onhavinglayout" title="_blank" title="On having layout">hasLayout</a> 来模拟，Firefox2 有-moz-inline-box 和 -moz-inline-stack 私有属性（这两个属性的比较引用自秦歌的<a href="http://dancewithnet.com/2008/04/05/examples-of-display-inline-block/" target="_blank" title="display:inline-block的应用两例">《display:inline-block的应用两例》</a>）。</p>
<blockquote><p>在实际应用中 -moz-inline-box 会存在元素间的对齐等问题，虽然 Firefox 还有一个私有属性 <a href="http://developer.mozilla.org/en/docs/Mozilla_CSS_Extensions#-moz-box-align" target="_blank" title="-moz-box-align">-moz-box-align</a> 来帮助解决对齐问题，但依旧难以预料问题多多，而相对来说 -moz-inline-stack 的表现更像 inline-block ，这点可以在 Firefox3 中测试出来。但 -moz-inline-stack 使用时也会有一个 bug ，如果一个 display:-moz-inline-stack; 的元素外层元素是 display:inline; 即会使 Firefox 中其包含的链接不可点，这个需要用 position:relative; 来解决。</p></blockquote>
<p>最终我们模拟的代码如下：</p>
<pre><code>display:inline-block; /*Firefox3 beta、IE8 beta、Opera、Safari 支持，IE 下触发 inline 元素的 hasLayout*/
display:-moz-inline-stack; /* Firefox 的私有属性，也可以用 -moz-inline-box */

zoom:1; /*IE 下触发 hasLayout*/
*display:inline; /*一旦IE 下触发了 hasLayout，设置 block 元素为 inline 会使 display:inline 效果与 display:inline-block 相似*/

text-indent:-9999px;
*text-indent:0;
font-size:0;
line-height:0; /* 如需隐藏文字，可用这四个属性 */
/*另外上面隐藏文字，还可以用更简化的方法：line-height:超级大值;font-size:0; */

overflow:hidden; /* 隐藏溢出的内容 */

vertical-align:middle; /* 行内垂直居中，针对 Opera 比较大的偏离 */

width:？px; /*？为任意非auto值*/
height:？px; /*？为任意非auto值*/</code></pre>
<p>扩展阅读：</p>
<ul>
<li><a href="http://dancewithnet.com/2008/04/05/examples-of-display-inline-block/" target="_blank" title="display:inline-block的应用两例">《display:inline-block的应用两例》</a></li>
<li><a href="http://ued.koubei.com/2008/04/05/inline-block%e4%bb%8e%e5%85%a5%e9%97%a8%e5%88%b0%e7%b2%be%e9%80%9a/" target="_blank" title="inline-block从入门到精通">《inline-block从入门到精通》</a></li>
<li><a href="http://foohack.com/2007/11/cross-browser-support-for-inline-block-styling/" target="_blank" title="Cross Browser Support for inline-block Styling">《Cross Browser Support for inline-block Styling》</a></li>
</ul>
<img src="http://www.planabc.net/?ak_action=api_record_view&id=60&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.planabc.net/2008/04/08/cross_browser_support_for_inline-block_styling/feed/</wfw:commentRss>
		<slash:comments>24</slash:comments>
		</item>
		<item>
		<title>IE5 到 IE8 的 CSS 兼容列表</title>
		<link>http://www.planabc.net/2008/03/27/css_compatibility_and_internet_explorer/</link>
		<comments>http://www.planabc.net/2008/03/27/css_compatibility_and_internet_explorer/#comments</comments>
		<pubDate>Thu, 27 Mar 2008 03:31:47 +0000</pubDate>
		<dc:creator>怿飞</dc:creator>
				<category><![CDATA[HTML/CSS/XML/XSL]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[兼容]]></category>

		<guid isPermaLink="false">http://www.planabc.net/2008/03/27/ie5-%e5%88%b0-ie8-%e7%9a%84-css-%e5%85%bc%e5%ae%b9%e5%88%97%e8%a1%a8/</guid>
		<description><![CDATA[IE 官方提供的 IE5 到 IE8 的 CSS 兼容列表：《CSS Compatibility and Internet Explorer》（小马 最新提供的信息） 很好的参考资料，可以方便帮助大家了解和熟悉各 IE 浏览器之间 CSS 的兼容情况。 个人最近一直对 MS 另眼相看，从 IE 8 Beta 1 发布的第一天起，至少我们看到 MS 的态度，积极开放，结果虽不太如人意，但至少 MS 跨出了重要的一步，放下了一向高傲的姿态 ... ]]></description>
			<content:encoded><![CDATA[<p>IE 官方提供的 IE5 到 IE8 的 CSS 兼容列表：<a href="http://msdn2.microsoft.com/en-us/library/cc351024(VS.85).aspx" target="_blank" title="CSS Compatibility and Internet Explorer">《CSS Compatibility and Internet Explorer》</a>（小马 最新提供的信息）</p>
<p>很好的参考资料，可以方便帮助大家了解和熟悉各 IE 浏览器之间 CSS 的兼容情况。</p>
<p>个人最近一直对 MS 另眼相看，从 IE 8 Beta 1 发布的第一天起，至少我们看到 MS 的态度，积极开放，结果虽不太如人意，但至少 MS 跨出了重要的一步，放下了一向高傲的姿态 。</p>
<img src="http://www.planabc.net/?ak_action=api_record_view&id=57&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.planabc.net/2008/03/27/css_compatibility_and_internet_explorer/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
