<?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>芒果小站 &#187; CSS</title>
	<atom:link href="http://www.mangguo.org/tag/css/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mangguo.org</link>
	<description>这里不卖芒果，请另寻他处购买。</description>
	<lastBuildDate>Mon, 06 Feb 2012 12:14:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>抛弃 CSS Hacks 后的浏览器兼容方案</title>
		<link>http://www.mangguo.org/after-abandoning-css-hacks-browser-compatible-solution/</link>
		<comments>http://www.mangguo.org/after-abandoning-css-hacks-browser-compatible-solution/#comments</comments>
		<pubDate>Wed, 16 Nov 2011 13:27:47 +0000</pubDate>
		<dc:creator>芒果</dc:creator>
				<category><![CDATA[前端]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[CSS Hacks]]></category>
		<category><![CDATA[IE]]></category>

		<guid isPermaLink="false">http://www.mangguo.org/?p=6476</guid>
		<description><![CDATA[如果你看过之前发在芒果小站的《CSS 忍者：安全的 CSS hacks 秘籍 》这篇文章，应该基本清楚了通过 IE 条件注释替代 CSS Hacks 的技巧。最近考虑在项目中实际应用这个方案。 一般情况下的浏览器兼容需要考虑 IE6/7/8 三种 IE 版本，当然在 IE9 开始逐步推向市场后，又会有更多的衍生版本。所以我目前只考虑 IE7~9 版本的兼容情况。涉及到的条件注释代码如下： &#60;!DOCTYPE html&#62; &#60;!--[if lt IE 7 ]&#62;&#60;html class="ie ie6"&#62;&#60;![endif]--&#62; &#60;!--[if IE 7 ]&#62;&#60;html class="ie ie7"&#62;&#60;![endif]--&#62; &#60;!--[if IE 8 ]&#62;&#60;html class="ie ie8"&#62;&#60;![endif]--&#62; &#60;!--[if IE 9 ]&#62;&#60;html class="ie ie9"&#62;&#60;![endif]--&#62; &#60;!--[if (gt IE 9)&#124;!(IE)]&#62;&#60;!--&#62;&#60;html&#62;&#60;!--&#60;![endif]--&#62; 使用说明如下： .test { /* [...]]]></description>
			<content:encoded><![CDATA[<p>如果你看过之前发在芒果小站的《<a href="../css-ninja-safe-css-hacks/">CSS 忍者：安全的 CSS hacks 秘籍</a> 》这篇文章，应该基本清楚了通过 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/ie">IE</a></span> 条件注释替代 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css">CSS</a></span> Hacks 的技巧。最近考虑在项目中实际应用这个方案。</p>
<p>一般情况下的浏览器兼容需要考虑 IE6/7/8 三种 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/ie">IE</a></span> 版本，当然在 IE9 开始逐步推向市场后，又会有更多的衍生版本。所以我目前只考虑 IE7~9 版本的兼容情况。涉及到的条件注释代码如下：</p>
<pre>&lt;!DOCTYPE html&gt;
&lt;!--[if lt <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/ie">IE</a></span> 7 ]&gt;&lt;html class="ie ie6"&gt;&lt;![endif]--&gt;
&lt;!--[if <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/ie">IE</a></span> 7 ]&gt;&lt;html class="ie ie7"&gt;&lt;![endif]--&gt;
&lt;!--[if <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/ie">IE</a></span> 8 ]&gt;&lt;html class="ie ie8"&gt;&lt;![endif]--&gt;
&lt;!--[if <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/ie">IE</a></span> 9 ]&gt;&lt;html class="ie ie9"&gt;&lt;![endif]--&gt;
&lt;!--[if (gt <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/ie">IE</a></span> 9)|!(<span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/ie">IE</a></span>)]&gt;&lt;!--&gt;&lt;html&gt;&lt;!--&lt;![endif]--&gt;</pre>
<p>使用说明如下：</p>
<pre>.test {
    /* 针对非 ie 浏览器的样式 */
}
.ie .test {
    /* 针对所有 ie 版本的样式 */
}
.ie6 .test {
    /* 针对 ie6 的样式 */
}
...
.ie9 .test {
    /* 针对 ie9 的样式 */
}</pre>
<p>之前那篇文章里也有同学提出通过 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/php">PHP</a></span> 判断 UA 参数并动态输出样式表的方法，这个虽然是简洁明了，但和后端代码耦合在一起，总觉得不是一回事。况且实际应用中很多情况下会将页面模板化，做动态输出并不非常适合。</p>
<p>另外，国内各大双核高速安全的壳浏览器还没有经过测试，这个需要再做了解。</p>
<p><strong>2011.11.18 日补充：</strong></p>
<p>附上一份 demo，请使用不同版本 ie 浏览器预览该演示页面：<a href="http://www.mangguo.org/wp-content/uploads/2011/11/cross_browser_compatible_no_css_hacks.html" target="_blank">cross_browser_compatible_no_css_hacks.html</a></p>
<h3  class="related_post_title">推荐阅读</h3><ul class="related_post"><li><a href="http://www.mangguo.org/css-hacks-for-ie-ie-can-be-perfect/" title="CSS Hacks for IE，IE 也可以很完美">CSS Hacks for IE，IE 也可以很完美</a> (7)</li><li><a href="http://www.mangguo.org/css-ninja-safe-css-hacks/" title="CSS 忍者：安全的 CSS hacks 秘籍">CSS 忍者：安全的 CSS hacks 秘籍</a> (32)</li><li><a href="http://www.mangguo.org/ie-form-control-button-focus-problem/" title="IE 表单控件的按钮聚焦问题">IE 表单控件的按钮聚焦问题</a> (9)</li><li><a href="http://www.mangguo.org/in-depth-understanding-of-display-inline-block/" title="display:inline-block 的深入理解">display:inline-block 的深入理解</a> (5)</li><li><a href="http://www.mangguo.org/transparent-image-css-alpha-filter-method/" title="透明图片的 CSS Alpha 滤镜方法">透明图片的 CSS Alpha 滤镜方法</a> (3)</li><li><a href="http://www.mangguo.org/compatible-with-different-browser-css-hack/" title="兼容不同浏览器的 CSS Hack 写法">兼容不同浏览器的 CSS Hack 写法</a> (9)</li><li><a href="http://www.mangguo.org/pure-english-pure-css-to-force-off-line-digital/" title="纯英文纯数字 CSS 强制折行">纯英文纯数字 CSS 强制折行</a> (7)</li><li><a href="http://www.mangguo.org/murder-caused-by-a-coding/" title="一个编码引发的血案">一个编码引发的血案</a> (10)</li></ul><hr />
© 2010 芒果小站 | <a href="http://www.mangguo.org/after-abandoning-css-hacks-browser-compatible-solution/">固定链接</a> | <a href="http://www.mangguo.org/after-abandoning-css-hacks-browser-compatible-solution/#comments">10 条评论</a> | 标签 <a href="http://www.mangguo.org/tag/css/" rel="tag">CSS</a>, <a href="http://www.mangguo.org/tag/css-hacks/" rel="tag">CSS Hacks</a>, <a href="http://www.mangguo.org/tag/ie/" rel="tag">IE</a>]]></content:encoded>
			<wfw:commentRss>http://www.mangguo.org/after-abandoning-css-hacks-browser-compatible-solution/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>纯英文纯数字 CSS 强制折行</title>
		<link>http://www.mangguo.org/pure-english-pure-css-to-force-off-line-digital/</link>
		<comments>http://www.mangguo.org/pure-english-pure-css-to-force-off-line-digital/#comments</comments>
		<pubDate>Tue, 15 Nov 2011 04:32:29 +0000</pubDate>
		<dc:creator>芒果</dc:creator>
				<category><![CDATA[前端]]></category>
		<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://www.mangguo.org/?p=6469</guid>
		<description><![CDATA[文字折行经常被测试拿来当 bug 提，这种蛋疼的事情还是写个公共类了事吧！ .break-word { word-wrap: break-word; break-word: break-all; } 推荐阅读抛弃 CSS Hacks 后的浏览器兼容方案 (10)让 Chrome 崩溃的 CSS 代码 (17)自定义文件上传控件样式（兼容 IE6） (8)CSS 忍者：安全的 CSS hacks 秘籍 (32)12 款简化 CSS3 开发的实用工具 (12)IE6 下的神奇 CSS 字体 bug (25)如何使用 CSS3 伪类 (7)使用 &#60;hr&#62; 标签创建水平分隔线 (3) © 2010 芒果小站 &#124; 固定链接 &#124; 7 条评论 &#124; 标签 CSS]]></description>
			<content:encoded><![CDATA[<p>文字折行经常被测试拿来当 bug 提，这种蛋疼的事情还是写个公共类了事吧！</p>
<p><img class="alignnone size-full wp-image-6470" title="20111115115435" src="http://www.mangguo.org/wp-content/uploads/2011/11/20111115115435.png" alt="" width="499" height="142" /></p>
<pre>.break-word {
    word-wrap: break-word;
    break-word: break-all;
}</pre>
<p><img class="alignnone size-full wp-image-6473" title="20111115123403" src="http://www.mangguo.org/wp-content/uploads/2011/11/20111115123403.png" alt="" width="500" height="199" /></p>
<h3  class="related_post_title">推荐阅读</h3><ul class="related_post"><li><a href="http://www.mangguo.org/after-abandoning-css-hacks-browser-compatible-solution/" title="抛弃 CSS Hacks 后的浏览器兼容方案">抛弃 CSS Hacks 后的浏览器兼容方案</a> (10)</li><li><a href="http://www.mangguo.org/let-ben-collapse-css-chrome/" title="让 Chrome 崩溃的 CSS 代码">让 Chrome 崩溃的 CSS 代码</a> (17)</li><li><a href="http://www.mangguo.org/custom-input-file-style-ie-compatible/" title="自定义文件上传控件样式（兼容 IE6）">自定义文件上传控件样式（兼容 IE6）</a> (8)</li><li><a href="http://www.mangguo.org/css-ninja-safe-css-hacks/" title="CSS 忍者：安全的 CSS hacks 秘籍">CSS 忍者：安全的 CSS hacks 秘籍</a> (32)</li><li><a href="http://www.mangguo.org/10-useful-tools-to-simplify-css3-development/" title="12 款简化 CSS3 开发的实用工具">12 款简化 CSS3 开发的实用工具</a> (12)</li><li><a href="http://www.mangguo.org/ie6-magic-css-font-bug/" title="IE6 下的神奇 CSS 字体 bug">IE6 下的神奇 CSS 字体 bug</a> (25)</li><li><a href="http://www.mangguo.org/how-to-use-css3-pseudo-classes/" title="如何使用 CSS3 伪类">如何使用 CSS3 伪类</a> (7)</li><li><a href="http://www.mangguo.org/hr-tag-create-horizontal-separator/" title="使用 &lt;hr&gt; 标签创建水平分隔线">使用 &lt;hr&gt; 标签创建水平分隔线</a> (3)</li></ul><hr />
© 2010 芒果小站 | <a href="http://www.mangguo.org/pure-english-pure-css-to-force-off-line-digital/">固定链接</a> | <a href="http://www.mangguo.org/pure-english-pure-css-to-force-off-line-digital/#comments">7 条评论</a> | 标签 <a href="http://www.mangguo.org/tag/css/" rel="tag">CSS</a>]]></content:encoded>
			<wfw:commentRss>http://www.mangguo.org/pure-english-pure-css-to-force-off-line-digital/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>让 Chrome 崩溃的 CSS 代码</title>
		<link>http://www.mangguo.org/let-ben-collapse-css-chrome/</link>
		<comments>http://www.mangguo.org/let-ben-collapse-css-chrome/#comments</comments>
		<pubDate>Tue, 06 Sep 2011 12:13:45 +0000</pubDate>
		<dc:creator>wwf</dc:creator>
				<category><![CDATA[前端]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://www.mangguo.org/?p=6269</guid>
		<description><![CDATA[background-image: -ms-radial-gradient(center bottom, ellipse closest-corner, #4B8BEE 0%, #78AAF6 100%); background-image: -moz-radial-gradient(center bottom, ellipse closest-corner, #4B8BEE 0%, #78AAF6 100%); background-image: -o-radial-gradient(center bottom, ellipse closest-corner, #4B8BEE 0%, #7BACFC 100%); background-image: -webkit-gradient(radial, center bottom, 0, center bottom, 480, color-stop(0, #4B8BEE), color-stop(1, #78AAF6)); background-image: -webkit-radial-gradient(center bottom, ellipse closest-corner, #4B8BEE 0%, #78AAF6 100%); background-image: radial-gradient(center bottom, ellipse closest-corner, #4A8BEE 0%, [...]]]></description>
			<content:encoded><![CDATA[<pre>background-image: -ms-radial-gradient(center bottom, ellipse closest-corner, #4B8BEE 0%, #78AAF6 100%);
background-image: -moz-radial-gradient(center bottom, ellipse closest-corner, #4B8BEE 0%, #78AAF6 100%);
background-image: -o-radial-gradient(center bottom, ellipse closest-corner, #4B8BEE 0%, #7BACFC 100%);
background-image: -webkit-gradient(radial, center bottom, 0, center bottom, 480, color-stop(0, #4B8BEE), color-stop(1, #78AAF6));
background-image: -webkit-radial-gradient(center bottom, ellipse closest-corner, #4B8BEE 0%, #78AAF6 100%);
background-image: radial-gradient(center bottom, ellipse closest-corner, #4A8BEE 0%, #78AAF6 100%);</pre>
<p><a href="http://www.mangguo.org/wp-content/uploads/2011/09/chrome_crash_css.html" target="_blank">demo 地址，请用 chrome 浏览</a><br />
mark下</p>
<h3  class="related_post_title">推荐阅读</h3><ul class="related_post"><li><a href="http://www.mangguo.org/adminunion-chrome-extension-v1-0-0/" title="站长军团 Chrome 扩展插件 v1.0.0">站长军团 Chrome 扩展插件 v1.0.0</a> (20)</li><li><a href="http://www.mangguo.org/after-abandoning-css-hacks-browser-compatible-solution/" title="抛弃 CSS Hacks 后的浏览器兼容方案">抛弃 CSS Hacks 后的浏览器兼容方案</a> (10)</li><li><a href="http://www.mangguo.org/pure-english-pure-css-to-force-off-line-digital/" title="纯英文纯数字 CSS 强制折行">纯英文纯数字 CSS 强制折行</a> (7)</li><li><a href="http://www.mangguo.org/custom-input-file-style-ie-compatible/" title="自定义文件上传控件样式（兼容 IE6）">自定义文件上传控件样式（兼容 IE6）</a> (8)</li><li><a href="http://www.mangguo.org/css-ninja-safe-css-hacks/" title="CSS 忍者：安全的 CSS hacks 秘籍">CSS 忍者：安全的 CSS hacks 秘籍</a> (32)</li><li><a href="http://www.mangguo.org/10-useful-tools-to-simplify-css3-development/" title="12 款简化 CSS3 开发的实用工具">12 款简化 CSS3 开发的实用工具</a> (12)</li><li><a href="http://www.mangguo.org/ie6-magic-css-font-bug/" title="IE6 下的神奇 CSS 字体 bug">IE6 下的神奇 CSS 字体 bug</a> (25)</li><li><a href="http://www.mangguo.org/form-reset-hidden-field-issue/" title="表单中的隐藏域重置">表单中的隐藏域重置</a> (11)</li></ul><hr />
© 2010 芒果小站 | <a href="http://www.mangguo.org/let-ben-collapse-css-chrome/">固定链接</a> | <a href="http://www.mangguo.org/let-ben-collapse-css-chrome/#comments">17 条评论</a> | 标签 <a href="http://www.mangguo.org/tag/chrome/" rel="tag">Chrome</a>, <a href="http://www.mangguo.org/tag/css/" rel="tag">CSS</a>]]></content:encoded>
			<wfw:commentRss>http://www.mangguo.org/let-ben-collapse-css-chrome/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>自定义文件上传控件样式（兼容 IE6）</title>
		<link>http://www.mangguo.org/custom-input-file-style-ie-compatible/</link>
		<comments>http://www.mangguo.org/custom-input-file-style-ie-compatible/#comments</comments>
		<pubDate>Wed, 22 Jun 2011 10:31:42 +0000</pubDate>
		<dc:creator>芒果</dc:creator>
				<category><![CDATA[前端]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[IE6]]></category>

		<guid isPermaLink="false">http://www.mangguo.org/?p=5898</guid>
		<description><![CDATA[要想直接通过 CSS 来控制文件上传控件，基本没戏的。当然也有一些解决方案，例如 Mr.Think 的这篇文章《利用label标签和CSS美化文件上传表单(不兼容IE6)》。昨天也恰好遇到了这个问题，顺手记录下吧。 首先，给 &#60;input type="file"&#62; 元素戴个套子，这样比较安全嘛，是不是？看代码： &#60;span class="input-file"&#62;浏览...&#60;input type="file"&#62;&#60;/span&#62; 有了这个安全的外层容器，我们就可以开搞了。问题的核心有两点：第一，把丑陋的原生上传控件给藏起来；第二，支持点击上传功能。 关键的代码片段： .input-file { overflow:hidden; position:relative; } .input-file input{ opacity:0; filter:alpha(opacity=0); font-size:100px; position:absolute; top:0; right:0; } 其中，字体大小 100px 的原因在于放大上传控件右侧的按钮区域，结合靠右定位，能够保证鼠标 cursor 为 default 状态。 另外，如果要支持鼠标悬停效果，也是可以的，把 span 标签改成 a 标签，然后加上 hover 伪类就可以了。 &#60;a href="javascript:void(0);"&#62;浏览...&#60;input type="file"&#62;&#60;/a&#62; 貌似是全兼容的？反正 IE 是可以的。自己看吧，懒得看兼容了。 猛击这里查看 Demo 稿：css_input_file.html 推荐阅读IE6 下的神奇 CSS 字体 [...]]]></description>
			<content:encoded><![CDATA[<p>要想直接通过 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css">CSS</a></span> 来控制文件上传控件，基本没戏的。当然也有一些解决方案，例如 <a href="http://mrthink.net/" target="_blank">Mr.Think</a> 的这篇文章<a href="http://mrthink.net/css-input-label-file/" target="_blank">《利用label标签和CSS美化文件上传表单(不兼容IE6)》</a>。昨天也恰好遇到了这个问题，顺手记录下吧。</p>
<p><img src="http://www.mangguo.org/wp-content/uploads/2011/06/20110622183614.png" alt="" title="20110622183614" width="247" height="252" class="alignnone size-full wp-image-5909" /></p>
<p>首先，给 <code>&lt;input type="file"&gt;</code> 元素戴个套子，这样比较安全嘛，是不是？看代码：</p>
<pre>&lt;span class="input-file"&gt;浏览...&lt;input type="file"&gt;&lt;/span&gt;</pre>
<p>有了这个安全的外层容器，我们就可以开搞了。问题的核心有两点：第一，把丑陋的原生上传控件给藏起来；第二，支持点击上传功能。</p>
<p>关键的代码片段：</p>
<pre>.input-file {
overflow:hidden;
position:relative;
}</pre>
<pre>.input-file input{
opacity:0;
filter:alpha(opacity=0);
font-size:100px;
position:absolute;
top:0;
right:0;
}</pre>
<p>其中，字体大小 100px 的原因在于放大上传控件右侧的按钮区域，结合靠右定位，能够保证鼠标 cursor 为 default 状态。</p>
<p>另外，如果要支持鼠标悬停效果，也是可以的，把 <code>span</code> 标签改成 <code>a</code> 标签，然后加上 hover 伪类就可以了。</p>
<pre>&lt;a href="javascript:void(0);"&gt;浏览...&lt;input type="file"&gt;&lt;/a&gt;</pre>
<p>貌似是全兼容的？反正 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/ie">IE</a></span> 是可以的。自己看吧，懒得看兼容了。</p>
<p>猛击这里查看 Demo 稿：<a href="http://www.mangguo.org/wp-content/uploads/2011/06/css_input_file.html" target="_blank">css_input_file.html</a></p>
<h3  class="related_post_title">推荐阅读</h3><ul class="related_post"><li><a href="http://www.mangguo.org/ie6-magic-css-font-bug/" title="IE6 下的神奇 CSS 字体 bug">IE6 下的神奇 CSS 字体 bug</a> (25)</li><li><a href="http://www.mangguo.org/ie6-can-not-display-a-dynamically-created-iframe-bug/" title="IE6 动态创建 iframe 无法显示的 bug">IE6 动态创建 iframe 无法显示的 bug</a> (7)</li><li><a href="http://www.mangguo.org/after-abandoning-css-hacks-browser-compatible-solution/" title="抛弃 CSS Hacks 后的浏览器兼容方案">抛弃 CSS Hacks 后的浏览器兼容方案</a> (10)</li><li><a href="http://www.mangguo.org/pure-english-pure-css-to-force-off-line-digital/" title="纯英文纯数字 CSS 强制折行">纯英文纯数字 CSS 强制折行</a> (7)</li><li><a href="http://www.mangguo.org/let-ben-collapse-css-chrome/" title="让 Chrome 崩溃的 CSS 代码">让 Chrome 崩溃的 CSS 代码</a> (17)</li><li><a href="http://www.mangguo.org/css-ninja-safe-css-hacks/" title="CSS 忍者：安全的 CSS hacks 秘籍">CSS 忍者：安全的 CSS hacks 秘籍</a> (32)</li><li><a href="http://www.mangguo.org/10-useful-tools-to-simplify-css3-development/" title="12 款简化 CSS3 开发的实用工具">12 款简化 CSS3 开发的实用工具</a> (12)</li><li><a href="http://www.mangguo.org/how-to-use-css3-pseudo-classes/" title="如何使用 CSS3 伪类">如何使用 CSS3 伪类</a> (7)</li></ul><hr />
© 2010 芒果小站 | <a href="http://www.mangguo.org/custom-input-file-style-ie-compatible/">固定链接</a> | <a href="http://www.mangguo.org/custom-input-file-style-ie-compatible/#comments">8 条评论</a> | 标签 <a href="http://www.mangguo.org/tag/css/" rel="tag">CSS</a>, <a href="http://www.mangguo.org/tag/ie6/" rel="tag">IE6</a>]]></content:encoded>
			<wfw:commentRss>http://www.mangguo.org/custom-input-file-style-ie-compatible/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>CSS 忍者：安全的 CSS hacks 秘籍</title>
		<link>http://www.mangguo.org/css-ninja-safe-css-hacks/</link>
		<comments>http://www.mangguo.org/css-ninja-safe-css-hacks/#comments</comments>
		<pubDate>Sun, 19 Jun 2011 08:59:24 +0000</pubDate>
		<dc:creator>芒果</dc:creator>
				<category><![CDATA[前端]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[CSS Hacks]]></category>
		<category><![CDATA[X-UA-Compatible]]></category>

		<guid isPermaLink="false">http://www.mangguo.org/?p=5882</guid>
		<description><![CDATA[你如何搞定 IE 这只难以驯服的怪兽？使用 CSS Hacks 或者条件注释么？恐怕没有什么解决方案是完美的。每个设计师或者前端码农都会有自己打败 IE 行之有效的方法。所有这些技术都各有利弊，让我们一起来看看。 通过条件判断引入样式表 使我们能很容易在 IE 浏览器中通过条件注释语句加载指定样式表，而其他非 IE 内核浏览器则自动忽略这段蹩脚的 HTML 注释。下面是一个例子： &#60;!--[if IE 8]&#62;&#60;link rel="stylesheet" href="ie8.css"&#62;&#60;![endif]--&#62; &#60;!--[if IE 7]&#62;&#60;link rel="stylesheet" href="ie7.css"&#62;&#60;![endif]--&#62; &#60;!--[if IE 6]&#62;&#60;link rel="stylesheet" href="ie6.css"&#62;&#60;![endif]--&#62; 这段代码会导致 IE8、IE7、IE6 各自加载对应的样式文件。这事实上是非常牛逼的，条件注释给按浏览器加载各自不同的样式表提供了可能，但同时需要维护多个样式文件。 CSS hacks 这事实上是个龌龊的做法，能解决问题又不符合规范，看着也很头大。大部分人看着它只能束手无策而又逼不得已。之前的《CSS Hacks for IE，IE 也可以很完美》已经谈过 IE 的 CSS hacks 了。现在可以来简单回顾一下常用的几个方法： _selector{property:value;} //IE6 *selector{property:value;} //IE6 &#38; IE7 selector{property:value\9;} //IE6 &#38; [...]]]></description>
			<content:encoded><![CDATA[<p>你如何搞定 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/ie">IE</a></span> 这只难以驯服的怪兽？使用 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css">CSS</a></span> Hacks 或者条件注释么？恐怕没有什么解决方案是完美的。每个设计师或者前端码农都会有自己打败 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/ie">IE</a></span> 行之有效的方法。所有这些技术都各有利弊，让我们一起来看看。</p>
<h3>通过条件判断引入样式表</h3>
<p>使我们能很容易在 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/ie">IE</a></span> 浏览器中通过条件注释语句加载指定样式表，而其他非 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/ie">IE</a></span> 内核浏览器则自动忽略这段蹩脚的 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/html">HTML</a></span> 注释。下面是一个例子：</p>
<pre>&lt;!--[if <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/ie">IE</a></span> 8]&gt;&lt;link rel="stylesheet" href="ie8.css"&gt;&lt;![endif]--&gt;
&lt;!--[if <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/ie">IE</a></span> 7]&gt;&lt;link rel="stylesheet" href="ie7.css"&gt;&lt;![endif]--&gt;
&lt;!--[if <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/ie">IE</a></span> 6]&gt;&lt;link rel="stylesheet" href="ie6.css"&gt;&lt;![endif]--&gt;</pre>
<p>这段代码会导致 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/ie8/">IE8</a></span>、IE7、IE6 各自加载对应的样式文件。这事实上是非常牛逼的，条件注释给按浏览器加载各自不同的样式表提供了可能，但同时需要维护多个样式文件。</p>
<h3><span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css">CSS</a></span> hacks</h3>
<p>这事实上是个龌龊的做法，能解决问题又不符合规范，看着也很头大。大部分人看着它只能束手无策而又逼不得已。之前的《<a href="../css-hacks-for-ie-ie-can-be-perfect/" target="_blank">CSS Hacks for IE，IE 也可以很完美</a>》已经谈过 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/ie">IE</a></span> 的 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css">CSS</a></span> hacks 了。现在可以来简单回顾一下常用的几个方法：</p>
<pre>_selector{property:value;} //IE6
*selector{property:value;} //IE6 &amp; IE7
selector{property:value\9;} //IE6 &amp; IE7 &amp; <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/ie8/">IE8</a></span></pre>
<p>这个一般人都知道，就不多说了。但面临的一个现实问题是，<code>\9</code> 这个 hack 不只是针对 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/ie8/">IE8</a></span> 以及更老版本奏效，IE9 最终的发行版依旧会受到这个 hack 的影响。而 IE9 本身在 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css">CSS</a></span> 上的各种缺陷又是被修复的。如果将来 IE10、IE11 来了，那又怎么办？显然 <code>\9</code> 并不是一个严谨的安全的方案。</p>
<p>另外，采用不同的 <code>X-UA-Compatible</code> 模式也会影响不同版本的 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/ie">IE</a></span> 渲染差异。建议设置默认渲染模式如下：</p>
<pre>&lt;meta http-equiv="X-UA-Compatible" content="<span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/ie">IE</a></span>=Edge"&gt;//标准 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/ie">IE</a></span> 模式</pre>
<p>那咋整呢？咋整咋整咋整？没事，下面还有更绝的。</p>
<h3>通过条件判断插入指定类</h3>
<p>既然可以用条件判断，那么直接为不同 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/ie">IE</a></span> 版本输出单独用于设定样式的钩子类好了。直接上代码：</p>
<pre>&lt;!--[if !<span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/ie">IE</a></span>]&gt;&lt;html&gt;&lt;![endif]--&gt; // 非 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/ie">IE</a></span> 浏览器的情况，不添加任何作用类
&lt;!--[if <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/ie">IE</a></span> 6]&gt;&lt;html class="ie6"&gt;&lt;![endif]--&gt;
&lt;!--[if <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/ie">IE</a></span> 7]&gt;&lt;html class="ie7"&gt;&lt;![endif]--&gt;
&lt;!--[if <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/ie">IE</a></span> 8]&gt;&lt;html class="ie8"&gt;&lt;![endif]--&gt;</pre>
<p>如果要是 IE9、IE10 再想出现什么神奇的行为艺术的话，继续添加指定作用类就行咯。并且你的样式表也会变得异常干净、整洁、美观：</p>
<pre>.selector { color: black; }
.ie8 .selector { color: green; } /* <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/ie8/">IE8</a></span> */
.ie7 .selector { color: blue; } /* IE7 */
.ie6 .selector { color: red; } /* IE6 */</pre>
<p>当然，标准模式的 <code>X-UA-Compatible</code> 声明还是必须的，以防页面被强制按照低版本的 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/ie">IE</a></span> 来渲染。</p>
<p>关于条件注释的参考资料：<a href="http://msdn.microsoft.com/en-us/library/ms537512.aspx" target="_blank">http://msdn.microsoft.com/en-us/library/ms537512.aspx</a></p>
<h3  class="related_post_title">推荐阅读</h3><ul class="related_post"><li><a href="http://www.mangguo.org/css-hacks-for-ie-ie-can-be-perfect/" title="CSS Hacks for IE，IE 也可以很完美">CSS Hacks for IE，IE 也可以很完美</a> (7)</li><li><a href="http://www.mangguo.org/after-abandoning-css-hacks-browser-compatible-solution/" title="抛弃 CSS Hacks 后的浏览器兼容方案">抛弃 CSS Hacks 后的浏览器兼容方案</a> (10)</li><li><a href="http://www.mangguo.org/compatible-with-different-browser-css-hack/" title="兼容不同浏览器的 CSS Hack 写法">兼容不同浏览器的 CSS Hack 写法</a> (9)</li><li><a href="http://www.mangguo.org/pure-english-pure-css-to-force-off-line-digital/" title="纯英文纯数字 CSS 强制折行">纯英文纯数字 CSS 强制折行</a> (7)</li><li><a href="http://www.mangguo.org/let-ben-collapse-css-chrome/" title="让 Chrome 崩溃的 CSS 代码">让 Chrome 崩溃的 CSS 代码</a> (17)</li><li><a href="http://www.mangguo.org/custom-input-file-style-ie-compatible/" title="自定义文件上传控件样式（兼容 IE6）">自定义文件上传控件样式（兼容 IE6）</a> (8)</li><li><a href="http://www.mangguo.org/10-useful-tools-to-simplify-css3-development/" title="12 款简化 CSS3 开发的实用工具">12 款简化 CSS3 开发的实用工具</a> (12)</li><li><a href="http://www.mangguo.org/ie6-magic-css-font-bug/" title="IE6 下的神奇 CSS 字体 bug">IE6 下的神奇 CSS 字体 bug</a> (25)</li></ul><hr />
© 2010 芒果小站 | <a href="http://www.mangguo.org/css-ninja-safe-css-hacks/">固定链接</a> | <a href="http://www.mangguo.org/css-ninja-safe-css-hacks/#comments">32 条评论</a> | 标签 <a href="http://www.mangguo.org/tag/css/" rel="tag">CSS</a>, <a href="http://www.mangguo.org/tag/css-hacks/" rel="tag">CSS Hacks</a>, <a href="http://www.mangguo.org/tag/x-ua-compatible/" rel="tag">X-UA-Compatible</a>]]></content:encoded>
			<wfw:commentRss>http://www.mangguo.org/css-ninja-safe-css-hacks/feed/</wfw:commentRss>
		<slash:comments>32</slash:comments>
		</item>
		<item>
		<title>12 款简化 CSS3 开发的实用工具</title>
		<link>http://www.mangguo.org/10-useful-tools-to-simplify-css3-development/</link>
		<comments>http://www.mangguo.org/10-useful-tools-to-simplify-css3-development/#comments</comments>
		<pubDate>Mon, 13 Jun 2011 04:00:49 +0000</pubDate>
		<dc:creator>芒果</dc:creator>
				<category><![CDATA[前端]]></category>
		<category><![CDATA[CatsWhoCode]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[CSS3]]></category>

		<guid isPermaLink="false">http://www.mangguo.org/?p=5694</guid>
		<description><![CDATA[CSS3 Pie 对于 IE6/7/8几乎不支持任何 CSS3 特性，我想大多数人都不会惊讶。不幸的是，有些客户可能需要您创建一个网站，能使得 IE 浏览器下看起来和高级浏览器中效果一致。这就是 CSS3 Pie 施展超能力的时候了：它允许你在 IE 下也能使用很多 CSS3 炫酷功能。 猛击这里访问 CSS3 Pie CSS3 Builder 有了这个工具，你可以设计出和 Photoshop 效果完全一致的 CSS3 效果。这绝对是一个省时省力的伟大工具。 猛击这里访问 CSS3 Builder CSS3 Drop shadow generator 这个工具和 CSS3 Builder 非常相似，只要使用滑杆来直观地设计自己的阴影效果。CSS 代码会自动创建，将其粘贴到你的 CSS 文件即可！ 猛击这里访问 CSS3 Drop shadow generator Cascader 此工具不单为 CSS3 设计，但它却非常有用。Cascader 让你输入一些 HTML 代码片段，它会侦测到所有的内联 CSS，把它从 HTML 中分离出来并自动关联 CSS [...]]]></description>
			<content:encoded><![CDATA[<h3><span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css3">CSS3</a></span> Pie</h3>
<p><img src="http://www.mangguo.org/wp-content/uploads/2011/06/css3-tools-1.png" alt="" width="650" height="416" /><br />
对于 IE6/7/8几乎不支持任何 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css3">CSS3</a></span> 特性，我想大多数人都不会惊讶。不幸的是，有些客户可能需要您创建一个网站，能使得 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/ie">IE</a></span> 浏览器下看起来和高级浏览器中效果一致。这就是 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css3">CSS3</a></span> Pie 施展超能力的时候了：它允许你在 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/ie">IE</a></span> 下也能使用很多 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css3">CSS3</a></span> 炫酷功能。<br />
<strong>猛击这里访问 <a href="http://css3pie.com/" target="_blank">CSS3 Pie</a></strong></p>
<h3><span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css3">CSS3</a></span> Builder</h3>
<p><img src="http://www.mangguo.org/wp-content/uploads/2011/06/css3-tools-11.png" alt="" width="650" height="416" /><br />
有了这个工具，你可以设计出和 Photoshop 效果完全一致的 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css3">CSS3</a></span> 效果。这绝对是一个省时省力的伟大工具。<br />
<strong>猛击这里访问 <a href="http://www.layerstyles.org/builder.html" target="_blank">CSS3 Builder</a></strong></p>
<h3><span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css3">CSS3</a></span> Drop shadow generator</h3>
<p><img src="http://www.mangguo.org/wp-content/uploads/2011/06/css3-tools-12.png" alt="" width="650" height="416" /><br />
这个工具和 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css3">CSS3</a></span> Builder 非常相似，只要使用滑杆来直观地设计自己的阴影效果。<span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css">CSS</a></span> 代码会自动创建，将其粘贴到你的 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css">CSS</a></span> 文件即可！<br />
<strong>猛击这里访问 <a href="http://www.wordpressthemeshock.com/css-drop-shadow/" target="_blank">CSS3 Drop shadow generator</a></strong></p>
<h3>Cascader</h3>
<p><img src="http://www.mangguo.org/wp-content/uploads/2011/06/css3-tools-2.png" alt="" width="650" height="416" /><br />
此工具不单为 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css3">CSS3</a></span> 设计，但它却非常有用。Cascader 让你输入一些 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/html">HTML</a></span> 代码片段，它会侦测到所有的内联 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css">CSS</a></span>，把它从 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/html">HTML</a></span> 中分离出来并自动关联 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css">CSS</a></span> 选择器。<br />
<strong>猛击这里访问 <a href="http://www.cascader.co/" target="_blank">Cascader</a></strong></p>
<h3>Border Radius.com</h3>
<p><img src="http://www.mangguo.org/wp-content/uploads/2011/06/css3-tools-3.png" alt="" width="650" height="416" /><br />
<code>border-radius</code> 是最流行的 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css3">CSS3</a></span> 属性之一。那些切过各种圆角图片的设计师和工程师们当然知道为什么要有这个属性。此工具允许您快速创建一个容器，并得到相应的 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css3">CSS3</a></span> 代码。<br />
<strong>猛击这里访问 <a href="http://border-radius.com/" target="_blank">Border Radius.com</a></strong></p>
<h3>Button Maker</h3>
<p><img src="http://www.mangguo.org/wp-content/uploads/2011/06/css3-tools-4.png" alt="" width="650" height="416" /><br />
<span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css3">CSS3</a></span> 使得创建漂亮的按钮更加容易。利用这个工具，<span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css3">CSS3</a></span> 按钮设计就非常简单啦：只要选择颜色，调整半径，并获得代码，随时可以粘贴到你的 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css">CSS</a></span> 文件。<br />
<strong>猛击这里访问 <a href="http://css-tricks.com/examples/ButtonMaker/" target="_blank">Button Maker</a></strong></p>
<h3><span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css3">CSS3</a></span> Generator</h3>
<p><img src="http://www.mangguo.org/wp-content/uploads/2011/06/css3-tools-5.png" alt="" width="650" height="416" /><br />
需要 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css3">CSS3</a></span> 特性的相关帮助？这款工具可以帮助您创建最流行的 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css3">CSS3</a></span> 属性声明：@font-face、RGBA、text-shadow、border-radius 等等。<br />
<strong>猛击这里访问 <a href="http://css3generator.com/" target="_blank">CSS3 Generator</a></strong></p>
<h3>Modernizr</h3>
<p><img src="http://www.mangguo.org/wp-content/uploads/2011/06/css3-tools-6.png" alt="" width="650" height="416" /><br />
Modernizr 是一个小脚本，用于检测客户端对 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css3">CSS3</a></span> 的支持情况。它会在跟元素 &amp;lt;html&amp;gt; 上添加一个指定 class，让你可以针对特定的浏览器实现特定的样式。例如，如果浏览器不支持多背景，<code>no-multiplebgs</code> 类将被添加到 &amp;lt;html&amp;gt; 元素。这将容易地实现优雅降级。<br />
<strong>猛击这里访问 <a href="http://www.modernizr.com/" target="_blank">Modernizr</a></strong></p>
<h3><span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/html5">HTML5</a></span> &amp; <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css3">CSS3</a></span> Support</h3>
<p><img src="http://www.mangguo.org/wp-content/uploads/2011/06/css3-tools-7.png" alt="" width="650" height="416" /><br />
要知道 Internet Explorer 8 是否支持 text &#8211; shadow 属性？只要有这份非常有用的图表，来告诉你主要浏览器对 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css3">CSS3</a></span> 的支持。这绝对是一个必须收藏的网站！<br />
<strong>猛击这里访问 <a href="http://www.findmebyip.com/litmus/#target-selector" target="_blank">HTML5 &amp; CSS3 Support</a></strong></p>
<h3><span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css3">CSS3</a></span> Gradient Generator</h3>
<p><img src="http://www.mangguo.org/wp-content/uploads/2011/06/css3-tools-8.png" alt="" /><br />
你大概可以猜到，这个工具是一个渐变生成器。只需通过色盘选取颜色，并在预览区预览，拷贝这份调整完成的代码，这是这么简单！<br />
<strong>猛击这里访问 <a href="http://gradients.glrzad.com/" target="_blank">CSS3 Gradient Generator</a></strong></p>
<h3><span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css3">CSS3</a></span> Please</h3>
<p><img src="http://www.mangguo.org/wp-content/uploads/2011/06/css3-tools-9.png" alt="" width="650" height="416" /><br />
<span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css3">CSS3</a></span> Please 是一个非常有用的站点，允许你复制和粘贴最通用的 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css">CSS</a></span> 声明。提供了一个预览区域，你可以在线调试你的代码。这个工具<a href="http://www.mangguo.org" target="_blank">芒果小站</a>之前有介绍过哦：<a href="http://www.mangguo.org/css3-please-instant-result/">CSS3 Please! CSS3 即时预览体验</a><br />
<strong>猛击这里访问 <a href="http://css3please.com/" target="_blank">CSS3 Please</a></strong></p>
<h3><span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css3">CSS3</a></span> Cheat Sheet</h3>
<p><img src="http://www.mangguo.org/wp-content/uploads/2011/06/css3-tools-10.png" alt="" width="650" height="416" /><br />
当你编码的时候，参考手册是快速记忆语法特性的最有效方式，<span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/smashing-magazine">Smashing Magazine</a></span> 创造了这个 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css3">CSS3</a></span> 参考表，你可以下载和打印。<br />
<strong>猛击这里访问 <a href="http://www.smashingmagazine.com/2009/07/13/css-3-cheat-sheet-pdf/" target="_blank">CSS3 Cheat Sheet</a></strong></p>
<p>英文原稿：<a href="http://www.catswhocode.com/blog/10-useful-tools-to-simplify-css3-development" target="_blank">10+ useful tools to simplify CSS3 development | CatsWhoCode</a><br />
翻译整理：<a href="http://www.mangguo.org/10-useful-tools-to-simplify-css3-development/" target="_blank">12 款简化 CSS3 开发的实用工具  | 芒果小站</a></p>
<h3  class="related_post_title">推荐阅读</h3><ul class="related_post"><li><a href="http://www.mangguo.org/how-to-use-css3-pseudo-classes/" title="如何使用 CSS3 伪类">如何使用 CSS3 伪类</a> (7)</li><li><a href="http://www.mangguo.org/css3-media-queries/" title="CSS3 Media Queries，媒介设备查询">CSS3 Media Queries，媒介设备查询</a> (9)</li><li><a href="http://www.mangguo.org/pure-css-text-gradients-effect/" title="纯 CSS 实现文本渐变效果">纯 CSS 实现文本渐变效果</a> (9)</li><li><a href="http://www.mangguo.org/13-pure-css-techniques-for-creating-javascript-like-interactions/" title="13+ 模拟 JavaScript 交互效果的纯 CSS 技术">13+ 模拟 JavaScript 交互效果的纯 CSS 技术</a> (4)</li><li><a href="http://www.mangguo.org/css-21-and-css-3-help-cheat-sheets/" title="CSS2.1 和 CSS3 帮助文档及参考手册">CSS2.1 和 CSS3 帮助文档及参考手册</a> (0)</li><li><a href="http://www.mangguo.org/beautiful-css3-search-form/" title="漂亮的 CSS3 搜索表单设计">漂亮的 CSS3 搜索表单设计</a> (3)</li><li><a href="http://www.mangguo.org/12-excellent-css3-button-and-menu-techniques/" title="12 个优秀的 CSS3 按钮和菜单技巧">12 个优秀的 CSS3 按钮和菜单技巧</a> (0)</li><li><a href="http://www.mangguo.org/css3-please-instant-result/" title="CSS3 Please! CSS3 即时预览体验">CSS3 Please! CSS3 即时预览体验</a> (3)</li></ul><hr />
© 2010 芒果小站 | <a href="http://www.mangguo.org/10-useful-tools-to-simplify-css3-development/">固定链接</a> | <a href="http://www.mangguo.org/10-useful-tools-to-simplify-css3-development/#comments">12 条评论</a> | 标签 <a href="http://www.mangguo.org/tag/catswhocode/" rel="tag">CatsWhoCode</a>, <a href="http://www.mangguo.org/tag/css/" rel="tag">CSS</a>, <a href="http://www.mangguo.org/tag/css3/" rel="tag">CSS3</a>]]></content:encoded>
			<wfw:commentRss>http://www.mangguo.org/10-useful-tools-to-simplify-css3-development/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>IE6 下的神奇 CSS 字体 bug</title>
		<link>http://www.mangguo.org/ie6-magic-css-font-bug/</link>
		<comments>http://www.mangguo.org/ie6-magic-css-font-bug/#comments</comments>
		<pubDate>Wed, 18 May 2011 14:21:05 +0000</pubDate>
		<dc:creator>芒果</dc:creator>
				<category><![CDATA[前端]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[IE6]]></category>

		<guid isPermaLink="false">http://www.mangguo.org/?p=5646</guid>
		<description><![CDATA[一直用的 Aptana 当编辑器，这玩意儿有一个很强大的代码格式化功能。你看： 不过格式化后就出问题了，注意格式化后 font 属性的写法。问题出在 font 属性的合并写法，12px 和 1.5 之间除斜杠之外的空格，IE6 下会导致后面设置的 arial 字体不生效。也就是直接宋体了。诶，比尔盖茨啊，说你什么好呢~ 推荐阅读自定义文件上传控件样式（兼容 IE6） (8)IE6 动态创建 iframe 无法显示的 bug (7)抛弃 CSS Hacks 后的浏览器兼容方案 (10)纯英文纯数字 CSS 强制折行 (7)让 Chrome 崩溃的 CSS 代码 (17)CSS 忍者：安全的 CSS hacks 秘籍 (32)12 款简化 CSS3 开发的实用工具 (12)如何使用 CSS3 伪类 (7) © 2010 芒果小站 &#124; 固定链接 &#124; 25 条评论 &#124; [...]]]></description>
			<content:encoded><![CDATA[<p>一直用的 Aptana 当编辑器，这玩意儿有一个很强大的代码格式化功能。你看：</p>
<p><img class="alignnone size-full wp-image-5647" title="20110518221552" src="http://www.mangguo.org/wp-content/uploads/2011/05/20110518221552.png" alt="" width="500" height="327" /></p>
<p>不过格式化后就出问题了，注意格式化后 font 属性的写法。问题出在 font 属性的合并写法，12px 和 1.5 之间除斜杠之外的空格，IE6 下会导致后面设置的 arial 字体不生效。也就是直接宋体了。诶，比尔盖茨啊，说你什么好呢~</p>
<h3  class="related_post_title">推荐阅读</h3><ul class="related_post"><li><a href="http://www.mangguo.org/custom-input-file-style-ie-compatible/" title="自定义文件上传控件样式（兼容 IE6）">自定义文件上传控件样式（兼容 IE6）</a> (8)</li><li><a href="http://www.mangguo.org/ie6-can-not-display-a-dynamically-created-iframe-bug/" title="IE6 动态创建 iframe 无法显示的 bug">IE6 动态创建 iframe 无法显示的 bug</a> (7)</li><li><a href="http://www.mangguo.org/after-abandoning-css-hacks-browser-compatible-solution/" title="抛弃 CSS Hacks 后的浏览器兼容方案">抛弃 CSS Hacks 后的浏览器兼容方案</a> (10)</li><li><a href="http://www.mangguo.org/pure-english-pure-css-to-force-off-line-digital/" title="纯英文纯数字 CSS 强制折行">纯英文纯数字 CSS 强制折行</a> (7)</li><li><a href="http://www.mangguo.org/let-ben-collapse-css-chrome/" title="让 Chrome 崩溃的 CSS 代码">让 Chrome 崩溃的 CSS 代码</a> (17)</li><li><a href="http://www.mangguo.org/css-ninja-safe-css-hacks/" title="CSS 忍者：安全的 CSS hacks 秘籍">CSS 忍者：安全的 CSS hacks 秘籍</a> (32)</li><li><a href="http://www.mangguo.org/10-useful-tools-to-simplify-css3-development/" title="12 款简化 CSS3 开发的实用工具">12 款简化 CSS3 开发的实用工具</a> (12)</li><li><a href="http://www.mangguo.org/how-to-use-css3-pseudo-classes/" title="如何使用 CSS3 伪类">如何使用 CSS3 伪类</a> (7)</li></ul><hr />
© 2010 芒果小站 | <a href="http://www.mangguo.org/ie6-magic-css-font-bug/">固定链接</a> | <a href="http://www.mangguo.org/ie6-magic-css-font-bug/#comments">25 条评论</a> | 标签 <a href="http://www.mangguo.org/tag/css/" rel="tag">CSS</a>, <a href="http://www.mangguo.org/tag/ie6/" rel="tag">IE6</a>]]></content:encoded>
			<wfw:commentRss>http://www.mangguo.org/ie6-magic-css-font-bug/feed/</wfw:commentRss>
		<slash:comments>25</slash:comments>
		</item>
		<item>
		<title>如何使用 CSS3 伪类</title>
		<link>http://www.mangguo.org/how-to-use-css3-pseudo-classes/</link>
		<comments>http://www.mangguo.org/how-to-use-css3-pseudo-classes/#comments</comments>
		<pubDate>Thu, 28 Apr 2011 16:09:48 +0000</pubDate>
		<dc:creator>芒果</dc:creator>
				<category><![CDATA[前端]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[Smashing Magazine]]></category>

		<guid isPermaLink="false">http://www.mangguo.org/?p=5571</guid>
		<description><![CDATA[CSS3 是个好东西，但也很容易被她的变形（transform）和动画（其中许多特性因浏览器厂商而异）特性所迷惑，因而忘了那些已经被添加到标准规范中的最为基本的选择器。许多强大的新伪类选择器（最新的 W3C 规范中列出了 16 条）使得我们能够在新的标准范围内使用元素选择器。 在探讨这些新的 CSS3 伪类之前，先简要回顾追溯一下这些在 Web 应用中常常被误解的 CSS 选择器。 伪类简史 在 1996 年，当 CSS1 的规范完成后，一些伪类选择器已被囊括在内，其中许多你几乎每天都在使用。例如： :link :visited :hover :active 这些状态都可以被应用到某个元素，通常是以 “a:伪类名”的形式。令人难以置信的是，在 W3C 于 1997 年 12 月发布 HTML4 规范之前，这些伪类已经被极为广泛地使用了。 CSS2 来了 于是 CSS2 来了。其建议规范在两年之后的 1998 年 5 月发布。随之令人兴奋的是添加了 :first-child 和 :lang() 新伪类。 :lang 有许多种表示文档语言类型的方法，如果你使用 HTML5，很可能会直接在 DOCTYPE 声明之后放置 语句（指定本地语种）。当然，你也可以使用 :lang(en) 伪类来修饰页面元素，对于语言动态变化的情况，这将非常有用。 :first-child [...]]]></description>
			<content:encoded><![CDATA[<p><span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css3">CSS3</a></span> 是个好东西，但也很容易被她的变形（transform）和动画（其中许多特性因浏览器厂商而异）特性所迷惑，因而忘了那些已经被添加到标准规范中的最为基本的选择器。许多强大的新伪类选择器（<a href="http://www.w3.org/TR/css3-selectors/" target="_blank">最新的 W3C 规范</a>中列出了 16 条）使得我们能够在新的标准范围内使用元素选择器。</p>
<p><img class="alignnone size-full wp-image-5573" title="css3" src="http://www.mangguo.org/wp-content/uploads/2011/04/css3.jpg" alt="" width="500" height="350" /></p>
<p>在探讨这些新的 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css3">CSS3</a></span> 伪类之前，先简要回顾追溯一下这些在 Web 应用中常常被误解的 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css">CSS</a></span> 选择器。</p>
<h3>伪类简史</h3>
<p>在 1996 年，当 CSS1 的规范完成后，一些伪类选择器已被囊括在内，其中许多你几乎每天都在使用。例如：</p>
<ul>
<li><code>:link</code></li>
<li><code>:visited</code></li>
<li><code>:hover</code></li>
<li><code>:active</code></li>
</ul>
<p>这些状态都可以被应用到某个元素，通常是以 <code>“a:伪类名”</code>的形式。令人难以置信的是，在 W3C 于 1997 年 12 月发布 <a href="http://www.w3.org/TR/html401/" target="_blank">HTML4 规范</a>之前，这些伪类已经被极为广泛地使用了。</p>
<h4>CSS2 来了</h4>
<p>于是 <a href="http://www.w3.org/TR/CSS2/">CSS2</a> 来了。其建议规范在两年之后的 1998 年 5 月发布。随之令人兴奋的是添加了 <code>:first-child</code> 和 <code>:lang()</code> 新伪类。</p>
<p><code>:lang</code></p>
<p>有许多种表示文档语言类型的方法，如果你使用 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/html5">HTML5</a></span>，很可能会直接在 DOCTYPE 声明之后放置  语句（指定本地语种）。当然，你也可以使用 <code>:lang(en)</code> 伪类来修饰页面元素，对于语言动态变化的情况，这将非常有用。</p>
<p><code>:first-child</code></p>
<p>您可能已经在文档中使用 <code>:first-child</code> 属性。它通常用于添加或删除列表中第一个元素的上边框。奇怪的是，却没有 <code>:last-child</code> 这样的伪类与之对应。于是不得等到 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css3">CSS3</a></span> 规范的对这两个兄弟伪类的支持。</p>
<h4>为何使用伪类？</h4>
<p>伪类如此实用的原因在于它们允许动态地设置内容样式。比如上面的 <code>&lt;a&gt;</code> 例子，我们能够描述当用户与链接进行交互时，链接该如何呈现样式。正如我们看到的，新的伪类允许我们根据元素在文档中的位置或状态，动态地设置其样式。</p>
<p>16 个全新伪类已经成为 W3C 的 <a href="http://www.w3.org/TR/css3-selectors/" target="_blank">CSS 建议</a>的一部分，它们被分成四组：结构伪类、UI 元素的状态伪类、一个目标（target）伪类和一个否定伪类。</p>
<p><img class="alignnone size-full wp-image-5575" title="w3c" src="http://www.mangguo.org/wp-content/uploads/2011/04/w3c.jpg" alt="" width="550" height="283" /></p>
<p><em>W3C 是 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css">CSS</a></span> 之家</em></p>
<p>现在我们一起探究看看如何使用这 16 个新伪类选择器。我会使用和 W3C 相同的标识符来命名 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css">CSS</a></span> 类，比如 <code>E</code> 代表元素（element），<code>n</code> 表示数字（number），<code>s</code> 表示选择器（selector）。</p>
<h4>示例代码</h4>
<p>大部分新选择器都会给出参考示例，以便直观地看到代码呈现效果。这里会涉及一张适用于 iPhone 并且使用了 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css3">CSS3</a></span> 伪类的表单。</p>
<p>请注意，这张表单中大部分样式可以使用 id 和类（class）选择器设定。即便如此，仍然可以使用新伪类针为这个表单锦上添花。<a href="http://richardshepherd.com/smashing/pseudo/?style=0">点击这里查看页面示例</a></p>
<pre>&lt;form&gt;
	&lt;hgroup&gt;
		&lt;h1&gt;Awesome Widgets&lt;/h1&gt;
		&lt;h2&gt;All the cool kids have got one&lt;/h2&gt;
	&lt;/hgroup&gt;
	&lt;fieldset id="email"&gt;
		&lt;legend&gt;Where do we send your receipt?&lt;/legend&gt;
		&lt;label for="email"&gt;Email Address&lt;/label&gt;
		&lt;input type="email" name="email" placeholder="Email Address" /&gt;
	&lt;/fieldset&gt;
	&lt;fieldset id="details"&gt;
		&lt;legend&gt;Personal Details&lt;/legend&gt;
		&lt;select name="title" id="field_title"&gt;
			&lt;option value="" selected="selected"&gt;Title&lt;/option&gt;
			&lt;option value="Mr"&gt;Mr&lt;/option&gt;
			&lt;option value="Mrs"&gt;Mrs&lt;/option&gt;
			&lt;option value="Miss"&gt;Miss&lt;/option&gt;
		&lt;/select&gt;
		&lt;label for="firstname"&gt;First Name&lt;/label&gt;
		&lt;input name="firstname" placeholder="First Name" /&gt;
		&lt;label for="initial"&gt;Initial&lt;/label&gt;
		&lt;input name="initial" placeholder="Initial" size="3" /&gt;
		&lt;label for="surname"&gt;Surname&lt;/label&gt;
		&lt;input name="surname" placeholder="Surname" /&gt;
	&lt;/fieldset&gt;
	&lt;fieldset id="payment"&gt;
		&lt;legend&gt;Payment Details&lt;/legend&gt;
		&lt;label for="cardname"&gt;Name on card&lt;/label&gt;
		&lt;input name="cardname" placeholder="Name on card" /&gt;
		&lt;label for"cardnumber"&gt;Card number&lt;/label&gt;
		&lt;input name="cardnumber" placeholder="Card number" /&gt;
		&lt;select name="cardType" id="field_cardType"&gt;
			&lt;option value="" selected="selected"&gt;Select Card Type&lt;/option&gt;
			&lt;option value="1"&gt;Visa&lt;/option&gt;
			&lt;option value="2"&gt;American Express&lt;/option&gt;
			&lt;option value="3"&gt;MasterCard&lt;/option&gt;
		&lt;/select&gt;
		&lt;label for="cardExpiryMonth"&gt;Expiry Date&lt;/label&gt;
		&lt;select id="field_cardExpiryMonth" name="cardExpiryMonth"&gt;
			&lt;option selected="selected" value="mm"&gt;MM&lt;/option&gt;
			&lt;option value="01"&gt;01&lt;/option&gt;
			&lt;option value="02"&gt;02&lt;/option&gt;
			&lt;option value="03"&gt;03&lt;/option&gt;
			&lt;option value="04"&gt;04&lt;/option&gt;
			&lt;option value="05"&gt;05&lt;/option&gt;
			&lt;option value="06"&gt;06&lt;/option&gt;
			&lt;option value="07"&gt;07&lt;/option&gt;
			&lt;option value="08"&gt;08&lt;/option&gt;
			&lt;option value="09"&gt;09&lt;/option&gt;
			&lt;option value="10"&gt;10&lt;/option&gt;
			&lt;option value="11"&gt;11&lt;/option&gt;
			&lt;option value="12"&gt;12&lt;/option&gt;
		&lt;/select&gt;
		/
		&lt;select id="field_cardExpiryYear" name="cardExpiryYear"&gt;
			&lt;option value="yyyy"&gt;YYYY&lt;/option&gt;
			&lt;option value="2011"&gt;11&lt;/option&gt;
			&lt;option value="2012"&gt;12&lt;/option&gt;
			&lt;option value="2013"&gt;13&lt;/option&gt;
			&lt;option value="2014"&gt;14&lt;/option&gt;
			&lt;option value="2015"&gt;15&lt;/option&gt;
			&lt;option value="2016"&gt;16&lt;/option&gt;
			&lt;option value="2017"&gt;17&lt;/option&gt;
			&lt;option value="2018"&gt;18&lt;/option&gt;
			&lt;option value="2019"&gt;19&lt;/option&gt;
		&lt;/select&gt;
		&lt;label for"securitycode"&gt;Security code&lt;/label&gt;
		&lt;input name="securitycode" type="number" placeholder="Security code" size="3" /&gt;
		&lt;p&gt;Would you like Insurance?&lt;/p&gt;
		&lt;input type="radio" name="Insurance" id="insuranceYes" /&gt;
		&lt;label for="insuranceYes"&gt;Yes Please!&lt;/label&gt;
		&lt;input type="radio" name="Insurance" id="insuranceNo" /&gt;
		&lt;label for="insuranceNo"&gt;No thanks&lt;/label&gt;
	&lt;/fieldset&gt;
	&lt;fieldset id="submit"&gt;
		&lt;button type="submit" name="Submit" disabled&gt;Here I come!&lt;/button&gt;
	&lt;/fieldset&gt;
&lt;/form&gt;</pre>
<p><img class="alignnone size-full wp-image-5580" title="before-after" src="http://www.mangguo.org/wp-content/uploads/2011/04/before-after.jpg" alt="" width="550" height="413" /></p>
<p><em>使用前和使用后的表单样式</em></p>
<h3>1. 结构伪类</h3>
<p>根据 W3C 规范，结构伪类用来做下面的事：</p>
<blockquote><p>&#8230;允许选择位于文档树的额外信息，但不能用其他简单的选择器或组合选择器代替。</p></blockquote>
<p>这意味着我们拥有了能根据选择器在文档中的所处位置，动态选择内容的选择器。那么让我们从文档本身开始，即 <code>:root</code> 伪类。</p>
<p><img class="alignnone size-full wp-image-5584" title="selectors-level-screenshot" src="http://www.mangguo.org/wp-content/uploads/2011/04/selectors-level-screenshot.jpg" alt="" width="501" height="300" /></p>
<p><em>W3C 上的 Level 3 选择器</em></p>
<h4>E:root</h4>
<p><code>:root</code> 伪类选择页面的根元素。十有八九根节点是 <code>&lt;html&gt;</code> 元素，例如：</p>
<pre>:root { background-color: #fcfcfc; }</pre>
<p>除了给 <code>&lt;html&gt;</code> 元素设定样式，这个伪类基本没什么价值，可能也就描述性稍强些：</p>
<pre>html { background-color: #fcfcfc; }</pre>
<p>回到那张 iPhone 表单，为其添加基本的文本和背景样式：</p>
<pre>:root {
color: #fff;
text-shadow: 0 -1px 0 rgba(0,0,0,0.8);
background: url(…/images/background.png) no-repeat #282826; }</pre>
<h4>E:nth-child(n)</h4>
<p><code>:nth-child()</code> 选择器可能需要一些实践才能完全理解。最简单的记忆方法是使用关键词“奇数或偶数”（<code>odd</code> 或 <code>even</code>），因为在显示由行列组成的数据表格时，这将非常有用。例如，我们可以使用下列内容：</p>
<pre>ul li:nth-child(odd) {
background-color: #666;
color: #fff; }</pre>
<p>这将使无序列表中的每个奇数行高亮显示。您可能会发现在表格中使用这种技术非常方便。例如：</p>
<pre>table tr:nth-child(even) { … }</pre>
<p><code>:nth-child</code> 选择器更明确灵活，因此，你可以选择列表的第三个元素，像这样：</p>
<pre>li:nth-child(3) { … }</pre>
<p>请注意 n 并不是从零开始，第一个元素是 <code>:nth-child(1)</code>，第二个是 <code>:nth-child(2)</code>，以此类推。</p>
<p>我们也可以利用一些简单的代数，使它变得更加精彩。考虑以下代码：</p>
<pre>li:nth-child(2n) { … }</pre>
<p>当我们以这种方式使用 <code>n</code>，它代表对所有正整数，直到文档耗尽可选择的元素。在这种情况下，它会选择下列列表项：</p>
<ul>
<li>未选择元素 (2 × 0)</li>
<li>第 2 个元素 (2 × 1)</li>
<li>第 4 个元素 (2 × 2)</li>
<li>第 6 个元素 (2 × 3)</li>
<li>第 8 个元素 (2 × 4)</li>
<li>等等&#8230;</li>
</ul>
<p>这实际上和使用 <code>:nth-child(even)</code> 完全一致。因此我们混入点东西：</p>
<pre>li:nth-child(5n) { … }</pre>
<p>对应选择的节点元素：</p>
<ul>
<li>未选择元素 (5 × 0)</li>
<li>第 5 个元素 (5 × 1)</li>
<li>第 10 个元素 (5 × 2)</li>
<li>第 15 个元素 (5 × 3)</li>
<li>第 20 个元素 (5 × 4)</li>
<li>等等&#8230;</li>
</ul>
<p>对于长列表或表格而言，也许这将很有用，也可能完全无用。我们还可以在这一公式中执行数字加减法：</p>
<pre>li:nth-child(4n + 1) { … }</pre>
<p>对应选择的节点元素：</p>
<ul>
<li>第 1 个元素 ((4 × 0) + 1)</li>
<li>第 5 个元素 ((4 × 1) + 1)</li>
<li>第 9 个元素 ((4 × 2) + 1)</li>
<li>第 13 个元素 ((4 × 3) + 1)</li>
<li>第 17 个元素 ((4 × 4) + 1)</li>
<li>等等&#8230;</li>
</ul>
<p>这里 <a href="http://reference.sitepoint.com/css/understandingnthchildexpressions" target="_blank">SitePoint 指出了一个怪癖的功能</a>，如果你将 <code>n</code> 设置为负值，则可以像这样选择前 <code>x</code> 项。</p>
<pre>li:nth-child(-n + x) { … }</pre>
<p>如果你期望选择前 5 项，可以这样写：</p>
<pre>li:nth-child(-n + 5) { … }</pre>
<p>对应选择的节点元素：</p>
<ul>
<li>第 5 个元素 (-0 + 5)</li>
<li>第 4 个元素 (-1 + 5)</li>
<li>第 3 个元素 (-2 + 5)</li>
<li>第 2 个元素 (-3 + 5)</li>
<li>第 1 个元素 (-4 + 5)</li>
<li>未选择元素 (-5 + 5)</li>
<li>未选择元素 (-6 + 5)</li>
<li>等等&#8230;</li>
</ul>
<p>如果你想要根据热门程度来列数据条目，并予以突出显示，也就是说，前十项可能是很有用的。</p>
<p><a href="http://webdesignandsuch.com/add-zebra-striping-to-a-table-with-css3/" target="_blank">WebDesign &amp; Such</a> 创建了 <a href="http://webdesignandsuch.com/posts/zebra-striping/index.html" target="_blank">斑马样式示例</a>，这应该是一个 <code>:nth-child</code> 的最佳实践。</p>
<p><img class="alignnone size-full wp-image-5585" title="Zebra-Striping-a-Table-with-CSS3" src="http://www.mangguo.org/wp-content/uploads/2011/04/Zebra-Striping-a-Table-with-CSS3.png" alt="" width="500" height="341" /></p>
<p><em>使用 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css3">CSS3</a></span> 设置表格的斑马样式</em></p>
<p>如果没有需要设置样式的表格，那么你可以 <a href="http://webvisionaryawards.com/">Webvisionary Awards</a> 奖已经做的和使用：第n -孩子式交替其网站部分。这里的css：</p>
<p>如果你的表格都不需要设置样式，那么你可以像 <a href="http://webvisionaryawards.com/" target="_blank">Webvisionary Awards</a> 那样，使用 <code>:nth-child</code> 设置网站区块的交替样式。<span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css">CSS</a></span> 代码如下：</p>
<pre>section &gt; section:nth-child(even) {
background:rgba(255,255,255,.1)
url("../images/hr-damaged2.png") 0 bottom no-repeat;
}</pre>
<p>其效果很细微，但它增加了一个陈旧浏览器不支持的细节。</p>
<p><img class="alignnone size-full wp-image-5586" title="WVA-2011" src="http://www.mangguo.org/wp-content/uploads/2011/04/WVA-2011.png" alt="" width="500" height="350" /></p>
<p><em>Webvisionary Awards 上使用的 :nth-child 选择器</em></p>
<p><strong>iPhone 表单案例</strong></p>
<p>继续回到那张 iPhone 表单案例，这个案例中几乎很少地方可以使用 <code>:nth-child</code> 伪类，但值得注意的一点是，我们期望对前三个字段集的 label 标签隐藏，取而代之使用占位符（placeholder）文本替代。<span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css">CSS</a></span> 代码如下：</p>
<pre>form:nth-child(-n+3) label { display: none; }</pre>
<p>这里，我们寻找 <code>&lt;form&gt;</code> 元素的前三个子节点，然后选取 label 元素，可以使用 <code>display:none;</code> 来隐藏。</p>
<h4>E:nth-last-child(n)</h4>
<p>我们并不仅仅满足于 <code>:nth-child()</code> 伪类，W3C 也给我们提供了 <code>:nth-last-child(n)</code> 伪类。它和 <code>:nth-child()</code> 的表现非常相似，除了反向操作，从最后一个向开始计算的功能。</p>
<pre>li:nth-last-child(1) { … }</pre>
<p>上述将选择列表中的最后一个元素，而下面将选择倒数第二个元素：</p>
<pre>li:nth-last-child(2) { … }</pre>
<p>当然，你也可以使用其他规则：</p>
<pre>li:nth-last-child(2n+1) { … }</pre>
<p>但你可能更倾向于使用以下方法选择最后五个列表元素（以上面讨论的逻辑为基础）：</p>
<pre>li:nth-last-child(-n+5) { … }</pre>
<p>如果这仍然没有太大的意义，<a href="http://leaverou.me/">Lea Verou</a> 创造了一个有用的 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css3">CSS3</a></span> 结构伪类选择器测试工具，值得一试。</p>
<p><img class="alignnone size-full wp-image-5587" title="selectors-level-screenshot" src="http://www.mangguo.org/wp-content/uploads/2011/04/selectors-level-screenshot1.jpg" alt="" width="501" height="300" /></p>
<p><em><span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css3">CSS3</a></span> 结构伪类选择器测试工具</em></p>
<p><strong>iPhone 表单案例</strong></p>
<p>在案例中，我们可以使用 <code>:nth-last-child</code> 来为“Card number”字段添加圆角。以下 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css">CSS</a></span> 代码可能过于具体，但至少提供了一个关联伪类的方法：</p>
<pre>fieldset:nth-last-child(2) input:nth-last-of-type(3) {
border-radius: 10px; }</pre>
<p>我们首先抓住倒数第二个字段，选择其中倒数第三个字段（这个案例中，是“Card Number”字段）。然后，我们添加一个圆角效果（<code>border-radius</code>）。</p>
<h4>:nth-of-type(n)</h4>
<p>现在我们将做得更加具体，只为特定类型的元素设定样式。例如，假设你想使得文章第一段具有较大的字体。<span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css">CSS</a></span> 代码如下：</p>
<pre>article p:nth-of-type(1) { font-size: 1.5em; }</pre>
<p>也许你要文章中的部分图片右对齐，另一部分左对齐。则可以使用关键字来控制：</p>
<pre>article img:nth-of-type(odd) { float: right; }
article img:nth-of-type(even) { float: left; }</pre>
<p>通过 <code>:nth-child()</code> 和 <code>:nth-last-child()</code>, 你可以使用代数表达式：</p>
<pre>article p:nth-of-type(2n+2) { … }
article p:nth-of-type(-n+1) { … }</pre>
<p>值得记住的是如果需要获得这些指定的目标元素，使用描述性的 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css">CSS</a></span> 类名可能更合理。</p>
<p>Simon Foster 创建了一个 <a href="http://www.fortherecord.simonfosterdesign.com/" target="_blank">关于 45 张 RPM 唱片集的漂亮图表</a>，并且使用 <code>:nth-of-type</code> 来为某些数据设置样式。以下是他的代码片段，<span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css">CSS</a></span> 中各流派类型都做了区分。</p>
<pre>ul#genre li:nth-of-type(1) {
  width:32.9%;
	background:url(images/orangenoise.jpg);
}
ul#genre li:nth-of-type(2) {
  width:15.2%;
	background:url(images/bluenoise.jpg);
}
ul#genre li:nth-of-type(3) {
  width:13.1%;
	background:url(images/greennoise.jpg);
}</pre>
<p>网站上是这样呈现的：</p>
<p><img class="alignnone size-full wp-image-5588" title="For-The-Record" src="http://www.mangguo.org/wp-content/uploads/2011/04/For-The-Record.png" alt="" width="500" height="350" /></p>
<p>For the Record 中的 :nth-of-type 选择器应用</p>
<p><strong>iPhone 表单案例</strong></p>
<p>比方说，我们希望偶数序号的输入框元素有底部圆角。可以用 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css">CSS</a></span> 实现这一点：</p>
<pre>input:nth-of-type(even) {
border-bottom-left-radius: 10px;
border-bottom-right-radius: 10px; }</pre>
<p>该案例中，我们只期望应用到 “payment” 字段，因为个人信息含有三个文本输入框。处理方法有些棘手，要确保不会选择任何单选框。最终 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css">CSS</a></span> 代码：</p>
<pre>#payment input:nth-of-type(even):not([type=radio]) {
border-bottom-left-radius: 10px;
border-bottom-right-radius: 10px;
border-bottom: 1px solid #999;
margin-bottom: 10px; }</pre>
<p>我们将稍后讲解 <code>:not</code> 伪类。</p>
<h4>:nth-last-of-type(n)</h4>
<p>现在来看看 <code>:nth-last-of-type()</code> 从选定元素的末尾开始，并且倒序工作。</p>
<p>要选择文章的最后一段，可以这样使用：</p>
<pre>article p:nth-last-of-type(1) { … }</pre>
<p>当文章不确定是否以段楼你可能会选择这个选择器来代替 <code>:last-child</code> 伪类。</p>
<h4>:first-of-type 和 :last-of-type</h4>
<p>如果 <code>:nth-of-type()</code> 和 <code>:nth-last-of-type()</code> 对你而言不太灵活，你可以使用更简单的选择器取而代之，例如：</p>
<pre>article p:nth-of-type(1) {
font-size: 1.5em; }</pre>
<p>也可以这么搞：</p>
<pre>article p:first-of-type {
font-size: 1.5em; }</pre>
<p>正如你所期望的那样，使用 <code>:last-of-type</code> 效果完全一样，只不过从后续元素开始查找而已。</p>
<p><strong>iPhone 表单案例</strong></p>
<p>我们可以在这张表单中结合使用 <code>:first-of-type</code> 和 <code>:last-of-type</code>，特别是用于制作圆角。<span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css">CSS</a></span> 如下：</p>
<pre>fieldset input:first-of-type:not([type=radio]) {
border-top-left-radius: 10px;
border-top-right-radius: 10px; }

fieldset input:last-of-type:not([type=radio]) {
border-bottom-left-radius: 10px;
border-bottom-right-radius: 10px; }</pre>
<p>第一行 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css">CSS</a></span> 对所有具有 <code>:first-of-type</code> 伪类的 input 元素增加了圆角上边框，并且所在字段不是单选按钮。第二行对字段内的最后一个 input 元素增加圆角下边框。</p>
<h4>:only-of-type</h4>
<p>还有另一个选择器 <code>:only-of-type()</code>。用于选择那些和它父元素中与自身同类型的元素。例如下面的代码：</p>
<pre>p {
font-size: 18px; }</pre>
<p>以及：</p>
<pre>p:only-of-type {
font-size: 18px; }</pre>
<p>第一个选择器将影响到页面中的所有 p 元素，第二个选择器只会影响它父亲节点下的所有 p 元素。</p>
<p>如果数据库查询只返回一个结果数据，为这个内容设置样式时，用 <code>:only-of-type</code> 可能会很方便。</p>
<p><a href="http://devsnippets.com/article/5-advanced-css-pseudo-class.html" target="_blank">Devsnippet</a> 创建了一个 Demo，说明<a href="http://www.devsnippets.com/img/advanced-css/only-type.html" target="_blank">如何在多个图片中为单个图片定义样式</a>。</p>
<p><img class="alignnone size-full wp-image-5590" title="only-of-type-Pseudo-Class" src="http://www.mangguo.org/wp-content/uploads/2011/04/only-of-type-Pseudo-Class.png" alt="" width="500" height="350" /></p>
<p><em>Devsnippet’s 的 :only-of-type 案例</em></p>
<p><strong>iPhone 表单案例</strong></p>
<p>这张表单中，我们可以确保所有输入字段，无论在顶部还是底部，都有圆角效果，并且是该输入字段的唯一子节点。<span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css">CSS</a></span> 代码如下：</p>
<pre>fieldset input:only-of-type {
border-radius: 10px; }</pre>
<h4>:last-child</h4>
<p>这是一个奇怪的地方：<code>:first-child</code> 是 CSS2 的规范，但 <code>:last-child</code> 却在 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css3">CSS3</a></span> 中才出现。也不需要过多语言解释，<code>:last-child</code> 用于选择父元素下的最后一个子节点。例如：</p>
<pre>li {
border-bottom: 1px solid #ccc; }

li:last-child {
border-bottom: none; }</pre>
<p>这是一个从列表底部消除边框的有用方法，在 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/wordpress">WordPress</a></span> 小工具中可以经常看到这种应用。</p>
<p>Rachel Andrew 在他的 <a href="http://24ways.org/2009/cleaner-code-with-css3-selectors" target="_blank">Cleaner Code With CSS3 Selectors</a> 文章里谈论了 <code>:last-child</code> 和其他 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css">CSS</a></span> 伪类。他告诉我们如何使用这个伪类创建一份良好格式的图片画廊，而无需额外的 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css">CSS</a></span> 类。</p>
<p><img class="alignnone size-full wp-image-5591" title="Screen-shot-2011-03-22-at-21.49.46" src="http://www.mangguo.org/wp-content/uploads/2011/04/Screen-shot-2011-03-22-at-21.49.46.png" alt="" width="500" height="350" /></p>
<p><em>Rachel Andrew 的 :last-child 伪类使用案例</em></p>
<h4>:only-child</h4>
<p>如果某个元素是它的父节点的唯一子节点，那么你可以使用 <code>:only-child</code> 选择它。不像 <code>:only-of-type</code> 伪类，并且和元素类型无关。例如：</p>
<pre>li:only-child { … }</pre>
<p>我们可以使用它来选择 <code>&lt;ul&gt;</code> 或 <code>&lt;ol&gt;</code> 中的单个列表项。</p>
<h4>:empty</h4>
<p>最后，结构伪类中，我们还有一个 <code>:empty</code>。毫不奇怪，这个选择器只会选择那些没有子节点和文本节点的元素。如果从数据库中动态输入内容进行处理，这可能会非常有用。</p>
<pre>#results:empty {
background-color: #fcc; }</pre>
<p>您可以使用该伪类来让用户注意搜索无结果的情况。</p>
<h3>2. 目标伪类</h3>
<h3>:target</h3>
<p>这是我最喜欢的伪类之一，因为它使我们可以基于 URL 对页面元素定义样式。如果 URL 有一个标识符（即带有一个 # 符号），那么 <code>:target</code> 伪类将为以该标识符为 id 属性的元素设置样式。比如以下的链接：</p>
<blockquote><p>http://www.mangguo.org/how-to-use-css3-pseudo-classes#summary</p></blockquote>
<p>id 属性为 <code>summary</code> 的区块现在可以这样设置样式：</p>
<pre>:target {
background-color: #fcc; }</pre>
<p>对于已经被元素外部链接指向的页面元素来说，这是一个伟大的举措。你也可以使用它来高亮加了锚点的内容。</p>
<p>或许，最令人印象深刻的 <code>:target</code> 使用案例是 <a href="http://dev.opera.com/articles/view/css3-target-based-interfaces/" target="_blank">Corey Mwamba 的绿色滚动网站</a>。他使用了一些富有创意的 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css3">CSS3</a></span> 和 <code>:target</code> 伪类来创建动态的 Tab 导航效果。Demo 稿中包含了一些 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css3">CSS3</a></span> 的巧妙用法，说明了伪类如何和其他 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css">CSS</a></span> 选择器结合使用。</p>
<p><img class="alignnone size-full wp-image-5592" title="Coreys-scrolling-site-of-green" src="http://www.mangguo.org/wp-content/uploads/2011/04/Coreys-scrolling-site-of-green.png" alt="" width="500" height="284" /></p>
<p><em>Corey Mwamba 的绿色滚动网站</em></p>
<p>另外还有一个有趣的例子 <a href="http://webdesignernotebook.com/css/the-css3-target-pseudo-class-and-css-animations/" target="_blank">Web Designer Notebook</a>。利用了 <code>:target</code> 和 Webkit 动画来高亮目标 div 中的大块文本。Chris Coyier 还创建了一个基于 <code>:target</code> 伪类的 Tab 系统，发布在 <a href="http://css-tricks.com/css3-tabs/">CSS-Tricks</a> 站点上。</p>
<p><strong>iPhone 表单案例</strong></p>
<p>这如我的 <a href="http://richardshepherd.com/smashing/psuedo/">Demo</a> 那样，我在顶部添加了一个导航栏，用于锚点定位到不同的表单区域。我们可以高亮任何区块：</p>
<pre>:target {
background-color: rgba(255,255,255,0.3);

-webkit-border-radius:
10px;}</pre>
<h3>3. UI 元素状态伪类</h3>
<h4>:enabled 和 :disabled</h4>
<p>UI 元素伪类包括 <code>:checked</code>，<code>:enabled</code>，<code>:disabled</code> 三个。可以允许根据元素状态来设定样式（通常是表单元素）。状态可以由用户设置（<code>:checked</code>）或由开发者设置（<code>:enabled</code> 和<code>:disabled</code>）。例如，我们可以使用下列内容：</p>
<pre>input:enabled {
background-color: #dfd; }

input:disabled {
background-color: #fdd; }</pre>
<p>这将更有利于给予用户反馈，让他们知道可以可以填写、什么不能填写，你会经常看到这样的依赖 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/javascript">JavaScript</a></span> 的动态特征。</p>
<p><strong>iPhone 表单案例</strong></p>
<p>为了实践说明 <code>:disabled</code>，我已经禁用表单的“提交”按钮，并加入这行 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css">CSS</a></span>：</p>
<pre>:disabled {
color: #600; }</pre>
<p>按钮文字变红了！</p>
<h4>:checked</h4>
<p>第三个伪类是 <code>:checked</code>，用于处理元素的状态，如复选框或单选按钮。这对用户来说能给予非常有益的反馈，告诉他们选中了哪些。例如：</p>
<pre>input[type=radio]:checked {
font-weight: bold; }</pre>
<p><strong>iPhone 表单案例</strong></p>
<p>当按钮按下时，我们可以用 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css">CSS</a></span> 来突出显示每个按钮旁边的文本：</p>
<pre>input:checked + label {
text-shadow: 0 0 6px #fff; }</pre>
<p>我们首先选择任意已选中的 input 元素，然后查找包含目标文本的临近 <code>&lt;span&gt;</code> 元素，并使用简单的 <code>text-shadow</code> 属性来装饰。</p>
<h3>4. 否定伪类</h3>
<h4>:not</h4>
<p>这是我最喜欢的另一种选择器，因为它会选中除了指定元素之外的全部元素。例如：</p>
<pre>:not(footer) { … }</pre>
<p>这将选中页面上除了 footer 标签之外的任何元素，在网页上是不是一个页脚元素的一切。用于表单输入框时，可以实现单个输入框的突出显示。</p>
<pre>input:not([type=submit]) { … }
input:not(disabled) { … }</pre>
<p>第一行选择除了 type 类型为 submit 的所有 input 元素。第二个选择所有不是 disabled 状态的 input 元素。</p>
<p><strong>iPhone 表单案例</strong></p>
<p>你已经切切实实看了 <code>:not</code> 选择器的作用。当与其他 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css3">CSS3</a></span> 伪类混用时，他将变得更加强大。让我们来仔细看个例子：</p>
<pre>fieldset input:not([type=radio]) {
margin: 0;
width: 290px;
font-size: 18px;
border-radius: 0;
border-bottom: 0;
border-color: #999;
padding: 8px 10px;}</pre>
<p>在这里，我们选择字段元素内不是单选按钮的 input 输入框。这在表单中是很常见的，因为文本输入框、下拉选择框、单选按钮、提交按钮往往是风格不一的。<a href="http://richardshepherd.com/smashing/pseudo/" target="_blank">点此查看最终的表单效果</a></p>
<h3>旧瓶装新酒</h3>
<p>让我们回到文章开头的 <code>a:link</code>。 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/html5">HTML5</a></span> 为 <code>&lt;a&gt;</code> 元素带来了<a href="http://dev.w3.org/html5/spec/Overview.html#the-a-element" target="_blank">令人兴奋的变化</a>，赋予 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css3">CSS3</a></span> 伪类更多的功能。</p>
<p><code>&lt;a&gt;</code> 元素现在可以嵌套块级元素，使整块的页面区块成为链接（只要这些部分不包含其他交互元素）。之前需要通过 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/javascript">JavaScript</a></span> 来实现的，现在可以使用 <code>&lt;a&gt;</code> 嵌套方案轻松实现了。例如：</p>
<pre>123</pre>
<p><span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css">CSS</a></span> 伪类的含义是，你可以随意为一个 <code>&lt;div&gt;</code> 设定样式，无论它是被悬停（<code>a:hover</code>）活着被激活（<code>a:active</code>），像这样：</p>
<pre>a:hover #advert {
background-color: #f7f7f7; }</pre>
<p>减少对 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/javascript">JavaScript</a></span> 代码的以来，并能适当增强代码语义总归是件好事。</p>
<h3>跨浏览器兼容性</h3>
<p>你肯定会问，<span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/ie8/">IE8</a></span>（或更早）不支持任何形式的 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css3">CSS3</a></span> 选择器，即使最新的 Chrome、Opera、Safari 和 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/firefox">Firefox</a></span> 都支持良好。在你的血液沸腾前，请考虑以下解决方案。</p>
<h4>Internet Explorer 9</h4>
<p>你可能对微软这款最新的 IE9 浏览器并不非常知情。但事实上它相当不错。虽然我并不指望读者和我想法一致，值得记住的是，<span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/ie">IE</a></span> 是世界上最为广泛流行的浏览器，和 Windows Update 和微软全球性的营销活动下，希望在不久的将来可以看到 IE9 成为主流。这对于网页设计者是好事，对伪类选择器也是好事。但是 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/ie8/">IE8</a></span> 和他的祖先们怎么办？</p>
<p><img class="alignnone size-full wp-image-5594" title="ie9" src="http://www.mangguo.org/wp-content/uploads/2011/04/ie9.png" alt="" width="550" height="352" /></p>
<p><em>Internet Explorer 9 来了</em></p>
<p>让我们的老朋友 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/javascript">JavaScript</a></span> 来救援 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css3">CSS3</a></span> 伪类吧。我特别喜欢 Keith Clark 的 <a href="http://selectivizr.com/" target="_blank">Selectivizr</a>。Keith 组建了一个适用于各种 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/javascript">JavaScript</a></span> 类库的脚本，为早期版本的 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/ie">IE</a></span> 浏览器增加了 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css3">CSS3</a></span> 伪类选择器功能。但是要注意，各种类库支持并不完全一致：如果你在 Mootools 上使用 Selectivizr，那么所有的伪类将可用，但如果你使用 jQuery，只有部分伪类可以正常工作。</p>
<p><img class="alignnone size-full wp-image-5595" title="selectivizr" src="http://www.mangguo.org/wp-content/uploads/2011/04/selectivizr.jpg" alt="" width="550" height="344" /></p>
<p><em>Selectivizr</em></p>
<p>Keith recently 发布了一个 jQuery 插件来支持以下 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css3">CSS3</a></span> 伪类：</p>
<ul>
<li><code>:first-of-type</code></li>
<li><code>:last-of-type</code></li>
<li><code>:only-of-type</code></li>
<li><code>:nth-of-type</code></li>
<li><code>:nth-last-of-type</code></li>
</ul>
<p>另外，也值得关注下 <a href="http://code.google.com/p/ie7-js/" target="_blank">Dean Edwards</a> 写的 ie7.js 脚本。这份脚本解决了一些 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/ie">IE</a></span> 相关问题，包括 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css3">CSS3</a></span> 伪类。</p>
<h4>因此，我们可以开始使用 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css3">CSS3</a></span> 伪类了吗？</h4>
<p>我想就这个问题的答案取决于你如何看待 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/javascript">JavaScript</a></span> 这玩意儿。现实是伪类完全可以被 class 和 id 替代。另一个现实是，在设置复杂布局样式时，伪类非常有用并且理所而然、自然而然。如果你发现伪类提高了你的 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css">CSS</a></span> 可读性，并减少了 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/html">HTML</a></span> 中的非语义 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css">CSS</a></span> 类，这也正式我建议拥抱 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css3">CSS3</a></span> 伪类的原因。</p>
<p>你可以使用两个选择器和一个 class 名，但只是重复工作。这也意味着使用伪类并不是必须。如果你没有坚持原则，代码可能看起来像这样：</p>
<pre>li:nth-of-type(3),
li.third { … }</pre>
<p>这种方法并不像使用伪类灵活，因为在内容变化时你需要同事改变 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/html">HTML</a></span> 结构和 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css">CSS</a></span> 内容。</p>
<p>如果用户没有启用 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/javascript">JavaScript</a></span> 会导致你陷入困境。许多网页设计师认为，功能（即 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/javascript">JavaScript</a></span>）是和布局（即 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css">CSS</a></span>）不同的，所以你不应该依赖于 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/javascript">JavaScript</a></span> 使 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/ie8/">IE8</a></span> 和早期浏览器支持伪类。</p>
<p>虽然我原则上统一，实际上我认为，相对于 99% 的用户提供最佳的经验和为剩余的 1％ 用户做出让步，显然前者更好（假如你有大量无脚本的用户，那就另当别论）。</p>
<p>按照你的网站分析，并准备成为一个网页设计师不断提高自己的技能。更重要的是，尽力为广大用户提供最好的体验。</p>
<h3>最后的思考</h3>
<p><span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/ie8/">IE8</a></span> 对伪类支持的缺乏，很难不让人感到沮丧。可以说，浏览器以 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/javascript">JavaScript</a></span> 方式计算和重新计算页面样式将对渲染速度造成影响，但因为所有其他主要浏览器现在支持这些选择器。令人沮丧的是，如果没有 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/javascript">JavaScript</a></span> Hack 方案，我们的大多数用户无法从中受益。</p>
<p>但就像 Farnsworth 说的，Internet Explorer 9 的曙光将是一道分水岭，微软已确保其新的浏览器<a href="http://msdn.microsoft.com/en-us/library/cc351024(v=vs.85).aspx#pseudoclasses" target="_blank">支持每个本文所讨论的选择器</a>。</p>
<p><span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css3">CSS3</a></span> 伪类选择器不会大块占用你的样式表。他们是特有而充满活力的。而且更可能的是，至少在最初阶段，要补充性地优化，而不是实现一个整体的网页。也许你想丢弃列表最后一项的下边框，或向用户提供视觉反馈，因为他们在填写表格。<span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css3">CSS3</a></span> 让这些都成为可能，并且会逐渐成为主流，我希望这将成为 Web 设计工具箱的一部分。</p>
<h4>其他资源</h4>
<p>你可能会对以下文章和相关资源感兴趣：</p>
<ul>
<li><a href="http://www.w3.org/TR/css3-selectors/" target="_blank">官方 CSS3 选择器推荐方案</a><br />
所有你需要直到的东西</li>
<li><a href="http://en.wikipedia.org/wiki/Cascading_Style_Sheets" target="_blank">Wikipedia 的 CSS 指南</a><br />
一份良好的背景阅读，书目是很好的资源。</li>
<li><a href="http://css-tricks.com/how-nth-child-works/" target="_blank">nth-child 如何工作</a><br />
Chris Coyier 的综合指南</li>
<li><a href="http://windows.microsoft.com/en-US/internet-explorer/downloads/ie-9/worldwide-languages" target="_blank">Internet Explorer 9</a><br />
如果你还未玩过微软的这款最新产品，肯定会大吃一惊！</li>
</ul>
<p>英文原稿：<a href="http://www.smashingmagazine.com/2011/03/30/how-to-use-css3-pseudo-classes/" target="_blank">How To Use CSS3 Pseudo-Classes | Smashing Magazine</a><br />
翻译整理：<a href="http://www.mangguo.org/how-to-use-css3-pseudo-classes/" target="_blank">如何使用 CSS3 伪类 | 芒果小站</a></p>
<h3  class="related_post_title">推荐阅读</h3><ul class="related_post"><li><a href="http://www.mangguo.org/css-21-and-css-3-help-cheat-sheets/" title="CSS2.1 和 CSS3 帮助文档及参考手册">CSS2.1 和 CSS3 帮助文档及参考手册</a> (0)</li><li><a href="http://www.mangguo.org/push-your-web-design-into-the-future-with-css3/" title="用 CSS3 实现未来的 Web">用 CSS3 实现未来的 Web</a> (7)</li><li><a href="http://www.mangguo.org/10-useful-tools-to-simplify-css3-development/" title="12 款简化 CSS3 开发的实用工具">12 款简化 CSS3 开发的实用工具</a> (12)</li><li><a href="http://www.mangguo.org/css3-media-queries/" title="CSS3 Media Queries，媒介设备查询">CSS3 Media Queries，媒介设备查询</a> (9)</li><li><a href="http://www.mangguo.org/pure-css-text-gradients-effect/" title="纯 CSS 实现文本渐变效果">纯 CSS 实现文本渐变效果</a> (9)</li><li><a href="http://www.mangguo.org/13-pure-css-techniques-for-creating-javascript-like-interactions/" title="13+ 模拟 JavaScript 交互效果的纯 CSS 技术">13+ 模拟 JavaScript 交互效果的纯 CSS 技术</a> (4)</li><li><a href="http://www.mangguo.org/beautiful-css3-search-form/" title="漂亮的 CSS3 搜索表单设计">漂亮的 CSS3 搜索表单设计</a> (3)</li><li><a href="http://www.mangguo.org/12-excellent-css3-button-and-menu-techniques/" title="12 个优秀的 CSS3 按钮和菜单技巧">12 个优秀的 CSS3 按钮和菜单技巧</a> (0)</li></ul><hr />
© 2010 芒果小站 | <a href="http://www.mangguo.org/how-to-use-css3-pseudo-classes/">固定链接</a> | <a href="http://www.mangguo.org/how-to-use-css3-pseudo-classes/#comments">7 条评论</a> | 标签 <a href="http://www.mangguo.org/tag/css/" rel="tag">CSS</a>, <a href="http://www.mangguo.org/tag/css3/" rel="tag">CSS3</a>, <a href="http://www.mangguo.org/tag/smashing-magazine/" rel="tag">Smashing Magazine</a>]]></content:encoded>
			<wfw:commentRss>http://www.mangguo.org/how-to-use-css3-pseudo-classes/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>使用 &lt;hr&gt; 标签创建水平分隔线</title>
		<link>http://www.mangguo.org/hr-tag-create-horizontal-separator/</link>
		<comments>http://www.mangguo.org/hr-tag-create-horizontal-separator/#comments</comments>
		<pubDate>Thu, 10 Feb 2011 12:39:22 +0000</pubDate>
		<dc:creator>芒果</dc:creator>
				<category><![CDATA[前端]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>

		<guid isPermaLink="false">http://www.mangguo.org/?p=5371</guid>
		<description><![CDATA[语义化 Web 是一件让人蛋疼的事，面对各种浏览器折腾的情况，想要挨个爆菊，总是会用没神马意义的 div 和 span 嵌套一层又一层。 比如制作一条水平分割线，如果你不觉得别扭，你可能会使用以下方法： &#60;div style="border-bottom:1px solid #000;"&#62;&#60;/div&#62; 如果该容器用于包裹其他文档内容，加一条边框也未尝不可。但如果没有内容，简直多此一举。 HTML 给了我们另一种选择，&#60;hr&#62; 标签： &#60;hr&#62; 标签在 HTML 页面中创建一条水平线。 水平分隔线（horizontal rule）可以在视觉上将文档分隔成各个部分。 这时候你可能会说，&#60;hr&#62; 标签默认样式长得真难看，好吧，来点 CSS 调整下（注意重设默认样式）： hr{ border:none; margin:0; height:0; border-bottom:1px solid #000; } 这样你爽了吧？另外，&#60;hr&#62; 支持 align/noshade/size/width 四个属性，不建议使用，请用样式设定。 推荐阅读多层元素嵌套的圆角按钮 (10)CSS 边框重叠鼠标悬停效果 (18)CSS 左右两栏自适应布局 (1)使用 JavaScript 和 CSS Rotation 的纯 HTML 时钟 (2)Data URI 初探及其自动化 (0)细线表格的浏览器兼容写法 [...]]]></description>
			<content:encoded><![CDATA[<p>语义化 Web 是一件让人蛋疼的事，面对各种浏览器折腾的情况，想要挨个爆菊，总是会用没神马意义的 div 和 span 嵌套一层又一层。</p>
<p>比如制作一条水平分割线，如果你不觉得别扭，你可能会使用以下方法：</p>
<pre>&lt;div style="border-bottom:1px solid #000;"&gt;&lt;/div&gt;</pre>
<p>如果该容器用于包裹其他文档内容，加一条边框也未尝不可。但如果没有内容，简直多此一举。</p>
<p><a href="http://www.mangguo.org/tag/html/">HTML</a> 给了我们另一种选择，&lt;hr&gt; 标签：</p>
<pre>&lt;hr&gt; 标签在 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/html">HTML</a></span> 页面中创建一条水平线。
水平分隔线（horizontal rule）可以在<em>视觉上</em>将文档分隔成各个部分。</pre>
<p>这时候你可能会说，&lt;hr&gt; 标签默认样式长得真难看，好吧，来点 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css">CSS</a></span> 调整下（注意重设默认样式）：</p>
<pre>hr{
	border:none;
	margin:0;
	height:0;
	border-bottom:1px solid #000;
}</pre>
<p>这样你爽了吧？另外，&lt;hr&gt; 支持 align/noshade/size/width 四个属性，不建议使用，请用样式设定。</p>
<h3  class="related_post_title">推荐阅读</h3><ul class="related_post"><li><a href="http://www.mangguo.org/multi-element-round-corner-button/" title="多层元素嵌套的圆角按钮">多层元素嵌套的圆角按钮</a> (10)</li><li><a href="http://www.mangguo.org/css-border-collapse-hover-effect/" title="CSS 边框重叠鼠标悬停效果">CSS 边框重叠鼠标悬停效果</a> (18)</li><li><a href="http://www.mangguo.org/css-two-column-adaptation-layout/" title="CSS 左右两栏自适应布局">CSS 左右两栏自适应布局</a> (1)</li><li><a href="http://www.mangguo.org/pure-html-clocks-using-javascript-css-rotation/" title="使用 JavaScript 和 CSS Rotation 的纯 HTML 时钟">使用 JavaScript 和 CSS Rotation 的纯 HTML 时钟</a> (2)</li><li><a href="http://www.mangguo.org/data-uri-preliminary-exploration-and-automation/" title="Data URI 初探及其自动化">Data URI 初探及其自动化</a> (0)</li><li><a href="http://www.mangguo.org/thin-border-table-browser-compatible-writing-method/" title="细线表格的浏览器兼容写法">细线表格的浏览器兼容写法</a> (4)</li><li><a href="http://www.mangguo.org/modularize-html-css-and-image/" title="模块化之 HTML CSS 以及图片">模块化之 HTML CSS 以及图片</a> (6)</li><li><a href="http://www.mangguo.org/web-development-and-designer-info-manual-part-one/" title="Web 开发与设计师速查手册大全（上）">Web 开发与设计师速查手册大全（上）</a> (4)</li></ul><hr />
© 2010 芒果小站 | <a href="http://www.mangguo.org/hr-tag-create-horizontal-separator/">固定链接</a> | <a href="http://www.mangguo.org/hr-tag-create-horizontal-separator/#comments">3 条评论</a> | 标签 <a href="http://www.mangguo.org/tag/css/" rel="tag">CSS</a>, <a href="http://www.mangguo.org/tag/html/" rel="tag">HTML</a>]]></content:encoded>
			<wfw:commentRss>http://www.mangguo.org/hr-tag-create-horizontal-separator/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>快速转换 CSS 字体 Unicode 编码</title>
		<link>http://www.mangguo.org/quick-transform-css-font-unicode-format/</link>
		<comments>http://www.mangguo.org/quick-transform-css-font-unicode-format/#comments</comments>
		<pubDate>Sun, 26 Dec 2010 15:04:22 +0000</pubDate>
		<dc:creator>芒果</dc:creator>
				<category><![CDATA[前端]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Unicode]]></category>

		<guid isPermaLink="false">http://www.mangguo.org/?p=5290</guid>
		<description><![CDATA[看了这篇 CSS 中文字体 Unicode 编码方案 后，某位童鞋说一用到中文字体就要去找对照表，麻烦死，那这样吧： escape('宋体'); 这样生成的宋体编码为： '%u5b8b%u4f53' 你可以手工将 %u 替换为斜杠 &#8216;\&#8217;。或者也可以这么搞： escape('宋体').replace(/%u/g, '\\'); 那就直接返回需要的编码格式鸟~ 推荐阅读CSS 中文字体 Unicode 编码方案 (7)Minify，合并压缩 JavaScript 和 CSS 文件 (12)13+ 模拟 JavaScript 交互效果的纯 CSS 技术 (4)使用 JavaScript 和 CSS Rotation 的纯 HTML 时钟 (2)Closure Compiler，压缩！还是压缩！ (5)YUICompressor，强大的前端代码压缩工具 (1)简单的页面加载 (Loading) 效果 (4)一道 JavaScript 填空题 (1) © 2010 芒果小站 &#124; 固定链接 &#124; [...]]]></description>
			<content:encoded><![CDATA[<p>看了这篇 <a href="../css-chinese-font-unicode-encode-solution/">CSS 中文字体 Unicode 编码方案</a> 后，某位童鞋说一用到中文字体就要去找对照表，麻烦死，那这样吧：</p>
<pre>escape('宋体');</pre>
<p>这样生成的宋体编码为：</p>
<pre>'%u5b8b%u4f53'</pre>
<p>你可以手工将 %u 替换为斜杠 &#8216;\&#8217;。或者也可以这么搞：</p>
<pre>escape('宋体').replace(/%u/g, '\\');</pre>
<p>那就直接返回需要的编码格式鸟~</p>
<h3  class="related_post_title">推荐阅读</h3><ul class="related_post"><li><a href="http://www.mangguo.org/css-chinese-font-unicode-encode-solution/" title="CSS 中文字体 Unicode 编码方案">CSS 中文字体 Unicode 编码方案</a> (7)</li><li><a href="http://www.mangguo.org/minify-merge-compress-javascript-and-css-file/" title="Minify，合并压缩 JavaScript 和 CSS 文件">Minify，合并压缩 JavaScript 和 CSS 文件</a> (12)</li><li><a href="http://www.mangguo.org/13-pure-css-techniques-for-creating-javascript-like-interactions/" title="13+ 模拟 JavaScript 交互效果的纯 CSS 技术">13+ 模拟 JavaScript 交互效果的纯 CSS 技术</a> (4)</li><li><a href="http://www.mangguo.org/pure-html-clocks-using-javascript-css-rotation/" title="使用 JavaScript 和 CSS Rotation 的纯 HTML 时钟">使用 JavaScript 和 CSS Rotation 的纯 HTML 时钟</a> (2)</li><li><a href="http://www.mangguo.org/closure-compiler-compression-still-compression/" title="Closure Compiler，压缩！还是压缩！">Closure Compiler，压缩！还是压缩！</a> (5)</li><li><a href="http://www.mangguo.org/yuicompressor-powerful-js-css-code-compressor/" title="YUICompressor，强大的前端代码压缩工具">YUICompressor，强大的前端代码压缩工具</a> (1)</li><li><a href="http://www.mangguo.org/simple-page-loading-effect/" title="简单的页面加载 (Loading) 效果">简单的页面加载 (Loading) 效果</a> (4)</li><li><a href="http://www.mangguo.org/a-javascript-fill-in-the-blank/" title="一道 JavaScript 填空题">一道 JavaScript 填空题</a> (1)</li></ul><hr />
© 2010 芒果小站 | <a href="http://www.mangguo.org/quick-transform-css-font-unicode-format/">固定链接</a> | <a href="http://www.mangguo.org/quick-transform-css-font-unicode-format/#comments">20 条评论</a> | 标签 <a href="http://www.mangguo.org/tag/css/" rel="tag">CSS</a>, <a href="http://www.mangguo.org/tag/javascript/" rel="tag">JavaScript</a>, <a href="http://www.mangguo.org/tag/unicode/" rel="tag">Unicode</a>]]></content:encoded>
			<wfw:commentRss>http://www.mangguo.org/quick-transform-css-font-unicode-format/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>神奇的 CSS 元素透明法</title>
		<link>http://www.mangguo.org/magic-css-element-opacity/</link>
		<comments>http://www.mangguo.org/magic-css-element-opacity/#comments</comments>
		<pubDate>Thu, 25 Nov 2010 16:12:05 +0000</pubDate>
		<dc:creator>芒果</dc:creator>
				<category><![CDATA[前端]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[PNG24]]></category>
		<category><![CDATA[PNG8]]></category>

		<guid isPermaLink="false">http://www.mangguo.org/?p=5236</guid>
		<description><![CDATA[1、HTML 元素透明 其实本身，CSS 实现元素透明是件容易事儿。直接上代码： opacity:.5 opacity 指的是不透明度，取值为 0~1 之间，1 表示完全不透明，0 表示完全透明。 A 级浏览器基本都支持 opacity 属性，但碰上 IE，总没好事。不过 IE 有滤镜，可以帮助我们拐弯抹角地搞定不透明度： filter:alpha(opacity=50); 注：事实上会碰到透明背景层，而 opacity 属性是会继承的，避免这个问题，需要结合定位来实现。 在 CSS3 中，还可以使用 HSLA（色调、饱和、亮度、透明度）或者 RGBA（红、绿、蓝、透明度）来实现元素透明。例如： background: hsla(0,100%,50%,0.5); background: rgba(0,0,0,0.5); 2、背景图片透明 有一个值得关注的问题是，PNG8 格式的图片在 IE6 下仅支持全透明，也就是说，IE6 下使用 PNG8 无法实现背景的半透明效果。透不透明其实有时候无所谓，但问题是全透明状态下，会导致图片出现恶心的毛边。虽然可以在导出 PNG8 时，通过选择杂边颜色或者去除杂边的方式解决，但并不完美。 可喜的是，PNG24 支持全透明，所以 PNG24 就很威猛了，在图片透明的方案中，它绝对是武力指数最高的。 但碰上 IE，另一个恶心的问题又出现了，IE6 不支持支持半透明的 PNG24 透明图片（可能有点拗口）。 咋办？滤镜！ 直接上代码： _background:none;_filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='mangguo.png',sizingMethod='crop'); 但碰上 IE6，又悲剧了。在 [...]]]></description>
			<content:encoded><![CDATA[<p><strong>1、<span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/html">HTML</a></span> 元素透明</strong></p>
<p>其实本身，<a href="http://www.mangguo.org/tag/css">CSS</a> 实现元素透明是件容易事儿。直接上代码：</p>
<pre>opacity:.5</pre>
<p>opacity 指的是<strong><span style="color: #ff0000;">不</span>透明度</strong>，取值为 0~1 之间，1 表示完全不透明，0 表示完全透明。</p>
<p>A 级浏览器基本都支持 opacity 属性，但碰上 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/ie">IE</a></span>，总没好事。不过 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/ie">IE</a></span> 有滤镜，可以帮助我们拐弯抹角地搞定不透明度：</p>
<pre>filter:alpha(opacity=50);</pre>
<p><strong>注：</strong>事实上会碰到透明背景层，而 opacity 属性是会继承的，避免这个问题，需要结合定位来实现。</p>
<p>在 <a href="http://www.mangguo.org/tag/css3">CSS3</a> 中，还可以使用 HSLA（色调、饱和、亮度、透明度）或者 RGBA（红、绿、蓝、透明度）来实现元素透明。例如：</p>
<pre>background: hsla(0,100%,50%,0.5);
background: rgba(0,0,0,0.5);</pre>
<p><strong>2、背景图片透明</strong></p>
<p>有一个值得关注的问题是，<a href="http://www.mangguo.org/tag/png8/">PNG8</a> 格式的图片在 IE6 下仅支持<strong>全透明</strong>，也就是说，IE6 下使用 <a href="http://www.mangguo.org/tag/png8/">PNG8</a> 无法实现背景的半透明效果。透不透明其实有时候无所谓，但问题是全透明状态下，会导致图片出现恶心的毛边。虽然可以在导出 <a href="http://www.mangguo.org/tag/png8/">PNG8</a> 时，通过选择杂边颜色或者去除杂边的方式解决，但并不完美。</p>
<p>可喜的是，<a href="http://www.mangguo.org/tag/png24/">PNG24</a> 支持全透明，所以 <a href="http://www.mangguo.org/tag/png24/">PNG24</a> 就很威猛了，在图片透明的方案中，它绝对是武力指数最高的。</p>
<p>但碰上 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/ie">IE</a></span>，另一个恶心的问题又出现了，<strong>IE6 不支持支持半透明的 <a href="http://www.mangguo.org/tag/png24/">PNG24</a> 透明图片</strong>（可能有点拗口）。</p>
<p>咋办？<span style="color: #ff0000;">滤镜！</span></p>
<p>直接上代码：</p>
<pre>_background:none;_filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='mangguo.png',sizingMethod='crop');</pre>
<p>但碰上 IE6，又悲剧了。在 <a href="http://www.mangguo.org/tag/css">CSS</a> 文档和页面地址不一致时（比如很多网站会将静态资源放置于和站点本身不同域的 CDN 服务器上），会导致滤镜引用的图片不可获取。所以<strong>一旦资源跨域，必须保证图片地址为绝对路径</strong>。</p>
<h3  class="related_post_title">推荐阅读</h3><ul class="related_post"><li><a href="http://www.mangguo.org/after-abandoning-css-hacks-browser-compatible-solution/" title="抛弃 CSS Hacks 后的浏览器兼容方案">抛弃 CSS Hacks 后的浏览器兼容方案</a> (10)</li><li><a href="http://www.mangguo.org/pure-english-pure-css-to-force-off-line-digital/" title="纯英文纯数字 CSS 强制折行">纯英文纯数字 CSS 强制折行</a> (7)</li><li><a href="http://www.mangguo.org/let-ben-collapse-css-chrome/" title="让 Chrome 崩溃的 CSS 代码">让 Chrome 崩溃的 CSS 代码</a> (17)</li><li><a href="http://www.mangguo.org/custom-input-file-style-ie-compatible/" title="自定义文件上传控件样式（兼容 IE6）">自定义文件上传控件样式（兼容 IE6）</a> (8)</li><li><a href="http://www.mangguo.org/css-ninja-safe-css-hacks/" title="CSS 忍者：安全的 CSS hacks 秘籍">CSS 忍者：安全的 CSS hacks 秘籍</a> (32)</li><li><a href="http://www.mangguo.org/10-useful-tools-to-simplify-css3-development/" title="12 款简化 CSS3 开发的实用工具">12 款简化 CSS3 开发的实用工具</a> (12)</li><li><a href="http://www.mangguo.org/ie6-magic-css-font-bug/" title="IE6 下的神奇 CSS 字体 bug">IE6 下的神奇 CSS 字体 bug</a> (25)</li><li><a href="http://www.mangguo.org/how-to-use-css3-pseudo-classes/" title="如何使用 CSS3 伪类">如何使用 CSS3 伪类</a> (7)</li></ul><hr />
© 2010 芒果小站 | <a href="http://www.mangguo.org/magic-css-element-opacity/">固定链接</a> | <a href="http://www.mangguo.org/magic-css-element-opacity/#comments">13 条评论</a> | 标签 <a href="http://www.mangguo.org/tag/css/" rel="tag">CSS</a>, <a href="http://www.mangguo.org/tag/png24/" rel="tag">PNG24</a>, <a href="http://www.mangguo.org/tag/png8/" rel="tag">PNG8</a>]]></content:encoded>
			<wfw:commentRss>http://www.mangguo.org/magic-css-element-opacity/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>IE 表单控件的按钮聚焦问题</title>
		<link>http://www.mangguo.org/ie-form-control-button-focus-problem/</link>
		<comments>http://www.mangguo.org/ie-form-control-button-focus-problem/#comments</comments>
		<pubDate>Sun, 24 Oct 2010 12:55:03 +0000</pubDate>
		<dc:creator>芒果</dc:creator>
				<category><![CDATA[前端]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[IE]]></category>

		<guid isPermaLink="false">http://www.mangguo.org/?p=5135</guid>
		<description><![CDATA[按钮的写法有两种，一种是 &#60;input value=”按钮”/&#62; 或者 &#60;button&#62;按钮&#60;/button&#62;，如果按钮用于表单提交，还必须加上 type 属性（type=”submit”）。为了美化按钮效果，一般会设置背景和边框属性。 但在 IE 下，表单区域获得焦点的情况下，如果按钮的 type 属性被设置为 submit，该按钮会自动触发聚焦效果。如下图所示： &#60;button type="submit"&#62;我说完了&#60;/button&#62; 想要避免出现这个恶心的黑框，需要将 button 的 border 属性设置为 none，然后外面套一层容器，用来模拟按钮的边框效果。 看看这篇文章的评论框，抛弃了原先过于小的按钮样式。用户体验在于细节哈~ 推荐阅读抛弃 CSS Hacks 后的浏览器兼容方案 (10)CSS Hacks for IE，IE 也可以很完美 (7)display:inline-block 的深入理解 (5)透明图片的 CSS Alpha 滤镜方法 (3)纯英文纯数字 CSS 强制折行 (7)一个编码引发的血案 (10)让 Chrome 崩溃的 CSS 代码 (17)IE8 中关于 colspan 属性的 bug (3) © 2010 芒果小站 [...]]]></description>
			<content:encoded><![CDATA[<p>按钮的写法有两种，一种是 &lt;input value=”按钮”/&gt; 或者 &lt;button&gt;按钮&lt;/button&gt;，如果按钮用于表单提交，还必须加上 type 属性（type=”submit”）。为了美化按钮效果，一般会设置背景和边框属性。</p>
<p>但在 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/ie">IE</a></span> 下，表单区域获得焦点的情况下，如果按钮的 type 属性被设置为 submit，该按钮会自动触发聚焦效果。如下图所示：</p>
<pre>&lt;button type="submit"&gt;我说完了&lt;/button&gt;</pre>
<p><img class="alignnone size-full wp-image-5136" title="button_type_submit" src="http://www.mangguo.org/wp-content/uploads/2010/10/button_type_submit.gif" alt="" width="600" height="130" /></p>
<p>想要避免出现这个恶心的黑框，需要将 button 的 border 属性设置为 none，然后外面套一层容器，用来模拟按钮的边框效果。</p>
<p><img class="alignnone size-full wp-image-5137" title="button_type_submit_fix" src="http://www.mangguo.org/wp-content/uploads/2010/10/button_type_submit_fix.gif" alt="" width="599" height="131" /></p>
<p>看看这篇文章的评论框，抛弃了原先过于小的按钮样式。用户体验在于细节哈~</p>
<h3  class="related_post_title">推荐阅读</h3><ul class="related_post"><li><a href="http://www.mangguo.org/after-abandoning-css-hacks-browser-compatible-solution/" title="抛弃 CSS Hacks 后的浏览器兼容方案">抛弃 CSS Hacks 后的浏览器兼容方案</a> (10)</li><li><a href="http://www.mangguo.org/css-hacks-for-ie-ie-can-be-perfect/" title="CSS Hacks for IE，IE 也可以很完美">CSS Hacks for IE，IE 也可以很完美</a> (7)</li><li><a href="http://www.mangguo.org/in-depth-understanding-of-display-inline-block/" title="display:inline-block 的深入理解">display:inline-block 的深入理解</a> (5)</li><li><a href="http://www.mangguo.org/transparent-image-css-alpha-filter-method/" title="透明图片的 CSS Alpha 滤镜方法">透明图片的 CSS Alpha 滤镜方法</a> (3)</li><li><a href="http://www.mangguo.org/pure-english-pure-css-to-force-off-line-digital/" title="纯英文纯数字 CSS 强制折行">纯英文纯数字 CSS 强制折行</a> (7)</li><li><a href="http://www.mangguo.org/murder-caused-by-a-coding/" title="一个编码引发的血案">一个编码引发的血案</a> (10)</li><li><a href="http://www.mangguo.org/let-ben-collapse-css-chrome/" title="让 Chrome 崩溃的 CSS 代码">让 Chrome 崩溃的 CSS 代码</a> (17)</li><li><a href="http://www.mangguo.org/colspan-attribute-bug-in-ie8/" title="IE8 中关于 colspan 属性的 bug">IE8 中关于 colspan 属性的 bug</a> (3)</li></ul><hr />
© 2010 芒果小站 | <a href="http://www.mangguo.org/ie-form-control-button-focus-problem/">固定链接</a> | <a href="http://www.mangguo.org/ie-form-control-button-focus-problem/#comments">9 条评论</a> | 标签 <a href="http://www.mangguo.org/tag/css/" rel="tag">CSS</a>, <a href="http://www.mangguo.org/tag/ie/" rel="tag">IE</a>]]></content:encoded>
			<wfw:commentRss>http://www.mangguo.org/ie-form-control-button-focus-problem/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>多层元素嵌套的圆角按钮</title>
		<link>http://www.mangguo.org/multi-element-round-corner-button/</link>
		<comments>http://www.mangguo.org/multi-element-round-corner-button/#comments</comments>
		<pubDate>Tue, 14 Sep 2010 13:48:03 +0000</pubDate>
		<dc:creator>芒果</dc:creator>
				<category><![CDATA[前端]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>

		<guid isPermaLink="false">http://www.mangguo.org/?p=5027</guid>
		<description><![CDATA[圆角按钮的实现看似并不困难，但会遇到如按钮宽度自适应文字长度等情况，不可能每次都切固定大小的背景图片。 自适应宽度的按钮，通常会采用类似下面的切图方法： 这样一来，只需要嵌套两层标签即可： &#60;a href="#"&#62;&#60;span&#62;按钮&#60;/span&#62;&#60;/a&#62; a 标签设定右侧块的圆角背景，span 标签设定左侧块的圆角背景以及内容区块，目前支付宝是这样做的。但前提需要保证按钮文案长度不会超过背景图片的宽度。 另一种切图的方案是分三块切，左侧一块，右侧一块，中间内容区域一块。 这样切图，事实上 a 标签也只需要嵌套两层即可实现自适应的圆角按钮。 &#60;a href="#"&#62;&#60;span&#62;&#60;span&#62;按钮&#60;/span&#62;&#60;/span&#62;&#60;/a&#62; a 标签设定右侧块的圆角背景，第一层 span 标签设定左侧块的圆角背景，第二层标签设定内容区域的水平平铺背景。但这种两层的方式在 button 标签上并不适用，需要通过一些乱七八糟的 hack 来干掉 button 标签各种表现上的缺陷。考虑到 a 标签按钮和 button 标签按钮的通用性，小小牺牲一下，套了三层标签。 具体请查看演示：round_corner_button.html 推荐阅读使用 &#60;hr&#62; 标签创建水平分隔线 (3)CSS 边框重叠鼠标悬停效果 (18)CSS 左右两栏自适应布局 (1)使用 JavaScript 和 CSS Rotation 的纯 HTML 时钟 (2)Data URI 初探及其自动化 (0)细线表格的浏览器兼容写法 (4)模块化之 HTML CSS 以及图片 (6)Web 开发与设计师速查手册大全（上） (4) [...]]]></description>
			<content:encoded><![CDATA[<p>圆角按钮的实现看似并不困难，但会遇到如按钮宽度自适应文字长度等情况，不可能每次都切固定大小的背景图片。</p>
<p>自适应宽度的按钮，通常会采用类似下面的切图方法：</p>
<p><img class="alignnone size-full wp-image-5036" title="round_corner_button_alipay" src="http://www.mangguo.org/wp-content/uploads/2010/09/round_corner_button_alipay.png" alt="" width="190" height="54" /></p>
<p>这样一来，只需要嵌套两层标签即可：</p>
<pre>&lt;a href="#"&gt;&lt;span&gt;按钮&lt;/span&gt;&lt;/a&gt;</pre>
<p>a 标签设定右侧块的圆角背景，span 标签设定左侧块的圆角背景以及内容区块，目前支付宝是这样做的。但前提需要保证按钮文案长度不会超过背景图片的宽度。</p>
<p>另一种切图的方案是分三块切，左侧一块，右侧一块，中间内容区域一块。</p>
<p><img class="alignnone size-full wp-image-5037" title="round_corner_button_sprite" src="http://www.mangguo.org/wp-content/uploads/2010/09/round_corner_button_sprite.png" alt="" width="5" height="105" /></p>
<p>这样切图，事实上 a 标签也只需要嵌套两层即可实现自适应的圆角按钮。</p>
<pre>&lt;a href="#"&gt;&lt;span&gt;&lt;span&gt;按钮&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;</pre>
<p>a 标签设定右侧块的圆角背景，第一层 span 标签设定左侧块的圆角背景，第二层标签设定内容区域的水平平铺背景。但这种两层的方式在 button 标签上并不适用，需要通过一些乱七八糟的 hack 来干掉 button 标签各种表现上的缺陷。考虑到 a 标签按钮和 button 标签按钮的通用性，小小牺牲一下，套了三层标签。</p>
<p><img class="alignnone size-full wp-image-5038" title="round_corner_button_example" src="http://www.mangguo.org/wp-content/uploads/2010/09/round_corner_button_example.png" alt="" width="375" height="91" /></p>
<p>具体请查看演示：<a href="http://www.mangguo.org/wp-content/uploads/2010/09/round_corner_button.html" target="_blank">round_corner_button.html</a></p>
<h3  class="related_post_title">推荐阅读</h3><ul class="related_post"><li><a href="http://www.mangguo.org/hr-tag-create-horizontal-separator/" title="使用 &lt;hr&gt; 标签创建水平分隔线">使用 &lt;hr&gt; 标签创建水平分隔线</a> (3)</li><li><a href="http://www.mangguo.org/css-border-collapse-hover-effect/" title="CSS 边框重叠鼠标悬停效果">CSS 边框重叠鼠标悬停效果</a> (18)</li><li><a href="http://www.mangguo.org/css-two-column-adaptation-layout/" title="CSS 左右两栏自适应布局">CSS 左右两栏自适应布局</a> (1)</li><li><a href="http://www.mangguo.org/pure-html-clocks-using-javascript-css-rotation/" title="使用 JavaScript 和 CSS Rotation 的纯 HTML 时钟">使用 JavaScript 和 CSS Rotation 的纯 HTML 时钟</a> (2)</li><li><a href="http://www.mangguo.org/data-uri-preliminary-exploration-and-automation/" title="Data URI 初探及其自动化">Data URI 初探及其自动化</a> (0)</li><li><a href="http://www.mangguo.org/thin-border-table-browser-compatible-writing-method/" title="细线表格的浏览器兼容写法">细线表格的浏览器兼容写法</a> (4)</li><li><a href="http://www.mangguo.org/modularize-html-css-and-image/" title="模块化之 HTML CSS 以及图片">模块化之 HTML CSS 以及图片</a> (6)</li><li><a href="http://www.mangguo.org/web-development-and-designer-info-manual-part-one/" title="Web 开发与设计师速查手册大全（上）">Web 开发与设计师速查手册大全（上）</a> (4)</li></ul><hr />
© 2010 芒果小站 | <a href="http://www.mangguo.org/multi-element-round-corner-button/">固定链接</a> | <a href="http://www.mangguo.org/multi-element-round-corner-button/#comments">10 条评论</a> | 标签 <a href="http://www.mangguo.org/tag/css/" rel="tag">CSS</a>, <a href="http://www.mangguo.org/tag/html/" rel="tag">HTML</a>]]></content:encoded>
			<wfw:commentRss>http://www.mangguo.org/multi-element-round-corner-button/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>CSS 中文字体 Unicode 编码方案</title>
		<link>http://www.mangguo.org/css-chinese-font-unicode-encode-solution/</link>
		<comments>http://www.mangguo.org/css-chinese-font-unicode-encode-solution/#comments</comments>
		<pubDate>Fri, 03 Sep 2010 13:42:08 +0000</pubDate>
		<dc:creator>芒果</dc:creator>
				<category><![CDATA[前端]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Unicode]]></category>

		<guid isPermaLink="false">http://www.mangguo.org/?p=4972</guid>
		<description><![CDATA[在 CSS 中使用中文字体通常直接设置字体名称，比如设置字体为宋体：font-family:&#8217;宋体&#8217;；但因此产生的一个问题是，如果 CSS 编码有误，会导致页面加载后 CSS 中的中文字体乱码，请看下图所示： 通常会采用对中文字体进行 Unicode 编码的方式来解决这个危险的问题。比如字符“宋体”经过 Unicode 编码后为 “\5b8b\4f53&#8243;。以淘宝为例：font:12px/1.5 tahoma,arial,\5b8b\4f53; 预选的中文字体是编码后的宋体。 有一种快速获得字体 Unicode 编码的方法，如果你使用火狐的 Firebug 插件，直接在控制台中输入 escape(&#8216;黑体&#8217;)，就可以得到黑体的 Unicode 编码，但需要经过处理才可以使用到 CSS 文件中来，请看下图所示： 于此获得到了 “%u9ED1%u4F53&#8243;，将其改写为 “\9ED1\4F53&#8243; 即可写入 CSS 文件。 这样或许还是有些小麻烦，那也没关系，芒果这里有一份比较完整的表格，自己查吧。 中文名 Unicode 新细明体 \65B0\7EC6\660E\4F53 细明体 \7EC6\660E\4F53 标楷体 \6807\6977\4F53 黑体 \9ED1\4F53 宋体 \5B8B\4F53 新宋体 \65B0\5B8B\4F53 仿宋 \4EFF\5B8B 楷体 \6977\4F53 仿宋_GB2312 \4EFF\5B8B_GB2312 楷体_GB2312 \6977\4F53_GB2312 微软正黑体 [...]]]></description>
			<content:encoded><![CDATA[<p>在 <a href="http://www.mangguo.org/tag/css/">CSS</a> 中使用中文字体通常直接设置字体名称，比如设置字体为宋体：font-family:&#8217;宋体&#8217;；但因此产生的一个问题是，如果 <a href="http://www.mangguo.org/tag/css/">CSS</a> 编码有误，会导致页面加载后 <a href="http://www.mangguo.org/tag/css/">CSS</a> 中的中文字体乱码，请看下图所示：</p>
<p><img title="css_font_encode" src="http://www.mangguo.org/wp-content/uploads/2010/09/css_font_encode.png" alt="" width="250" height="138" /></p>
<p>通常会采用对中文字体进行 Unicode 编码的方式来解决这个危险的问题。比如字符“宋体”经过 Unicode 编码后为 “\5b8b\4f53&#8243;。以淘宝为例：font:12px/1.5 tahoma,arial,\5b8b\4f53; 预选的中文字体是编码后的宋体。</p>
<p>有一种快速获得字体 Unicode 编码的方法，如果你使用火狐的 Firebug 插件，直接在控制台中输入 escape(&#8216;黑体&#8217;)，就可以得到黑体的 Unicode 编码，但需要经过处理才可以使用到 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css">CSS</a></span> 文件中来，请看下图所示：</p>
<p><img title="css_font_unicode" src="http://www.mangguo.org/wp-content/uploads/2010/09/css_font_unicode.png" alt="" width="399" height="115" /></p>
<p>于此获得到了 “%u9ED1%u4F53&#8243;，将其改写为 “\9ED1\4F53&#8243; 即可写入 <a href="http://www.mangguo.org/tag/css/">CSS</a> 文件。</p>
<p>这样或许还是有些小麻烦，那也没关系，<a href="http://www.mangguo.org/">芒果</a>这里有一份比较完整的表格，自己查吧。</p>
<table>
<thead>
<tr>
<th>中文名</th>
<th>Unicode</th>
</tr>
</thead>
<tbody>
<tr>
<td>新细明体</td>
<td>\65B0\7EC6\660E\4F53</td>
</tr>
<tr>
<td>细明体</td>
<td>\7EC6\660E\4F53</td>
</tr>
<tr>
<td>标楷体</td>
<td>\6807\6977\4F53</td>
</tr>
<tr>
<td>黑体</td>
<td>\9ED1\4F53</td>
</tr>
<tr>
<td>宋体</td>
<td>\5B8B\4F53</td>
</tr>
<tr>
<td>新宋体</td>
<td>\65B0\5B8B\4F53</td>
</tr>
<tr>
<td>仿宋</td>
<td>\4EFF\5B8B</td>
</tr>
<tr>
<td>楷体</td>
<td>\6977\4F53</td>
</tr>
<tr>
<td>仿宋_GB2312</td>
<td>\4EFF\5B8B_GB2312</td>
</tr>
<tr>
<td>楷体_GB2312</td>
<td>\6977\4F53_GB2312</td>
</tr>
<tr>
<td>微软正黑体</td>
<td>\5FAE\x8F6F\6B63\9ED1\4F53</td>
</tr>
<tr>
<td>微软雅黑</td>
<td>\5FAE\8F6F\96C5\9ED1</td>
</tr>
</tbody>
</table>
<h3  class="related_post_title">推荐阅读</h3><ul class="related_post"><li><a href="http://www.mangguo.org/quick-transform-css-font-unicode-format/" title="快速转换 CSS 字体 Unicode 编码">快速转换 CSS 字体 Unicode 编码</a> (20)</li><li><a href="http://www.mangguo.org/after-abandoning-css-hacks-browser-compatible-solution/" title="抛弃 CSS Hacks 后的浏览器兼容方案">抛弃 CSS Hacks 后的浏览器兼容方案</a> (10)</li><li><a href="http://www.mangguo.org/pure-english-pure-css-to-force-off-line-digital/" title="纯英文纯数字 CSS 强制折行">纯英文纯数字 CSS 强制折行</a> (7)</li><li><a href="http://www.mangguo.org/let-ben-collapse-css-chrome/" title="让 Chrome 崩溃的 CSS 代码">让 Chrome 崩溃的 CSS 代码</a> (17)</li><li><a href="http://www.mangguo.org/custom-input-file-style-ie-compatible/" title="自定义文件上传控件样式（兼容 IE6）">自定义文件上传控件样式（兼容 IE6）</a> (8)</li><li><a href="http://www.mangguo.org/css-ninja-safe-css-hacks/" title="CSS 忍者：安全的 CSS hacks 秘籍">CSS 忍者：安全的 CSS hacks 秘籍</a> (32)</li><li><a href="http://www.mangguo.org/10-useful-tools-to-simplify-css3-development/" title="12 款简化 CSS3 开发的实用工具">12 款简化 CSS3 开发的实用工具</a> (12)</li><li><a href="http://www.mangguo.org/ie6-magic-css-font-bug/" title="IE6 下的神奇 CSS 字体 bug">IE6 下的神奇 CSS 字体 bug</a> (25)</li></ul><hr />
© 2010 芒果小站 | <a href="http://www.mangguo.org/css-chinese-font-unicode-encode-solution/">固定链接</a> | <a href="http://www.mangguo.org/css-chinese-font-unicode-encode-solution/#comments">7 条评论</a> | 标签 <a href="http://www.mangguo.org/tag/css/" rel="tag">CSS</a>, <a href="http://www.mangguo.org/tag/unicode/" rel="tag">Unicode</a>]]></content:encoded>
			<wfw:commentRss>http://www.mangguo.org/css-chinese-font-unicode-encode-solution/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>CSS 边框重叠鼠标悬停效果</title>
		<link>http://www.mangguo.org/css-border-collapse-hover-effect/</link>
		<comments>http://www.mangguo.org/css-border-collapse-hover-effect/#comments</comments>
		<pubDate>Thu, 26 Aug 2010 15:11:33 +0000</pubDate>
		<dc:creator>芒果</dc:creator>
				<category><![CDATA[前端]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>

		<guid isPermaLink="false">http://www.mangguo.org/?p=4952</guid>
		<description><![CDATA[前几天某个同事的项目中碰到一个边框重叠鼠标悬停效果，要实现鼠标移上后按钮边框换色，但左右两个按钮的边框又是合并在一起的。就像下面这张图片示意： 如果看不明白，请移步参考淘宝搜索结果页面中的“信用”、“价格”两个排序按钮。http://s.taobao.com/search?q=%CC%D4%B1%A6 以三个横排并列的按钮为例： &#60;span class="grid"&#62; &#60;a href="#"&#62;A&#60;/a&#62; &#60;a href="#"&#62;B&#60;/a&#62; &#60;a href="#"&#62;C&#60;/a&#62; &#60;/span&#62; 这个问题的关键在于合并相邻两个容器的边框，视觉上就像表格边框的合并那样，芒果选择使用负 margin 来隐藏右侧边框。鼠标 hover 时如何才能使当前按钮边框呈现出来？其实也很简单，只要给 a:hover 伪类加上 position:relative;z-index:1; 即可。另外，为了修复 IE6 下的定位问题，建议给每一个 a 元素添加 position:relative; 属性。样式代码如下： .grid{display:inline-block;} .grid a{float:left;border:5px solid #cdcdcd;margin-right:-5px;position:relative;width:50px;height:50px;line-height:50px;text-align:center;} .grid a:hover{border:5px solid #31b1fc;position:relative;z-index:1;} 最终效果如下。因为子节点浮动，外层最好能清除浮动，清浮动的方法请猛击此处查看：http://www.mangguo.org/mangguo-teach-you-clear-float 另外，芒果还想到一种形如九宫格的 CSS 实现，代码也很简洁。 详情参考这份 DEMO 稿：border_collapse_hover.html 推荐阅读使用 &#60;hr&#62; 标签创建水平分隔线 (3)多层元素嵌套的圆角按钮 (10)CSS 左右两栏自适应布局 (1)使用 JavaScript 和 CSS Rotation 的纯 [...]]]></description>
			<content:encoded><![CDATA[<p>前几天某个同事的项目中碰到一个边框重叠鼠标悬停效果，要实现鼠标移上后按钮边框换色，但左右两个按钮的边框又是合并在一起的。就像下面这张图片示意：</p>
<p><img title="taobao_border_collapse" src="http://www.mangguo.org/wp-content/uploads/2010/08/taobao_border_collapse.png" alt="" width="198" height="78" /></p>
<p>如果看不明白，请移步参考淘宝搜索结果页面中的“信用”、“价格”两个排序按钮。<a href="http://s.taobao.com/search?q=%CC%D4%B1%A6" target="_blank">http://s.taobao.com/search?q=%CC%D4%B1%A6</a></p>
<p>以三个横排并列的按钮为例：</p>
<pre>&lt;span class="grid"&gt;
    &lt;a href="#"&gt;A&lt;/a&gt;
    &lt;a href="#"&gt;B&lt;/a&gt;
    &lt;a href="#"&gt;C&lt;/a&gt;
&lt;/span&gt;</pre>
<p>这个问题的关键在于合并相邻两个容器的边框，视觉上就像表格边框的合并那样，<a href="http://www.mangguo.org">芒果</a>选择使用负 margin 来隐藏右侧边框。鼠标 hover 时如何才能使当前按钮边框呈现出来？其实也很简单，只要给 a:hover 伪类加上 position:relative;z-index:1; 即可。另外，为了修复 IE6 下的定位问题，建议给每一个 a 元素添加 position:relative; 属性。样式代码如下：</p>
<pre>.grid{display:inline-block;}
.grid a{float:left;border:5px solid #cdcdcd;margin-right:-5px;position:relative;width:50px;height:50px;line-height:50px;text-align:center;}
.grid a:hover{border:5px solid #31b1fc;position:relative;z-index:1;}</pre>
<p>最终效果如下。因为子节点浮动，外层最好能清除浮动，清浮动的方法请猛击此处查看：<a href="http://www.mangguo.org/mangguo-teach-you-clear-float" target="_blank">http://www.mangguo.org/mangguo-teach-you-clear-float<br />
</a> <img title="border_collapse" src="http://www.mangguo.org/wp-content/uploads/2010/08/border_collapse.png" alt="" width="195" height="300" /></p>
<p>另外，<a href="http://www.mangguo.org">芒果</a>还想到一种形如九宫格的 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css">CSS</a></span> 实现，代码也很简洁。</p>
<p>详情参考这份 DEMO 稿：<a href="http://www.mangguo.org/wp-content/uploads/2010/08/border_collapse_hover.html" target="_blank">border_collapse_hover.html</a></p>
<h3  class="related_post_title">推荐阅读</h3><ul class="related_post"><li><a href="http://www.mangguo.org/hr-tag-create-horizontal-separator/" title="使用 &lt;hr&gt; 标签创建水平分隔线">使用 &lt;hr&gt; 标签创建水平分隔线</a> (3)</li><li><a href="http://www.mangguo.org/multi-element-round-corner-button/" title="多层元素嵌套的圆角按钮">多层元素嵌套的圆角按钮</a> (10)</li><li><a href="http://www.mangguo.org/css-two-column-adaptation-layout/" title="CSS 左右两栏自适应布局">CSS 左右两栏自适应布局</a> (1)</li><li><a href="http://www.mangguo.org/pure-html-clocks-using-javascript-css-rotation/" title="使用 JavaScript 和 CSS Rotation 的纯 HTML 时钟">使用 JavaScript 和 CSS Rotation 的纯 HTML 时钟</a> (2)</li><li><a href="http://www.mangguo.org/data-uri-preliminary-exploration-and-automation/" title="Data URI 初探及其自动化">Data URI 初探及其自动化</a> (0)</li><li><a href="http://www.mangguo.org/thin-border-table-browser-compatible-writing-method/" title="细线表格的浏览器兼容写法">细线表格的浏览器兼容写法</a> (4)</li><li><a href="http://www.mangguo.org/modularize-html-css-and-image/" title="模块化之 HTML CSS 以及图片">模块化之 HTML CSS 以及图片</a> (6)</li><li><a href="http://www.mangguo.org/web-development-and-designer-info-manual-part-one/" title="Web 开发与设计师速查手册大全（上）">Web 开发与设计师速查手册大全（上）</a> (4)</li></ul><hr />
© 2010 芒果小站 | <a href="http://www.mangguo.org/css-border-collapse-hover-effect/">固定链接</a> | <a href="http://www.mangguo.org/css-border-collapse-hover-effect/#comments">18 条评论</a> | 标签 <a href="http://www.mangguo.org/tag/css/" rel="tag">CSS</a>, <a href="http://www.mangguo.org/tag/html/" rel="tag">HTML</a>]]></content:encoded>
			<wfw:commentRss>http://www.mangguo.org/css-border-collapse-hover-effect/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>CSS3 Media Queries，媒介设备查询</title>
		<link>http://www.mangguo.org/css3-media-queries/</link>
		<comments>http://www.mangguo.org/css3-media-queries/#comments</comments>
		<pubDate>Wed, 18 Aug 2010 16:13:35 +0000</pubDate>
		<dc:creator>芒果</dc:creator>
				<category><![CDATA[前端]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[Media Queries]]></category>
		<category><![CDATA[WebDesignerWall]]></category>

		<guid isPermaLink="false">http://www.mangguo.org/?p=4933</guid>
		<description><![CDATA[CSS2 允许通过 media 属性为不同媒介设备（如屏幕、打印机）指定专用样式表，而 CSS3 通过 media queries 使得更为行之有效。你可以为媒介类型添加某些查询条件用以检测设备，并采用不同的样式表。例如，你可以有一个大屏幕显示器的专用样式和一个移动设备的专用样式。这将非常强大，因为它允许不同的设备使用不同的界面外观，但并不改变你的文档内容。阅读这篇文章来了解一下国外已经良好应用 media queries 的网站案例。 CSS3 Media Queries (演示稿) 点击这个 演示稿 并且缩放的你浏览器窗口尺寸，观察页面元素的动态变化。 最大宽度 如果可视区域宽度小于 600 像素，以下 CSS 将被应用。 @media screen and (max-width: 600px) { .class { background: #ccc; } } 如果你想要引入独立的样式表，可以在 &#60;head&#62; 标签对之间插入以下代码行。 &#60;link rel="stylesheet" media="screen and (max-width: 600px)" href="small.css" /&#62; 最小宽度 如果可视区域宽度大于 900 像素，以下 CSS 将被应用。 @media [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.mangguo.org/tag/css/">CSS</a>2 允许通过 media 属性为不同媒介设备（如屏幕、打印机）指定专用样式表，而 <a href="http://www.mangguo.org/tag/css/">CSS</a>3 通过 media queries 使得更为行之有效。你可以为媒介类型添加某些查询条件用以检测设备，并采用不同的样式表。例如，你可以有一个大屏幕显示器的专用样式和一个移动设备的专用样式。这将非常强大，因为它允许不同的设备使用不同的界面外观，但并不改变你的文档内容。阅读这篇文章来了解一下国外已经良好应用 media queries 的网站案例。</p>
<p><strong><span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css3">CSS3</a></span> Media Queries</strong> (<a href="http://www.mangguo.org/wp-content/uploads/2010/08/css3_media_queries.html">演示稿</a>)<br />
点击这个 <a href="http://www.mangguo.org/wp-content/uploads/2010/08/css3_media_queries.html">演示稿</a> 并且缩放的你浏览器窗口尺寸，观察页面元素的动态变化。</p>
<p><strong>最大宽度</strong></p>
<p>如果可视区域宽度小于 600 像素，以下 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css">CSS</a></span> 将被应用。</p>
<pre>@media screen and (max-width: 600px) {
  .class {
    background: #ccc;
  }
}</pre>
<p>如果你想要引入独立的样式表，可以在 &lt;head&gt; 标签对之间插入以下代码行。</p>
<pre>&lt;link rel="stylesheet" media="screen and (max-width: 600px)" href="small.css" /&gt;</pre>
<p><strong>最小宽度</strong></p>
<p>如果可视区域宽度大于 900 像素，以下 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css">CSS</a></span> 将被应用。</p>
<pre>@media screen and (min-width: 900px) {
  .class {
    background: #666;
  }
}</pre>
<p><strong>多媒介查询</strong></p>
<p>你可以组合多个媒介类型查询，如果可视区域宽度介于 600 像素至 900 像素，以下代码将被应用。</p>
<pre>@media screen and (min-width: 600px) and (max-width: 900px) {
  .class {
    background: #333;
  }
}</pre>
<p><strong>设备宽度</strong></p>
<p>如果设备最大宽度为 480 像素（如 iPhone），以下代码将被应用。注：最大设备宽度意味着设备的实际可视面积，最大宽度意味着可视区域面积。</p>
<pre>@media screen and (max-device-width: 480px) {
  .class {
    background: #000;
  }
}</pre>
<p><strong>iPhone 4 专用</strong></p>
<p>以下代码为 iPhone 4 专用。（案例：<a href="http://thomasmaier.me/2010/06/css-for-iphone-4-retina-display/" target="_blank">Thomas Maier</a>）</p>
<pre>&lt;link rel="stylesheet" media="only screen and (-webkit-min-device-pixel-ratio: 2)" type="text/css" href="iphone4.css" /&gt;</pre>
<p><strong>iPad 专用</strong></p>
<p>你也可以使用 media queries 来检测 iPad 上横向纵向坐标。（案例：<a href="http://www.cloudfour.com/ipad-css/">Cloud Four</a>）</p>
<pre>&lt;link rel="stylesheet" media="all and (orientation:portrait)" href="portrait.css"&gt;
&lt;link rel="stylesheet" media="all and (orientation:landscape)" href="landscape.css"&gt;</pre>
<p><strong>Internet Explorer 的 Media Queries 解决方案</strong><br />
不幸的事，Internet Explorer 8 或更早的版本并不支持 <a href="http://www.mangguo.org/tag/wordpress/">media queries</a>。你可以使用 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/javascript">JavaScript</a></span> 来弥补这一缺陷。以下是几个解决方案：</p>
<p>1、<a href="http://css-tricks.com/resolution-specific-stylesheets/" target="_blank">CSS Tricks &#8211; using jQuery to detect browser size</a><br />
2、<a href="http://www.themaninblue.com/experiment/ResolutionLayout/" target="_blank">The Man in Blue &#8211; using Javascript</a> (这篇文章写于六年前)<br />
3、<a href="http://plugins.jquery.com/project/MediaQueries" target="_blank">jQuery Media Queries Plugin</a></p>
<p><strong>案例站点</strong></p>
<p>你必须在支持 <a href="http://www.mangguo.org/tag/media-queries/">media queries</a> 的高级浏览器如 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/firefox">Firefox</a></span>、Chrome、Safari 中浏览以下站点。看看随着窗口尺寸改变时，这些页面布局是如何响应的。</p>
<p><strong><a href="http://hicksdesign.co.uk/" target="_blank">Hicksdesign</a></strong></p>
<p><strong>大尺寸：</strong> 三栏式侧边栏<br />
<strong>小尺寸：</strong> 两栏式侧边栏（中间栏沉入左侧栏）<br />
<strong>更小尺寸：</strong> 一栏式侧边栏（右侧栏移至 Logo 右方）<br />
<strong>最小尺寸：</strong> 没有侧边栏（Logo 和右侧栏移至顶部，另一个侧边栏移至底部）</p>
<p><img src="http://www.mangguo.org/wp-content/uploads/2010/08/hicksdesign.jpg" alt="screen capture" /></p>
<p><strong><a href="http://colly.com/">Colly</a></strong></p>
<p>根据浏览器可视区域的尺寸，布局在一栏式、两栏式和四栏式之间切换。</p>
<p><img src="http://www.mangguo.org/wp-content/uploads/2010/08/colly.jpg" alt="screen capture" /></p>
<p><strong><a href="http://www.alistapart.com/d/responsive-web-design/ex/ex-site-FINAL.html" target="_blank">A List Apart</a></strong></p>
<p><strong>大尺寸：</strong>导航在顶部，一排图片<br />
<strong>中尺寸：</strong>导航在左侧，三列图片<br />
<strong>小尺寸：</strong>导航在顶部，Logo 没有背景图片，三列图片</p>
<p><img src="http://www.mangguo.org/wp-content/uploads/2010/08/alistapart.jpg" alt="screen capture" /></p>
<p><strong><a href="http://teegallery.com/" target="_blank">Tee Gallery</a></strong></p>
<p>这个和上述 Colly 案例非常相似，但是不同之处在于 Tee Gallery 中的图片会随着窗口尺寸变化弹性地自适应。这里的技巧是使用百分比宽度，而不使用固定像素宽度。</p>
<p><img src="http://www.mangguo.org/wp-content/uploads/2010/08/teegallery.jpg" alt="screen capture" /></p>
<p><strong>总结</strong></p>
<p>请记住：拥有优化过的移动版样式表并不意味着移动版网站的优化。真正的移动设备优化，图片和标记语言也必须被缩减到最小，<a href="http://www.mangguo.org/tag/media-queries/">Media queries</a> 目的是为设计表现，而不是优化。</p>
<p>英文原稿：<a href="http://www.webdesignerwall.com/tutorials/css3-media-queries/" target="_blank">CSS3 Media Queries | WebDesignerWall</a><br />
翻译整理：<a href="../css3-media-queries" target="_blank">CSS3 Media Queries，媒介设备查询 | 芒果</a></p>
<h3  class="related_post_title">推荐阅读</h3><ul class="related_post"><li><a href="http://www.mangguo.org/beautiful-css3-search-form/" title="漂亮的 CSS3 搜索表单设计">漂亮的 CSS3 搜索表单设计</a> (3)</li><li><a href="http://www.mangguo.org/the-basics-of-css3/" title="CSS3 基本要素概览">CSS3 基本要素概览</a> (0)</li><li><a href="http://www.mangguo.org/10-useful-tools-to-simplify-css3-development/" title="12 款简化 CSS3 开发的实用工具">12 款简化 CSS3 开发的实用工具</a> (12)</li><li><a href="http://www.mangguo.org/how-to-use-css3-pseudo-classes/" title="如何使用 CSS3 伪类">如何使用 CSS3 伪类</a> (7)</li><li><a href="http://www.mangguo.org/pure-css-text-gradients-effect/" title="纯 CSS 实现文本渐变效果">纯 CSS 实现文本渐变效果</a> (9)</li><li><a href="http://www.mangguo.org/13-pure-css-techniques-for-creating-javascript-like-interactions/" title="13+ 模拟 JavaScript 交互效果的纯 CSS 技术">13+ 模拟 JavaScript 交互效果的纯 CSS 技术</a> (4)</li><li><a href="http://www.mangguo.org/css-21-and-css-3-help-cheat-sheets/" title="CSS2.1 和 CSS3 帮助文档及参考手册">CSS2.1 和 CSS3 帮助文档及参考手册</a> (0)</li><li><a href="http://www.mangguo.org/12-excellent-css3-button-and-menu-techniques/" title="12 个优秀的 CSS3 按钮和菜单技巧">12 个优秀的 CSS3 按钮和菜单技巧</a> (0)</li></ul><hr />
© 2010 芒果小站 | <a href="http://www.mangguo.org/css3-media-queries/">固定链接</a> | <a href="http://www.mangguo.org/css3-media-queries/#comments">9 条评论</a> | 标签 <a href="http://www.mangguo.org/tag/css/" rel="tag">CSS</a>, <a href="http://www.mangguo.org/tag/css3/" rel="tag">CSS3</a>, <a href="http://www.mangguo.org/tag/media-queries/" rel="tag">Media Queries</a>, <a href="http://www.mangguo.org/tag/webdesignerwall/" rel="tag">WebDesignerWall</a>]]></content:encoded>
			<wfw:commentRss>http://www.mangguo.org/css3-media-queries/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Minify，合并压缩 JavaScript 和 CSS 文件</title>
		<link>http://www.mangguo.org/minify-merge-compress-javascript-and-css-file/</link>
		<comments>http://www.mangguo.org/minify-merge-compress-javascript-and-css-file/#comments</comments>
		<pubDate>Fri, 30 Jul 2010 10:22:30 +0000</pubDate>
		<dc:creator>芒果</dc:creator>
				<category><![CDATA[前端]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Minify]]></category>

		<guid isPermaLink="false">http://www.mangguo.org/?p=4773</guid>
		<description><![CDATA[对于网站应用而言，HTTP 请求是一件奢侈的事情，所以我们要尽量减少它。减少 HTTP 请求也正是网站性能优化的一个要素。通常通过手工合并会带来大量的维护问题。所以能交给机器做的就让机器来做吧。 之前有心的网友可能会发现，芒果的 CSS 并非一般的样式表引入方式，而是像下面这样： &#60;link href="/min/b=wp-content/themes/mangguo/css&#38;f=reset.css,mangguo.min.css" rel="stylesheet" /&#62; 这就是使用 Minify 方案后的结果。那究竟 Minify 是什么？ “Minify 可以按需对 JavaScript 以及 CSS 文件进行合并、压缩以及缓存，以加快页面的载入速度。而安装 Minify 则极其简单，只需在网站根目录下上传程序目录即可。” 我们不妨来简单分解一下芒果这个怪异的 CSS 文件，首先通过访问根目录下的 minify 目录 (/min/) ，以参数形式指定文件目录 (参数 b)，配置需要压缩合并的 CSS 单文件 (参数 f)，然后动态输出独立的伪 CSS 文件。以芒果为例： 整站共有 reset.css、mangguo.min.css 两个样式文件。放置于 WordPress 对应当前主题的 CSS 目录下，那么基准 URL 指定为： b=wp-content/themes/mangguo/css 文件列表指定为： f=reset.css,mangguo.min.css 参数之间通过 &#38; 符号连接。也可以不指定基准 URL，而缺省 [...]]]></description>
			<content:encoded><![CDATA[<p>对于网站应用而言，HTTP 请求是一件奢侈的事情，所以我们要尽量减少它。减少 HTTP 请求也正是网站性能优化的一个要素。通常通过手工合并会带来大量的维护问题。所以能交给机器做的就让机器来做吧。</p>
<p>之前有心的网友可能会发现，<a href="http://www.mangguo.org/">芒果</a>的 <a href="http://www.mangguo.org/tag/css/">CSS</a> 并非一般的样式表引入方式，而是像下面这样：</p>
<pre>&lt;link href="/min/b=wp-content/themes/mangguo/css&amp;f=reset.css,mangguo.min.css" rel="stylesheet" /&gt;</pre>
<p>这就是使用 Minify 方案后的结果。那究竟 Minify 是什么？</p>
<p>“Minify 可以按需对 <a href="http://www.mangguo.org/tag/javascript/">JavaScript</a> 以及 <a href="http://www.mangguo.org/tag/css/">CSS</a> 文件进行合并、压缩以及缓存，以加快页面的载入速度。而安装 Minify 则极其简单，只需在网站根目录下上传程序目录即可。”</p>
<p>我们不妨来简单分解一下芒果这个怪异的 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css">CSS</a></span> 文件，首先通过访问根目录下的 minify 目录 (/min/) ，以参数形式指定文件目录 (参数 b)，配置需要压缩合并的 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css">CSS</a></span> 单文件 (参数 f)，然后动态输出独立的伪 <a href="http://www.mangguo.org/tag/css/">CSS</a> 文件。以芒果为例：</p>
<p>整站共有 reset.css、mangguo.min.css 两个样式文件。放置于 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/wordpress">WordPress</a></span> 对应当前主题的 <a href="http://www.mangguo.org/tag/css/">CSS</a> 目录下，那么基准 URL 指定为：</p>
<pre>b=wp-content/themes/mangguo/css</pre>
<p>文件列表指定为：</p>
<pre>f=reset.css,mangguo.min.css</pre>
<p>参数之间通过 &amp; 符号连接。也可以不指定基准 URL，而缺省 b 参数直接配置文件组合：</p>
<pre>&lt;link href="/min/f=wp-content/themes/mangguo/css/reset.css,wp-content/themes/mangguo/css/mangguo.min.css" rel="stylesheet" /&gt;</pre>
<p>当然 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/javascript">JavaScript</a></span> 文件的压缩合并原理和 <span class='bm_keywordlink'><a href="http://www.mangguo.org/tag/css">CSS</a></span> 是一致的。</p>
<p>项目托管地址：<a href="http://code.google.com/p/minify" target="_blank">http://code.google.com/p/minify</a></p>
<h3  class="related_post_title">推荐阅读</h3><ul class="related_post"><li><a href="http://www.mangguo.org/quick-transform-css-font-unicode-format/" title="快速转换 CSS 字体 Unicode 编码">快速转换 CSS 字体 Unicode 编码</a> (20)</li><li><a href="http://www.mangguo.org/13-pure-css-techniques-for-creating-javascript-like-interactions/" title="13+ 模拟 JavaScript 交互效果的纯 CSS 技术">13+ 模拟 JavaScript 交互效果的纯 CSS 技术</a> (4)</li><li><a href="http://www.mangguo.org/pure-html-clocks-using-javascript-css-rotation/" title="使用 JavaScript 和 CSS Rotation 的纯 HTML 时钟">使用 JavaScript 和 CSS Rotation 的纯 HTML 时钟</a> (2)</li><li><a href="http://www.mangguo.org/closure-compiler-compression-still-compression/" title="Closure Compiler，压缩！还是压缩！">Closure Compiler，压缩！还是压缩！</a> (5)</li><li><a href="http://www.mangguo.org/yuicompressor-powerful-js-css-code-compressor/" title="YUICompressor，强大的前端代码压缩工具">YUICompressor，强大的前端代码压缩工具</a> (1)</li><li><a href="http://www.mangguo.org/simple-page-loading-effect/" title="简单的页面加载 (Loading) 效果">简单的页面加载 (Loading) 效果</a> (4)</li><li><a href="http://www.mangguo.org/a-javascript-fill-in-the-blank/" title="一道 JavaScript 填空题">一道 JavaScript 填空题</a> (1)</li><li><a href="http://www.mangguo.org/inexplicable-javascript-string-line/" title="莫名其妙的 JavaScript 字符串换行">莫名其妙的 JavaScript 字符串换行</a> (7)</li></ul><hr />
© 2010 芒果小站 | <a href="http://www.mangguo.org/minify-merge-compress-javascript-and-css-file/">固定链接</a> | <a href="http://www.mangguo.org/minify-merge-compress-javascript-and-css-file/#comments">12 条评论</a> | 标签 <a href="http://www.mangguo.org/tag/css/" rel="tag">CSS</a>, <a href="http://www.mangguo.org/tag/javascript/" rel="tag">JavaScript</a>, <a href="http://www.mangguo.org/tag/minify/" rel="tag">Minify</a>]]></content:encoded>
			<wfw:commentRss>http://www.mangguo.org/minify-merge-compress-javascript-and-css-file/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>CSS 左右两栏自适应布局</title>
		<link>http://www.mangguo.org/css-two-column-adaptation-layout/</link>
		<comments>http://www.mangguo.org/css-two-column-adaptation-layout/#comments</comments>
		<pubDate>Sun, 13 Jun 2010 17:18:03 +0000</pubDate>
		<dc:creator>芒果</dc:creator>
				<category><![CDATA[前端]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>

		<guid isPermaLink="false">http://www.mangguo.org/?p=4447</guid>
		<description><![CDATA[昨天在项目中遇到的一个 CSS 左右两栏自适应布局问题，做了个简单的演示稿，以作备份。 场景一：文字围绕 芒果 &#8211; mangguo.org 芒果 &#8211; mangguo.org 芒果 &#8211; mangguo.org 芒果 &#8211; mangguo.org 芒果 &#8211; mangguo.org 芒果 &#8211; mangguo.org 芒果 &#8211; mangguo.org 芒果 &#8211; mangguo.org 芒果 &#8211; mangguo.org 芒果 &#8211; mangguo.org 芒果 &#8211; mangguo.org 这种情况比较普遍，无论左侧容器是否定宽，只需对左侧设置左浮动即可实现文字围绕效果： float:left; 场景二：右侧往下撑开 芒果 &#8211; mangguo.org 芒果 &#8211; mangguo.org 芒果 &#8211; mangguo.org 芒果 &#8211; mangguo.org 芒果 &#8211; mangguo.org [...]]]></description>
			<content:encoded><![CDATA[<p>昨天在项目中遇到的一个 <a href="http://www.mangguo.org/css-two-column-adaptation-layout">CSS 左右两栏自适应布局</a>问题，做了个简单的演示稿，以作备份。</p>
<p><strong>场景一：文字围绕</strong></p>
<div style="background: none repeat scroll 0% 0% gray; width: 500px;">
<div style="background: red; float: left;">芒果 &#8211; mangguo.org</div>
<div style="background: green;">芒果 &#8211; mangguo.org 芒果 &#8211; mangguo.org 芒果 &#8211; mangguo.org 芒果 &#8211; mangguo.org 芒果 &#8211; mangguo.org 芒果 &#8211; mangguo.org 芒果 &#8211; mangguo.org 芒果 &#8211; mangguo.org 芒果 &#8211; mangguo.org 芒果 &#8211; mangguo.org</div>
</div>
<p>这种情况比较普遍，无论左侧容器是否定宽，只需对左侧设置左浮动即可实现文字围绕效果：</p>
<pre>float:left;</pre>
<p><strong>场景二：右侧往下撑开</strong></p>
<div style="background: none repeat scroll 0% 0% gray; width: 500px;">
<div style="background: red; float: left;">芒果 &#8211; mangguo.org</div>
<div style="background: green; overflow: auto; zoom: 1;">芒果 &#8211; mangguo.org 芒果 &#8211; mangguo.org 芒果 &#8211; mangguo.org 芒果 &#8211; mangguo.org 芒果 &#8211; mangguo.org 芒果 &#8211; mangguo.org 芒果 &#8211; mangguo.org 芒果 &#8211; mangguo.org 芒果 &#8211; mangguo.org 芒果 &#8211; mangguo.org</div>
</div>
<p>如果右侧需要往下撑开，仅仅左侧浮动是不够的，右侧容器需要设置溢出自动：</p>
<pre>overflow:auto;</pre>
<p>但 IE6 下无效，当然首先想到的是触发 hasLayout，那就简单加个 zoom 属性吧：</p>
<pre>zoom:1;</pre>
<p>可以发现，左右容器均无预设宽度，这样做的好处是实现了两栏内容的自适应。好了，多说无益，就这样吧。</p>
<h3  class="related_post_title">推荐阅读</h3><ul class="related_post"><li><a href="http://www.mangguo.org/hr-tag-create-horizontal-separator/" title="使用 &lt;hr&gt; 标签创建水平分隔线">使用 &lt;hr&gt; 标签创建水平分隔线</a> (3)</li><li><a href="http://www.mangguo.org/multi-element-round-corner-button/" title="多层元素嵌套的圆角按钮">多层元素嵌套的圆角按钮</a> (10)</li><li><a href="http://www.mangguo.org/css-border-collapse-hover-effect/" title="CSS 边框重叠鼠标悬停效果">CSS 边框重叠鼠标悬停效果</a> (18)</li><li><a href="http://www.mangguo.org/pure-html-clocks-using-javascript-css-rotation/" title="使用 JavaScript 和 CSS Rotation 的纯 HTML 时钟">使用 JavaScript 和 CSS Rotation 的纯 HTML 时钟</a> (2)</li><li><a href="http://www.mangguo.org/data-uri-preliminary-exploration-and-automation/" title="Data URI 初探及其自动化">Data URI 初探及其自动化</a> (0)</li><li><a href="http://www.mangguo.org/thin-border-table-browser-compatible-writing-method/" title="细线表格的浏览器兼容写法">细线表格的浏览器兼容写法</a> (4)</li><li><a href="http://www.mangguo.org/modularize-html-css-and-image/" title="模块化之 HTML CSS 以及图片">模块化之 HTML CSS 以及图片</a> (6)</li><li><a href="http://www.mangguo.org/web-development-and-designer-info-manual-part-one/" title="Web 开发与设计师速查手册大全（上）">Web 开发与设计师速查手册大全（上）</a> (4)</li></ul><hr />
© 2010 芒果小站 | <a href="http://www.mangguo.org/css-two-column-adaptation-layout/">固定链接</a> | <a href="http://www.mangguo.org/css-two-column-adaptation-layout/#comments">1 条评论</a> | 标签 <a href="http://www.mangguo.org/tag/css/" rel="tag">CSS</a>, <a href="http://www.mangguo.org/tag/html/" rel="tag">HTML</a>]]></content:encoded>
			<wfw:commentRss>http://www.mangguo.org/css-two-column-adaptation-layout/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>纯 CSS 实现文本渐变效果</title>
		<link>http://www.mangguo.org/pure-css-text-gradients-effect/</link>
		<comments>http://www.mangguo.org/pure-css-text-gradients-effect/#comments</comments>
		<pubDate>Sun, 23 May 2010 02:06:08 +0000</pubDate>
		<dc:creator>芒果</dc:creator>
				<category><![CDATA[前端]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[Nettuts]]></category>
		<category><![CDATA[Webkit]]></category>

		<guid isPermaLink="false">http://www.mangguo.org/?p=4106</guid>
		<description><![CDATA[随着 CSS 的最新进展，我们现在能够获得强大的造型技术，包括容器阴影，圆角，背景渐变等等。但我们目前没有能力在文本上运用渐变效果。幸运的是，在这篇纯 CSS 实现文本渐变效果使用一些花招，我们可以迫使代码呈现这种效果 &#8211; 至少在 Webkit 引擎浏览器中如此！ 芒果前天的文章 Google Font API，在网页上使用个性字体 谈到了 Google Font API，今天顺道试试手。 最终代码： &#60;!DOCTYPE html&#62; &#60;html lang="en"&#62; &#60;head&#62; &#60;meta charset="utf-8"&#62; &#60;title&#62;Text Gradients&#60;/title&#62; &#60;link href='http://fonts.googleapis.com/css?family=Lobster' rel='stylesheet' type='text/css'&#62; &#60;style&#62; body { background: #292929; padding: 1em; } h1 { position: relative; font-size: 70px; margin-top: 0; font-family: 'Lobster', helvetica, arial; } h1 a { [...]]]></description>
			<content:encoded><![CDATA[<p>随着<a href="http://www.mangguo.org/tag/css/"> CSS</a> 的最新进展，我们现在能够获得强大的造型技术，包括容器阴影，圆角，背景渐变等等。但我们目前没有能力在文本上运用渐变效果。幸运的是，在这篇<a href="http://www.mangguo.org/pure-css-text-gradients-effect">纯 CSS 实现文本渐变效果</a>使用一些花招，我们可以迫使代码呈现这种效果 &#8211; 至少在 <a href="http://www.mangguo.org/tag/webkit/">Webkit</a> 引擎浏览器中如此！</p>
<p><a href="http://www.mangguo.org/">芒果</a>前天的文章 <a href="http://www.mangguo.org/google-font-api-use-personalized-font-on-web-page/">Google  Font API，在网页上使用个性字体</a> 谈到了 <a href="http://www.mangguo.org/tag/google/">Google</a> Font API，今天顺道试试手。</p>
<p><img src="http://www.mangguo.org/wp-content/uploads/2010/05/css-text-gradients.jpg" alt="css-text-gradients" width="590" height="205" /></p>
<p><strong>最终代码：</strong></p>
<pre>&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;
&lt;head&gt;
	&lt;meta charset="utf-8"&gt;
	&lt;title&gt;Text Gradients&lt;/title&gt;
	&lt;link href='http://fonts.googleapis.com/css?family=Lobster' rel='stylesheet' type='text/css'&gt;
	&lt;style&gt;
	body {
		background: #292929;
		padding: 1em;
	}
	h1 {
		position: relative;
		font-size: 70px;
		margin-top: 0;
		font-family: 'Lobster', helvetica, arial;
	}
	h1 a {
		text-decoration: none;
		color: #666;
		position: absolute;

		-webkit-mask-image: -webkit-gradient(linear, left top, left bottom, from(rgba(0,0,0,1)), color-stop(50%, rgba(0,0,0,.5)), to(rgba(0,0,0,1)));
	}
	h1:after {
		content : 'Hello World';
		color: #d6d6d6;
		text-shadow: 0 1px 0 white;
	}
	&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
     &lt;h1&gt; &lt;a href="#"&gt; Hello World &lt;/a&gt; &lt;/h1&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>这个方法来自 <a href="http://nicewebtype.com/notes/2009/07/24/pure-css-text-gradient-no-pngs/" target="_blank">NiceWebType.com</a> 网站，你可以访问它学习更多东西。</p>
<p>英文原稿：<a href="http://net.tutsplus.com/tutorials/html-css-techniques/quick-tip-pure-css-text-gradients/" target="_blank">Quick Tip: Pure CSS Text Gradients | Nettuts+</a><br />
翻译整理：<a href="../pure-css-text-gradients-effect" target="_blank">纯 CSS 实现文本渐变效果 | 芒果</a></p>
<h3  class="related_post_title">推荐阅读</h3><ul class="related_post"><li><a href="http://www.mangguo.org/10-useful-tools-to-simplify-css3-development/" title="12 款简化 CSS3 开发的实用工具">12 款简化 CSS3 开发的实用工具</a> (12)</li><li><a href="http://www.mangguo.org/how-to-use-css3-pseudo-classes/" title="如何使用 CSS3 伪类">如何使用 CSS3 伪类</a> (7)</li><li><a href="http://www.mangguo.org/css3-media-queries/" title="CSS3 Media Queries，媒介设备查询">CSS3 Media Queries，媒介设备查询</a> (9)</li><li><a href="http://www.mangguo.org/13-pure-css-techniques-for-creating-javascript-like-interactions/" title="13+ 模拟 JavaScript 交互效果的纯 CSS 技术">13+ 模拟 JavaScript 交互效果的纯 CSS 技术</a> (4)</li><li><a href="http://www.mangguo.org/css-21-and-css-3-help-cheat-sheets/" title="CSS2.1 和 CSS3 帮助文档及参考手册">CSS2.1 和 CSS3 帮助文档及参考手册</a> (0)</li><li><a href="http://www.mangguo.org/beautiful-css3-search-form/" title="漂亮的 CSS3 搜索表单设计">漂亮的 CSS3 搜索表单设计</a> (3)</li><li><a href="http://www.mangguo.org/12-excellent-css3-button-and-menu-techniques/" title="12 个优秀的 CSS3 按钮和菜单技巧">12 个优秀的 CSS3 按钮和菜单技巧</a> (0)</li><li><a href="http://www.mangguo.org/css3-please-instant-result/" title="CSS3 Please! CSS3 即时预览体验">CSS3 Please! CSS3 即时预览体验</a> (3)</li></ul><hr />
© 2010 芒果小站 | <a href="http://www.mangguo.org/pure-css-text-gradients-effect/">固定链接</a> | <a href="http://www.mangguo.org/pure-css-text-gradients-effect/#comments">9 条评论</a> | 标签 <a href="http://www.mangguo.org/tag/css/" rel="tag">CSS</a>, <a href="http://www.mangguo.org/tag/css3/" rel="tag">CSS3</a>, <a href="http://www.mangguo.org/tag/nettuts/" rel="tag">Nettuts</a>, <a href="http://www.mangguo.org/tag/webkit/" rel="tag">Webkit</a>]]></content:encoded>
			<wfw:commentRss>http://www.mangguo.org/pure-css-text-gradients-effect/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>13+ 模拟 JavaScript 交互效果的纯 CSS 技术</title>
		<link>http://www.mangguo.org/13-pure-css-techniques-for-creating-javascript-like-interactions/</link>
		<comments>http://www.mangguo.org/13-pure-css-techniques-for-creating-javascript-like-interactions/#comments</comments>
		<pubDate>Sat, 22 May 2010 04:25:11 +0000</pubDate>
		<dc:creator>芒果</dc:creator>
				<category><![CDATA[前端]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Web Design Ledger]]></category>

		<guid isPermaLink="false">http://www.mangguo.org/?p=4089</guid>
		<description><![CDATA[在用户界面这一块，使用 JavaScript 总能创造出丰富强大的交互效果。但只需一点想象力和创造力，仅仅通过 CSS 也可以实现相同类型的效果。以下是 13+ 模拟 JavaScript 交互效果的纯 CSS 技术，使我们不再用单一的方式实现需要的交互。你会发现，这些技术有些是非常有用的，而有些则证明能用纯 CSS 更为简单地实现。 如何使用纯 CSS 创建宝丽来相册 使用 CSS3 创建 coda 效果的气泡 使用 CSS 创建折叠菜单 如何使用 CSS3 创建图像画廊 纯 CSS3 悬停选项卡 使用 CSS 创建类 JQuery 幻灯切换 如何用 CSS 创建 Lightbox 弹出对话框 纯 CSS 数据表 CSS 气泡效果 CSS 图片切换 纯 CSS 折线图 CSS3 表单提示 纯 CSS 时间线 [...]]]></description>
			<content:encoded><![CDATA[<p>在用户界面这一块，使用 <a href="http://www.mangguo.org/tag/javascript/">JavaScript</a> 总能创造出丰富强大的交互效果。但只需一点想象力和创造力，仅仅通过 <a href="http://www.mangguo.org/tag/css/">CSS</a> 也可以实现相同类型的效果。以下是 <a href="13-pure-css-techniques-for-creating-javascript-like-interactions">13+ 模拟 JavaScript 交互效果的纯 CSS 技术</a>，使我们不再用单一的方式实现需要的交互。你会发现，这些技术有些是非常有用的，而有些则证明能用纯 <a href="http://www.mangguo.org/tag/css/">CSS</a> 更为简单地实现。</p>
<p><strong><a href="http://line25.com/tutorials/how-to-create-a-pure-css-polaroid-photo-gallery" target="_blank">如何使用纯 CSS 创建宝丽来相册</a></strong></p>
<p><a href="http://line25.com/tutorials/how-to-create-a-pure-css-polaroid-photo-gallery" target="_blank"><img src="http://www.mangguo.org/wp-content/uploads/2010/05/css_only_5.jpg" alt="css only" /></a></p>
<p><strong><a href="http://www.admixweb.com/2010/05/12/creating-a-bubble-coda-style-with-css3/" target="_blank">使用 CSS3 创建 coda 效果的气泡</a></strong></p>
<p><a href="http://www.admixweb.com/2010/05/12/creating-a-bubble-coda-style-with-css3/" target="_blank"><img src="http://www.mangguo.org/wp-content/uploads/2010/05/css_only_1.jpg" alt="css only" /></a></p>
<p><strong><a href="http://www.fofronline.com/2009-06/accordion-using-only-css/" target="_blank">使用 CSS 创建折叠菜单</a></strong></p>
<p><a href="http://www.fofronline.com/2009-06/accordion-using-only-css/" target="_blank"><img src="http://www.mangguo.org/wp-content/uploads/2010/05/css_only_8.jpg" alt="css only" /></a></p>
<p><strong><a href="http://www.admixweb.com/2010/03/08/how-to-create-a-fancy-image-gallery-with-css3/" target="_blank">如何使用 CSS3 创建图像画廊</a></strong></p>
<p><a href="http://www.admixweb.com/2010/03/08/how-to-create-a-fancy-image-gallery-with-css3/" target="_blank"><img src="http://www.mangguo.org/wp-content/uploads/2010/05/css_only_9.jpg" alt="css only" /></a></p>
<p><strong><a href="http://www.kamikazemusic.com/quick-tips/css3-hover-tabs-without-javascript/" target="_blank">纯 CSS3 悬停选项卡</a></strong></p>
<p><a href="http://www.kamikazemusic.com/quick-tips/css3-hover-tabs-without-javascript/" target="_blank"><img src="http://www.mangguo.org/wp-content/uploads/2010/05/css_only_10.jpg" alt="css only" /></a></p>
<p><strong><a href="http://www.nealgrosskopf.com/tech/thread.php?pid=45" target="_blank">使用 CSS 创建类 JQuery 幻灯切换</a></strong></p>
<p><a href="http://www.nealgrosskopf.com/tech/thread.php?pid=45" target="_blank"><img src="http://www.mangguo.org/wp-content/uploads/2010/05/css_only_3.jpg" alt="css only" /></a></p>
<p><strong><a href="http://carsonified.com/blog/design/css/how-to-create-a-valid-non-javascript-lightbox/" target="_blank">如何用 CSS 创建 Lightbox 弹出对话框</a></strong></p>
<p><a href="http://carsonified.com/blog/design/css/how-to-create-a-valid-non-javascript-lightbox/" target="_blank"><img src="http://www.mangguo.org/wp-content/uploads/2010/05/css_only_2.jpg" alt="css only" /></a></p>
<p><strong><a href="http://cssglobe.com/post/1272/pure-css-data-chart" target="_blank">纯 CSS 数据表</a></strong></p>
<p><a href="http://cssglobe.com/post/1272/pure-css-data-chart" target="_blank"><img src="http://www.mangguo.org/wp-content/uploads/2010/05/css_only_4.jpg" alt="css only" /></a></p>
<p><strong><a href="http://aext.net/2009/11/bubble-effect-with-css/" target="_blank">CSS 气泡效果</a></strong></p>
<p><a href="http://aext.net/2009/11/bubble-effect-with-css/" target="_blank"><img src="http://www.mangguo.org/wp-content/uploads/2010/05/css_only_7.jpg" alt="css only" /></a></p>
<p><strong><a href="http://css-tricks.com/video-screencasts/82-css-image-switcher/" target="_blank">CSS 图片切换</a></strong></p>
<p><a href="http://css-tricks.com/video-screencasts/82-css-image-switcher/" target="_blank"><img src="http://www.mangguo.org/wp-content/uploads/2010/05/css_only_11.jpg" alt="css only" /></a></p>
<p><strong><a href="http://cssglobe.com/post/4175/pure-css-line-graph" target="_blank">纯 CSS 折线图</a></strong></p>
<p><a href="http://cssglobe.com/post/4175/pure-css-line-graph" target="_blank"><img src="http://www.mangguo.org/wp-content/uploads/2010/05/css_only_6.jpg" alt="css only" /></a></p>
<p><strong><a href="http://www.skyrocketlabs.com/articles/css3-web-form-hints.php" target="_blank">CSS3 表单提示</a></strong></p>
<p><a href="http://www.skyrocketlabs.com/articles/css3-web-form-hints.php" target="_blank"><img src="http://www.mangguo.org/wp-content/uploads/2010/05/css_only_12.jpg" alt="css only" /></a></p>
<p><strong><a href="http://mattbango.com/notebook/web-development/pure-css-timeline/" target="_blank">纯 CSS 时间线</a></strong></p>
<p><a href="http://mattbango.com/notebook/web-development/pure-css-timeline/" target="_blank"><img src="http://www.mangguo.org/wp-content/uploads/2010/05/css_only_13.jpg" alt="css only" /></a></p>
<p>英文原稿：<a href="http://webdesignledger.com/tutorials/13-pure-css-techniques-for-creating-javascript-like-interactions" target="_blank">13 Pure CSS Techniques for Creating JavaScript-like Interactions | Web Design Ledger</a><br />
翻译整理：<a href="../google-font-api-use-personalized-font-on-web-page" target="_blank">13+ 模拟 JavaScript 交互效果的纯 CSS 技术 | 芒果</a></p>
<h3  class="related_post_title">推荐阅读</h3><ul class="related_post"><li><a href="http://www.mangguo.org/12-excellent-css3-button-and-menu-techniques/" title="12 个优秀的 CSS3 按钮和菜单技巧">12 个优秀的 CSS3 按钮和菜单技巧</a> (0)</li><li><a href="http://www.mangguo.org/10-useful-tools-to-simplify-css3-development/" title="12 款简化 CSS3 开发的实用工具">12 款简化 CSS3 开发的实用工具</a> (12)</li><li><a href="http://www.mangguo.org/how-to-use-css3-pseudo-classes/" title="如何使用 CSS3 伪类">如何使用 CSS3 伪类</a> (7)</li><li><a href="http://www.mangguo.org/quick-transform-css-font-unicode-format/" title="快速转换 CSS 字体 Unicode 编码">快速转换 CSS 字体 Unicode 编码</a> (20)</li><li><a href="http://www.mangguo.org/css3-media-queries/" title="CSS3 Media Queries，媒介设备查询">CSS3 Media Queries，媒介设备查询</a> (9)</li><li><a href="http://www.mangguo.org/minify-merge-compress-javascript-and-css-file/" title="Minify，合并压缩 JavaScript 和 CSS 文件">Minify，合并压缩 JavaScript 和 CSS 文件</a> (12)</li><li><a href="http://www.mangguo.org/pure-css-text-gradients-effect/" title="纯 CSS 实现文本渐变效果">纯 CSS 实现文本渐变效果</a> (9)</li><li><a href="http://www.mangguo.org/css-21-and-css-3-help-cheat-sheets/" title="CSS2.1 和 CSS3 帮助文档及参考手册">CSS2.1 和 CSS3 帮助文档及参考手册</a> (0)</li></ul><hr />
© 2010 芒果小站 | <a href="http://www.mangguo.org/13-pure-css-techniques-for-creating-javascript-like-interactions/">固定链接</a> | <a href="http://www.mangguo.org/13-pure-css-techniques-for-creating-javascript-like-interactions/#comments">4 条评论</a> | 标签 <a href="http://www.mangguo.org/tag/css/" rel="tag">CSS</a>, <a href="http://www.mangguo.org/tag/css3/" rel="tag">CSS3</a>, <a href="http://www.mangguo.org/tag/javascript/" rel="tag">JavaScript</a>, <a href="http://www.mangguo.org/tag/web-design-ledger/" rel="tag">Web Design Ledger</a>]]></content:encoded>
			<wfw:commentRss>http://www.mangguo.org/13-pure-css-techniques-for-creating-javascript-like-interactions/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

