<?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>CSSrainbow.cn &#187; (X)HTML / CSS</title>
	<atom:link href="http://cssrainbow.cn/category/tutorials/xhtml-css/feed" rel="self" type="application/rss+xml" />
	<link>http://cssrainbow.cn</link>
	<description>Sharing what I know and learn about (X)HTML,CSS,JavaScript,MooTools,Dojo,jQuery,PHP,ASP,Java,Python and ∞.</description>
	<lastBuildDate>Sun, 05 Sep 2010 15:08:02 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>图像替换技术的最佳实战</title>
		<link>http://cssrainbow.cn/tutorials/xhtml-css/1375.html</link>
		<comments>http://cssrainbow.cn/tutorials/xhtml-css/1375.html#comments</comments>
		<pubDate>Wed, 01 Sep 2010 16:08:39 +0000</pubDate>
		<dc:creator>Rainbow</dc:creator>
				<category><![CDATA[(X)HTML / CSS]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[CSS技巧]]></category>

		<guid isPermaLink="false">http://cssrainbow.cn/?p=1375</guid>
		<description><![CDATA[什么是图像替换技术？你可以像平常一样将文本添加到文档中，然后使用CSS隐藏文本并在它的位置上显示一个背景图片。这样的话，搜索引擎仍然可以搜索HTML文本，而且如果禁用CSS，文本仍然会显示。]]></description>
			<content:encoded><![CDATA[<p>HTML文本的优点就是非常有利于SEO和页面设计人员的处理与控制。同时，可访问性（Accessibility）的思想也应该重点考虑一下。然而，在某些情况不得不使用文本的图像，就像淘宝商城中每个模块的标题，出于品牌策略的要求，需要使用特殊的字体，就应用了图像替换方法。<br />
虽然我们提倡尽可能的使用HTML文本而不使用文本的图像，但是由于字体选择的有限，浏览器对CSS3的支持情况也有限，为了达到某些特殊的视觉效果，为了树立品牌，图像替换技术是一个好的选择。</p>
<h2>什么是图像替换技术</h2>
<p>你可以像平常一样将文本添加到文档中，然后使用CSS隐藏文本并在它的位置上显示一个背景图片。</p>
<p><span id="more-1375"></span></p>
<p>这样的话，搜索引擎仍然可以搜索HTML文本，而且如果禁用CSS，文本仍然会显示。</p>
<p class="icaption_left"><img src="http://cssrainbow.cn/dw-content/demo29/image-replacement.jpg" width="358" height="517"  alt="image-replacement,图片替换"/></p>
<p>&nbsp;</p>
<p>
<p><a href="http://cssrainbow.cn/dw-content/demo29/image-replacement-test.html" class="button"><span>案例演示</span></a></p>
</p>
<h2>我们的选择</h2>
<p>看了这个概念，我们马上就会想到一些比较流行的图片替换技术。如果我们抛开浏览器不谈，考虑到其它显示终端的话，有些图片替换技术是不可行的。</p>
<p>接下来，我们就看一下各种各样图片替换技术。</p>
<h3>display:none</h3>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="css" style="font-family:monospace;">h3<span style="color: #00AA00;">&#123;</span><span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span><span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000; font-style: italic;">title_bg.png</span><span style="color: #00AA00;">&#41;</span> <span style="color: #993333;">no-repeat</span> <span style="color: #cc66cc;">0</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>height<span style="color: #00AA00;">:</span><span style="color: #933;">20px</span><span style="color: #00AA00;">;</span><span style="color: #00AA00;">&#125;</span>
h3 span<span style="color: #00AA00;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">display</span><span style="color: #00AA00;">:</span><span style="color: #993333;">none</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<h3>visibility:hidden</h3>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="css" style="font-family:monospace;">h3<span style="color: #00AA00;">&#123;</span><span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span><span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000; font-style: italic;">title_bg.png</span><span style="color: #00AA00;">&#41;</span> <span style="color: #993333;">no-repeat</span> <span style="color: #cc66cc;">0</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>height<span style="color: #00AA00;">:</span><span style="color: #933;">20px</span><span style="color: #00AA00;">;</span><span style="color: #00AA00;">&#125;</span>
h3 span<span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">visibility</span><span style="color: #00AA00;">:</span><span style="color: #993333;">hidden</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<h3>position:absolute;</h3>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="css" style="font-family:monospace;">h3<span style="color: #00AA00;">&#123;</span><span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span><span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000; font-style: italic;">title_bg.png</span><span style="color: #00AA00;">&#41;</span> <span style="color: #993333;">no-repeat</span> <span style="color: #cc66cc;">0</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>height<span style="color: #00AA00;">:</span><span style="color: #933;">20px</span><span style="color: #00AA00;">;</span><span style="color: #00AA00;">&#125;</span>
h3 span<span style="color: #00AA00;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">position</span><span style="color: #00AA00;">:</span><span style="color: #993333;">absolute</span><span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">left</span><span style="color: #00AA00;">:</span> <span style="color: #933;">-9999px</span><span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">top</span><span style="color: #00AA00;">:</span> <span style="color: #933;">-9999px</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<h3>overflow:hidden;</h3>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="css" style="font-family:monospace;">h3<span style="color: #00AA00;">&#123;</span><span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span><span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000; font-style: italic;">title_bg.png</span><span style="color: #00AA00;">&#41;</span> <span style="color: #993333;">no-repeat</span> <span style="color: #cc66cc;">0</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>height<span style="color: #00AA00;">:</span><span style="color: #933;">20px</span><span style="color: #00AA00;">;</span><span style="color: #00AA00;">&#125;</span>
h3 span<span style="color: #00AA00;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">display</span><span style="color: #00AA00;">:</span><span style="color: #993333;">block</span><span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span><span style="color: #933;">0px</span><span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">overflow</span><span style="color: #00AA00;">:</span><span style="color: #993333;">hidden</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<h3> text-indent:-9999px;</h3>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="css" style="font-family:monospace;">h3<span style="color: #00AA00;">&#123;</span><span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span><span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000; font-style: italic;">title_bg.png</span><span style="color: #00AA00;">&#41;</span> <span style="color: #993333;">no-repeat</span> <span style="color: #cc66cc;">0</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>height<span style="color: #00AA00;">:</span><span style="color: #933;">20px</span><span style="color: #00AA00;">;</span><span style="color: #00AA00;">&#125;</span>
h3<span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">text-indent</span><span style="color: #00AA00;">:</span><span style="color: #933;">-9999px</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<h3>line-height</h3>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="css" style="font-family:monospace;">h3<span style="color: #00AA00;">&#123;</span><span style="color: #000000; font-weight: bold;">background-position</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span> <span style="color: #933;">-143px</span><span style="color: #00AA00;">;</span><span style="color: #00AA00;">&#125;</span>
h3 span<span style="color: #00AA00;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span><span style="color: #933;">20px</span><span style="color: #00AA00;">;</span> 
    <span style="color: #000000; font-weight: bold;">overflow</span><span style="color: #00AA00;">:</span><span style="color: #993333;">hidden</span><span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">line-height</span><span style="color: #00AA00;">:</span> <span style="color: #933;">60px</span><span style="color: #00AA00;">;</span><span style="color: #808080; font-style: italic;">/*行高最好设3倍或以上*/</span>
    <span style="color: #000000; font-weight: bold;">display</span><span style="color: #00AA00;">:</span><span style="color: #993333;">block</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<h2>最佳实战，就是它</h2>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="css" style="font-family:monospace;">&nbsp;
<span style="color: #6666ff;">.screen-reader-text</span><span style="color: #00AA00;">&#123;</span><span style="color: #000000; font-weight: bold;">position</span><span style="color: #00AA00;">:</span><span style="color: #993333;">absolute</span><span style="color: #00AA00;">;</span>left<span style="color: #00AA00;">:</span> <span style="color: #933;">-9999px</span><span style="color: #00AA00;">;</span>top<span style="color: #00AA00;">:</span> <span style="color: #933;">-9999px</span><span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<p>&nbsp;</p>
<p>
<p><a href="http://cssrainbow.cn/dw-content/demo29/image-replacement-test.html" class="button"><span>案例演示</span></a></p>
</p>
<blockquote>
<p><strong>推荐文章: </strong> 《<a href="http://demo.adriancheng.name/css_demo/hide/">{ hide_text } CSS文字隐藏总结报告</a>》</p>
</blockquote>
<h3  class="related_post_title">相关日志 »</h3><ul class="related_post"><li>2009/04/29 -- <a href="http://cssrainbow.cn/tutorials/xhtml-css/172.html" title="84个超级有用的CSS技巧与资源">84个超级有用的CSS技巧与资源</a> (0)</li><li>2010/08/17 -- <a href="http://cssrainbow.cn/tutorials/xhtml-css/1360.html" title="IE CSS Bug Table">IE CSS Bug Table</a> (1)</li><li>2010/04/15 -- <a href="http://cssrainbow.cn/code-snippets/css-code-snippets/1234.html" title="CSS中区别IE6, IE7和 IE8  的4个非常有用的字符">CSS中区别IE6, IE7和 IE8  的4个非常有用的字符</a> (1)</li><li>2010/03/09 -- <a href="http://cssrainbow.cn/tutorials/xhtml-css/1147.html" title="IE CSS Bugs 列表和解决方法 ">IE CSS Bugs 列表和解决方法 </a> (0)</li><li>2010/03/04 -- <a href="http://cssrainbow.cn/tutorials/xhtml-css/1137.html" title="Web 设计中的 5 个最具争议性的话题">Web 设计中的 5 个最具争议性的话题</a> (0)</li><li>2010/01/26 -- <a href="http://cssrainbow.cn/articles/resources/1033.html" title="网页设计中的面包屑导航：实例和最佳做法">网页设计中的面包屑导航：实例和最佳做法</a> (0)</li><li>2010/01/25 -- <a href="http://cssrainbow.cn/tutorials/xhtml-css/961.html" title="Sexy Bookmarks 效果，基于CSS">Sexy Bookmarks 效果，基于CSS</a> (0)</li><li>2010/01/25 -- <a href="http://cssrainbow.cn/articles/web-roundups/941.html" title="15个富有创意的Web表单设计,基于CSS">15个富有创意的Web表单设计,基于CSS</a> (0)</li><li>2010/01/14 -- <a href="http://cssrainbow.cn/tutorials/xhtml-css/882.html" title="实现侧边栏滚动的多种技术，基于CSS,jQuery or MooTools ">实现侧边栏滚动的多种技术，基于CSS,jQuery or MooTools </a> (1)</li><li>2009/11/03 -- <a href="http://cssrainbow.cn/tutorials/xhtml-css/797.html" title="征服，高级CSS选择器(收藏)">征服，高级CSS选择器(收藏)</a> (1)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://cssrainbow.cn/tutorials/xhtml-css/1375.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>IE CSS Bug Table</title>
		<link>http://cssrainbow.cn/tutorials/xhtml-css/1360.html</link>
		<comments>http://cssrainbow.cn/tutorials/xhtml-css/1360.html#comments</comments>
		<pubDate>Tue, 17 Aug 2010 14:51:53 +0000</pubDate>
		<dc:creator>Rainbow</dc:creator>
				<category><![CDATA[(X)HTML / CSS]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[CSS Bugs]]></category>
		<category><![CDATA[CSS Hack]]></category>
		<category><![CDATA[CSS技巧]]></category>

		<guid isPermaLink="false">http://cssrainbow.cn/?p=1360</guid>
		<description><![CDATA[我在以前的《IE CSS Bugs 列表和解决方法 »》文章中，整理和翻译过HasLayout.net的IE CSS Bug,就是为了方便日常的开发查阅。
不过，官方也存在一点不足和错误，来自Alipay前端同仁已经为我们纠正了一些来自官方的错误，并重新整理成表，非常方便查阅。
我这儿就直接收藏了。]]></description>
			<content:encoded><![CDATA[<p>我在以前的《<a href="http://cssrainbow.cn/tutorials/xhtml-css/1147.html" rel="bookmark" title="Permanent Link to IE CSS Bugs 列表和解决方法">IE CSS Bugs 列表和解决方法  »</a>》文章中，整理和翻译过<a href="http://haslayout.net/">HasLayout.net</a>的IE CSS Bug,就是为了方便日常的开发查阅。</p>
<p>不过，官方也存在一点不足和错误，来自Alipay前端同仁已经为我们纠正了一些来自官方的错误，并重新整理成表，非常方便查阅。</p>
<p>我这儿就直接收藏了。</p>
<blockquote>
<p>Alipay UED 《<a href="http://ued.alipay.com/2010/07/ie-beat-the-holy-canon-css-bug-table/">打败 IE 的葵花宝典：CSS Bug Table</a>》
  </p>
</blockquote>
<p><img src="http://cssrainbow.cn/dw-content/ie_bug_table.jpg" width="500" height="163" alt="ie_bug_table"/></p>
<p><span id="more-1360"></span></p>
<h2>IE CSS Bug Table :</h2>
<table width="625" border="0" cellpadding="0" cellspacing="0">
<thead>
<tr>
<th height="35" colspan="2">问题</th>
<th width="86">浏览器</th>
<th width="93">DEMO</th>
<th width="214">解决方法</th>
</tr>
</thead>
<tbody>
<tr>
<td colspan="5"><strong>Hacking Rules: </strong></p>
<p><span style="font-family: georgia; font-style: italic; font-variant: normal; font-weight: normal; font-size: 12px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none;">property:all-ie\9; property:gte-ie8\0;*property:lte-ie7; +property:ie7; _property:ie6;</span></p>
</td>
</tr>
<tr>
<td width="32">1</td>
<td width="200">input[button | submit] 不能用 margin:0 auto; 居中</td>
<td>IE8</td>
<td><a href="http://haslayout.net/demos/No-Auto-Margin-Center-on-Buttons-Inconsistency-Demo.html">bug</a> | <a href="http://haslayout.net/demos/No-Auto-Margin-Center-on-Buttons-Inconsistency-Fixed-Demo-CS.html">fixed</a></td>
<td>为input添加width</td>
</tr>
<tr>
<td>2</td>
<td>body{overflow:hidden;}没有去掉滚动条</td>
<td>IE6/7</td>
<td><a href="http://haslayout.net/demos/Document-Scrollbars-Overflow-Inconsistency-Demo.html">bug</a> | <a href="http://haslayout.net/demos/Document-Scrollbars-Overflow-Inconsistency-Fixed-Demo.html">fixed</a></td>
<td>设置html{overflow:hidden;}</td>
</tr>
<tr>
<td>3</td>
<td>hasLayout的标签拥有高度</td>
<td>IE6/7</td>
<td><a href="http://haslayout.net/demos/Empty-Element-Height-Bug-Demo.html">bug</a> | <a href="http://haslayout.net/demos/Empty-Element-Height-Bug-Fixed-Demo.html">fixed</a></td>
<td>*height:0;<br />
_overflow:hidden;</td>
</tr>
<tr>
<td>4</td>
<td>form&gt;[hasLayout]元素有margin-left时，子元素中的[input | textarea] 出现2×margin-left</td>
<td>IE6/7</td>
<td><a href="http://haslayout.net/demos/Form-Control-Double-Margin-Bug-Demo.html">bug</a> | <a href="http://haslayout.net/demos/Form-Control-Double-Margin-Bug-Fixed-Demo.html">fixed</a></td>
<td>form &gt; [hasLayout 元素]{margin-left:宽度;}<br />
form div{*margin-left:宽度÷2;}</td>
</tr>
<tr>
<td>5</td>
<td>当border-width有1条&lt;边3条时被设置成dotted时，1px的边dotted显示成dashed</td>
<td>IE7</td>
<td><a href="http://haslayout.net/demos/IE7-1px-Dotted-Border-Appears-As-Dashed-Bug-Demo.html">bug</a> | <a href="http://haslayout.net/demos/IE7-1px-Dotted-Border-Appears-As-Dashed-Bug-Fixed-Demo.html">fixed</a></td>
<td>不在同一个元素上使用不同宽度的 dotted</td>
</tr>
<tr>
<td>6</td>
<td>当子元素有position:relative的时候，父元素设置overflow:[hidden|auto]相当于给子元素设置了position:visible;</td>
<td>IE6/7</td>
<td><a href="http://haslayout.net/demos/relative-overflow-failure-bug-demo.html">bug</a> | <a href="http://haslayout.net/demos/relative-overflow-failure-bug-demo-fixed.html">fixed</a></td>
<td>给父元素设置position:relative;</td>
</tr>
<tr>
<td>7</td>
<td>:hover伪类不能改变有position:absolute的子级元素的left/top值</td>
<td>IE7</td>
<td><a href="http://haslayout.net/demos/ie7-broken-hover-absolute-bug-demo.html">bug</a> | <a href="http://haslayout.net/demos/ie7-broken-hover-absolute-bug-demo-fixed.html">fixed</a></td>
<td>把top/left的值设置成除0%外的所有百分值；或添加一个margin-[所有方向]除0外的所有值，包括0%</td>
</tr>
<tr>
<td>8</td>
<td>:focus + selector {} 选择器失效</td>
<td>IE8</td>
<td><a href="http://haslayout.net/demos/ignored-focus-bug-demo.html">bug</a> | <a href="http://haslayout.net/demos/ignored-focus-bug-demo-fixed.html">fixed</a></td>
<td>在失效选择器后面添加一个空选择器, :focus{}</td>
</tr>
<tr>
<td>9</td>
<td>列表中混乱的浮动：在list中浮动图片时，图片出现溢出正常位置；或没有list-style</td>
<td>IE8</td>
<td><a href="http://haslayout.net/demos/image-float-bullet-chaos-demo.html">bug</a> | <a href="http://haslayout.net/demos/image-float-bullet-chaos-demo-fixed.html">fixed</a></td>
<td>用背景图片替换list-style</td>
</tr>
<tr>
<td>10</td>
<td>th 不会自动继承上级元素的 text-align</td>
<td>IE8</td>
<td><a href="http://haslayout.net/demos/non-inherited-th-text-align-bug-demo.html">bug</a> | <a href="http://haslayout.net/demos/non-inherited-th-text-align-bug-demo-fixed.html">fixed</a></td>
<td>给th添加text-align:inherit;</td>
</tr>
<tr>
<td>11</td>
<td>样式(包括link/style/@import(link)) 最多允许个为是：32</td>
<td>IE6-8</td>
<td>─ 常识</td>
<td>99.99%的情况下，不会遇到</td>
</tr>
<tr>
<td>12</td>
<td>:hover 时若background-color为#fff, 失效</td>
<td>IE7</td>
<td><a href="http://haslayout.net/demos/hover-white-background-ignore-bug.html">bug</a> | <a href="http://haslayout.net/demos/hover-white-background-ignore-bug-fixed-demo.html">fixed</a></td>
<td>把background-color改成background。或者，非#fff || #ffffff</td>
</tr>
<tr>
<td>13</td>
<td>忽略&#8217;&gt;&#8217;后有注释的选择器：selector&gt; /**/ selector{}</td>
<td>IE7</td>
<td><a href="http://haslayout.net/demos/ie7-child-selector-comment-bug-demo.html">bug</a> | <a href="http://haslayout.net/demos/ie7-child-selector-comment-bug-demo.html">fixed</a></td>
<td>官方DEMO有误</td>
</tr>
<tr>
<td>14</td>
<td>* html</td>
<td>IE6</td>
<td>─ HACK</td>
<td>只对IE6有效</td>
</tr>
<tr>
<td>15</td>
<td>PNG图片中的颜色和背景颜色的值相同，但显示不同</td>
<td>IE6-7</td>
<td><a href="http://haslayout.net/demos/png-color-mismatch-demo.html">bug</a> | <a href="http://haslayout.net/demos/png-color-mismatch-demo-fixed.html">fixed</a></td>
<td>利用 <a href="http://pmt.sourceforge.net/pngcrush/">pngcrush</a> 去除图片中的 Gamma profiles</td>
</tr>
<tr>
<td>16</td>
<td>margin:0 auto; 不能让block元素水平居中</td>
<td>IE6-8</td>
<td><a href="http://haslayout.net/demos/no-auto-margin-center-pseudo-bug-demo.html">bug</a> | <a href="http://haslayout.net/demos/no-auto-margin-center-pseudo-bug-demo-fixed.html">fixed</a></td>
<td>给block元素添加一个width</td>
</tr>
<tr>
<td>17</td>
<td>使用伪类 :first-line | :first-letter, 属性的值中出现!important 会使属性失效</td>
<td>IE8</td>
<td><a href="http://haslayout.net/demos/ie8-first-line-important-bug.html">bug</a> | <a href="http://haslayout.net/demos/ie8-first-line-important-bug-fixed.html">fixed</a></td>
<td>!important is evil, don&#8217;t use it anymore</td>
</tr>
<tr>
<td>18</td>
<td>:first-letter 失效</td>
<td>IE6</td>
<td><a href="http://haslayout.net/demos/ie6-first-letter-ignore-bug.html">bug</a> | <a href="http://haslayout.net/demos/ie6-first-letter-ignore-bug-fixed.html">fixed</a></td>
<td>把 :first-letter 移到离{}最近的地方，如 h1, p:first-letter{}，而非 p:first-letter h1{}</td>
</tr>
<tr>
<td>19</td>
<td>Position:absolute元素中，a display:block, 在非:hover时只有文本可点击</td>
<td>IE6/7</td>
<td><a href="http://haslayout.net/demos/partial-click-v2-demo.html">bug</a> | <a href="http://haslayout.net/demos/partial-click-v2-demo-fixed.html">fixed</a></td>
<td>给a添加background, 如果背景透明，使用background:url(&#8216;任何页面中已经缓存的文件链接&#8217;)，不推荐background：url(#)[<a href="http://haslayout.net/css/Partial-Click-Bug-v2">官方的解决方法</a>]，因为会增加一下HTTP请求</td>
</tr>
<tr>
<td>20</td>
<td>float列表元素不水平对齐：li不设置float，a设置display:block;float:[方向]，li不水平对齐</td>
<td>IE6/7</td>
<td><a href="http://haslayout.net/demos/staircase-bug-demo.html">bug</a> | <a href="http://haslayout.net/demos/staircase-bug-demo-fixed.html">fixed</a></td>
<td>给li设置display:inline 或 float:[方向]</td>
</tr>
<tr>
<td>21</td>
<td>dt, dd, li 背景失效</td>
<td>IE6</td>
<td><a href="http://haslayout.net/demos/disappearing-list-background-bug-demo.html">bug</a> | <a href="http://haslayout.net/demos/disappearing-list-background-bug-demo-fixed.html">fixed</a></td>
<td>dt, dd, li{position:relative;}</td>
</tr>
<tr>
<td>22</td>
<td>&lt;noscript /&gt;元素的样式在启用javascript的情况下显示了样式</td>
<td>IE6-8</td>
<td><a href="http://haslayout.net/demos/noscript-ghost-bug-demo.html">bug</a> | <a href="http://haslayout.net/demos/noscript-ghost-bug-demo-fixed.html">fixed</a></td>
<td>利用js给&lt;noscript /&gt;添加display:none;</td>
</tr>
<tr>
<td>23</td>
<td>使用filter处理的透明背景图片的透明部分不可点</td>
<td>IE6-8</td>
<td><a href="http://haslayout.net/demos/no-transparency-click-bug-demo.html">bug</a> | <a href="http://haslayout.net/demos/no-transparency-click-bug-demo-fixed.html">fixed</a></td>
<td>把background:none变成background:url(&#8216;链接&#8217;)，链接到本身和图片之外的任何文件</td>
</tr>
<tr>
<td>24</td>
<td>li内元素偏离 baseline 向下拉</td>
<td>IE8</td>
<td><a href="http://haslayout.net/demos/list-drop-shift-bug-demo.html">bug</a> | <a href="http://haslayout.net/demos/list-drop-shift-bug-demo-fixed.html">fixed</a></td>
<td>给li设置display:inline 或 float:[方向]</td>
</tr>
<tr>
<td>25</td>
<td>列表中li的list-style不显示</td>
<td>IE6/7</td>
<td><a href="http://haslayout.net/demos/no_li_ol_bullets_demo.html">bug</a> | <a href="http://haslayout.net/demos/no_li_ol_bullets_demo_fixed.html">fixed</a></td>
<td>给li添加margin-left，留空间来显示（不要加在ul上）</td>
</tr>
<tr>
<td>26</td>
<td>图片不能垂直居中</td>
<td>IE6/7</td>
<td><a href="http://haslayout.net/css/No-line-height-Vertical-Center-on-Images-Bug">bug/fixed</a></td>
<td>添加一个空标签，并赋给&#8221;Layout&#8221;, 比如display:inline-block;</td>
</tr>
<tr>
<td>27</td>
<td>不能自定义指针样式</td>
<td>IE6-8</td>
<td><a href="http://haslayout.net/demos/cursor/a/demo.html">bug</a> | <a href="http://haslayout.net/demos/cursor/a/demo_fixed.html">fixed</a></td>
<td>给指针文件设置绝对路径</td>
</tr>
<tr>
<td>28</td>
<td>背景溢出，拖动滚动条后显示正常</td>
<td>IE6</td>
<td><a href="http://haslayout.net/demos/backgroundleak_demo.html">bug</a> | <a href="http://haslayout.net/demos/backgroundleak_demo_ls_fixed.html">fixed</a></td>
<td>给父元素添加overflow:hidden防止溢出，并赋予hasLayout,如果添加_zoom:1;</td>
</tr>
<tr>
<td>29</td>
<td>高度超过height定义的高</td>
<td>IE6</td>
<td><a href="http://haslayout.net/css/Expanding-Height-Bug">bug/fixed</a></td>
<td>添加_overflow:hidden;(推荐)或者_font-size:0;</td>
</tr>
<tr>
<td>30</td>
<td>宽度超过width定义的宽</td>
<td>IE6</td>
<td><a href="http://haslayout.net/css/Expanding-Width-Bug">bug/fixed</a></td>
<td>添加_overflow:hidden;</td>
</tr>
<tr>
<td>31</td>
<td>双倍边距</td>
<td>IE6</td>
<td>─ 常识</td>
<td>添加display:inline到float元素中</td>
</tr>
<tr>
<td>32</td>
<td>margin负值隐藏：hasLayout的父元素内的非hasLayout元素，使用负边距时，超出父元素部分不可见</td>
<td>IE6/7</td>
<td><a href="http://haslayout.net/css/Negative-Margin-Bug">bug/fixed</a></td>
<td>去掉父元素的hasLayout；或者赋hasLayout给子元素,并添加position:relative;</td>
</tr>
<tr>
<td>33</td>
<td>给两个浮动元素的某中一个的文字设定为斜体，另一个元素下拉在有斜体文字元素的下面</td>
<td>IE6</td>
<td><a href="http://haslayout.net/css/Italics-Float-Bug">bug/fixed</a></td>
<td>给有斜体文字的元素添加overflow:hidden;</td>
</tr>
<tr>
<td>35</td>
<td>3px 间隔：在float元素后的元素，会有3px间隔</td>
<td>IE6</td>
<td><a href="http://haslayout.net/css/3px-Gap-Bug-aka-Text-Jog-Bug">bug/fixed</a></td>
<td>因为是确切的3px，所以，用&#8221;暴力破解&#8221;吧，比如_margin-left:-3px;</td>
</tr>
<tr>
<td>35</td>
<td>text-align 影响块级元素</td>
<td>IE6/7</td>
<td><a href="http://haslayout.net/css/Text-Align-Bug">bug/fixed</a></td>
<td>整理你的float；或者分开设置text-align</td>
</tr>
</tbody>
</table>
<h3  class="related_post_title">相关日志 »</h3><ul class="related_post"><li>2010/03/09 -- <a href="http://cssrainbow.cn/tutorials/xhtml-css/1147.html" title="IE CSS Bugs 列表和解决方法 ">IE CSS Bugs 列表和解决方法 </a> (0)</li><li>2010/09/02 -- <a href="http://cssrainbow.cn/tutorials/xhtml-css/1375.html" title="图像替换技术的最佳实战">图像替换技术的最佳实战</a> (2)</li><li>2010/04/15 -- <a href="http://cssrainbow.cn/code-snippets/css-code-snippets/1234.html" title="CSS中区别IE6, IE7和 IE8  的4个非常有用的字符">CSS中区别IE6, IE7和 IE8  的4个非常有用的字符</a> (1)</li><li>2010/03/02 -- <a href="http://cssrainbow.cn/tutorials/xhtml-css/1130.html" title="IE条件注释与CSS Hacks">IE条件注释与CSS Hacks</a> (0)</li><li>2009/06/16 -- <a href="http://cssrainbow.cn/tutorials/xhtml-css/347.html" title="5种解决ie6下png图片透明的方法">5种解决ie6下png图片透明的方法</a> (0)</li><li>2009/04/29 -- <a href="http://cssrainbow.cn/tutorials/xhtml-css/172.html" title="84个超级有用的CSS技巧与资源">84个超级有用的CSS技巧与资源</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://cssrainbow.cn/tutorials/xhtml-css/1360.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>IE CSS Bugs 列表和解决方法</title>
		<link>http://cssrainbow.cn/tutorials/xhtml-css/1147.html</link>
		<comments>http://cssrainbow.cn/tutorials/xhtml-css/1147.html#comments</comments>
		<pubDate>Tue, 09 Mar 2010 05:03:14 +0000</pubDate>
		<dc:creator>Rainbow</dc:creator>
				<category><![CDATA[(X)HTML / CSS]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[CSS Bugs]]></category>
		<category><![CDATA[CSS Hack]]></category>
		<category><![CDATA[CSS技巧]]></category>
		<category><![CDATA[IE6]]></category>

		<guid isPermaLink="false">http://cssrainbow.cn/?p=1147</guid>
		<description><![CDATA[我们在开发中我们常会在IE中遇到很多莫名的bug，尤其是老态龙钟的IE6浏览器。为了提高我们的开发效率，需要经常总结，整理工作中遇到的问题。我们在网络上找到的IE Bugs 资料是零散的。不过，在老外的 <a href="http://haslayout.net/css/">http://haslayout.net/css/ </a>网站上,他就系统的总结了IE的一些Bugs，分享一下。]]></description>
			<content:encoded><![CDATA[<p>我们在开发中我们常会在IE中遇到很多莫名的bug，尤其是老态龙钟的IE6浏览器。为了提高我们的开发效率，需要经常总结，整理工作中遇到的问题。我们在网络上找到的IE Bugs 资料是零散的。不过，在老外的 <a href="http://haslayout.net/css/">http://haslayout.net/css/ </a>网站上,他就系统的总结了IE的一些Bugs，分享一下。</p>
<p>目前，这个网站上包含了 46 个“普通的Bug” ， 5个“布局方面的Bug” ，6 个“可以绕开的Bug” 以及 1 个“IE崩溃的Bug”，所有的这些Bug有58个指南和70个解决方法。</p>
<p>这个列表目前更新到：2009年8月19日，周三 ，15时38分47秒。</p>
<p>最新发表的教程：该网站包含44 IE6 bugs, 28 IE7 bugs 和19 IE8 bugs.</p>
<p><span id="more-1147"></span></p>
<p>下面是所有的bug列表，你可以点击每个BUG名的链接查看更详细的说明和解决方法。</p>
<h2><strong>IE的CSS Bug：普通Bug</strong></h2>
<p>这部分 <abbr title="Internet Explorer">IE</abbr> 的 bug 是比较普通的无法归到其它种类，或是同时属于多个种类的Bug。 </p>
<table border="1" width="550">
<caption>
    General Internet Explorer <abbr title="Cascading Style Sheets">CSS</abbr> Bugs<br />
  </caption>
<thead>
<tr>
<th width="182">解决方法名称</th>
<th width="123">IE的版本</th>
<th width="223">描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<p><a title="'Image Label Focus Bug' tutorial" href="http://haslayout.net/css/Image-Label-Focus-Bug">Image Label Focus Bug</a></p>
<p>(图片label bug)</p>
</td>
<td>IE8, IE7, IE6</td>
<td>当label中有img的时候无法触发点击选中form元素事件.</td>
</tr>
<tr>
<td>
<p><a title="'No Auto-Margin Center on Buttons Inconsistency' tutorial" href="http://haslayout.net/css/No-Auto-Margin-Center-on-Buttons-Inconsistency">No Auto-Margin Center   on Buttons Inconsistency</a></p>
<p>(设置margin auto的button没有居中)</p>
</td>
<td>IE8</td>
<td>如果给像button这样的标签（如button  input[type=&quot;button&quot;] input[type=&quot;submit&quot;]）设置{ display: block;  margin-left: auto; margin-right: auto; }如果不设置宽度的话无法居中。</td>
</tr>
<tr>
<td>
<p><a title="'Incorrect Float Shrink-Wrap Bug' tutorial" href="http://haslayout.net/css/Incorrect-Float-Shrink-Wrap-Bug">Incorrect Float Shrink-Wrap   Bug</a></p>
<p>(不正确的浮动伸展布局)</p>
</td>
<td>IE7, IE6</td>
<td>连续浮动的元素并且设置clear属性没法自动伸展。</td>
</tr>
<tr>
<td>
<p><a title="'Document Scrollbars Overflow Inconsistency' tutorial" href="http://haslayout.net/css/Document-Scrollbars-Overflow-Inconsistency">Document Scrollbars   Overflow Inconsistency</a></p>
<p>（文档滚动bug）</p>
</td>
<td>IE7, IE6</td>
<td>不在html标签上设置overflow或许会影响到body上面的overflow。</td>
</tr>
<tr>
<td>
<p><a title="'Float Squeeze Weird Gap Bug' tutorial" href="http://haslayout.net/css/Float-Squeeze-Weird-Gap-Bug">Float Squeeze Weird Gap Bug</a></p>
<p>（连续浮动元素bug）</p>
</td>
<td>IE7, IE6</td>
<td>A gap appears between last and second last floated   elements that are stacked vertically.</td>
</tr>
<tr>
<td>
<p><a title="'Float Squeeze Duplicate Last Character Bug' tutorial" href="http://haslayout.net/css/Float-Squeeze-Duplicate-Last-Character-Bug">Float Squeeze Duplicate   Last Character Bug</a></p>
<p>（连续浮动字符出现重复字符）</p>
</td>
<td>IE7, IE6</td>
<td>这个和上面的解决方案都差不多，它是通过加一个宽度，而这个是通过给浮动字符加一个position:relative;</td>
</tr>
<tr>
<td>
<p><a title="'Empty Element Height Bug' tutorial" href="http://haslayout.net/css/Empty-Element-Height-Bug">Empty Element Height Bug</a></p>
<p>（空元素高度bug）</p>
</td>
<td>IE7, IE6</td>
<td>有layout的空元素获得了高度      </td>
</tr>
<tr>
<td>
<p><a title="'Form Control Double Margin Bug' tutorial" href="http://haslayout.net/css/Form-Control-Double-Margin-Bug">Form Control Double Margin   Bug</a></p>
<p>（表单元素双margin bug）</p>
</td>
<td>IE7, IE6</td>
<td>input和textarea或许会继承父元素的水平的margin</td>
</tr>
<tr>
<td>
<p><a title="'IE7 1px Dotted Border Appears As Dashed Bug' tutorial" href="http://haslayout.net/css/IE7-1px-Dotted-Border-Appears-As-Dashed-Bug">IE7 1px Dotted Border   Appears As Dashed Bug</a></p>
<p>（ie7的1px dotted 边框变成dashed边框的bug）</p>
</td>
<td>IE7</td>
<td>当设置了1px dotted边框后，有一个边框的宽度大于1px<br />
      的话其它为1px边框会变为dashed的样式</td>
</tr>
<tr>
<td>
<p><a title="'Relative Overflow Failure Bug' tutorial" href="http://haslayout.net/css/Relative-Overflow-Failure-Bug">Relative Overflow Failure Bug</a></p>
<p>（overflow bug）</p>
</td>
<td>IE7, IE6</td>
<td>当设置了overflow:hidden或auto的元素，如果子元素设置了相对定位，overflow就不起作用了，<br />
      表现的是visible的样式，解决方法是给父元素加一个position:relative;</td>
</tr>
<tr>
<td>
<p><a title="'IE7 'Broken' :hover Absolute Bug' tutorial" href="http://haslayout.net/css/IE7-Broken-hover-Absolute-Bug">IE7 &quot;Broken&quot; :hover Absolute   Bug</a></p>
<p>（ie7的坏的:hover 绝对定位bug）</p>
</td>
<td>IE7</td>
<td>当子元素设置了absolute并且通过设置left top 等来通过:hover时改变其显示位置时将会不起作用如果他们不再父元素的可视范围内，解决方法是给其加上margin-left:0%;</td>
</tr>
<tr>
<td>
<p><a title="'Button Background Shift On :active Bug' tutorial" href="http://haslayout.net/css/Button-Background-Shift-On-active-Bug">Button Background Shift On   :active Bug</a></p>
<p>（当:active时Button背景偏移）</p>
</td>
<td>IE8</td>
<td>给button设置:active时背景会做偏移，可以通过设置:active时的-ms-background-position-x和-ms-background-position-y来改变这个偏移。</td>
</tr>
<tr>
<td>
<p><a title="'Ignored :focus Bug' tutorial" href="http://haslayout.net/css/Ignored--focus-Bug">Ignored :focus Bug</a></p>
<p>&nbsp;</p>
</td>
<td>IE8</td>
<td>A ruleset, selector of which contains :focus that   is followed by another simple selector, is ignored</td>
</tr>
<tr>
<td>
<p><a title="'Invisible Hover Border Bug' tutorial" href="http://haslayout.net/css/Invisible-Hover-Border-Bug">Invisible Hover Border Bug</a></p>
<p>（:hover边框消失bug）</p>
</td>
<td>IE8</td>
<td>当设置了outline的元素后，再设置:hover的时候，如果设置边框的话，将会不显示</td>
</tr>
<tr>
<td>
<p><a title="'Percentage Padding Margin Bug' tutorial" href="http://haslayout.net/css/Percentage-Padding-Margin-Bug">Percentage Padding Margin Bug</a></p>
<p>（百分比padding垂直margin bug）</p>
</td>
<td>IE8</td>
<td>当父元素设置了百分比的padding，子元素有垂直的margin的时候，<br />
      就好像父元素被设置了margin一样，解决方法是给父元素加一个overflow:hidden/auto</td>
</tr>
<tr>
<td>
<p><a title="'Image Float Bullet Chaos Bug' tutorial" href="http://haslayout.net/css/Image-Float-Bullet-Chaos-Bug">Image Float Bullet Chaos Bug</a></p>
<p>（图片浮动List标记错位bug）</p>
</td>
<td>IE8</td>
<td>当List里面有浮动的image时，List标记显示的位置跑在里面了，可以通过使用背景图片代替List自带的标记来解决。</td>
</tr>
<tr>
<td>
<p><a title="'Non-Inherited TH Text-Align Bug' tutorial" href="http://haslayout.net/css/Non-Inherited-TH-Text-Align-Bug">Non-Inherited TH Text-Align   Bug</a></p>
<p>（TH没有继承Text-Align属性的bug）</p>
</td>
<td>IE8</td>
<td>当给table设置text-align时，TH没有继承样式，可以通过给TH设置text-align:inherit;来解决IE8下这个丑陋的bug。</td>
</tr>
<tr>
<td>
<p><a title="'32 Styles Limitation' tutorial" href="http://haslayout.net/css/32-Styles-Limitation">32 Styles Limitation</a></p>
<p>（32个Style限制）</p>
</td>
<td>IE8, IE7, IE6</td>
<td>在32个”style”方法(style, link, @import)后浏览器会忽略后面的样式</td>
</tr>
<tr>
<td>
<p><a title="'IE7 Child Selector Comment Bug' tutorial" href="http://haslayout.net/css/view?tut=Hover-White-Background-Ignore-Bug" alt="Hover-White-Background-Ignore-Bug">Hover White Background Ignore Bug</a></p>
<p>（白色背景hover bug）</p>
</td>
<td>IE7</td>
<td>background 不会因为 :hover而改变，给hover设置background-color:#ffffff;时，背景不会改变，解决方法是设置background:#ffffff;</td>
</tr>
<tr>
<td><a title="'IE7 Child Selector Comment Bug' tutorial" href="http://haslayout.net/css/view?tut=IE7-Child-Selector-Comment-Bug" alt="IE7-Child-Selector-Comment-Bug">IE7 Child Selector Comment Bug</a></td>
<td>IE7</td>
<td>一个 selector 包含了一个子的selector，如果后面跟着一个注释，则会被完全忽略。</td>
</tr>
<tr>
<td>
<p><a title="'Star HTML Bug' tutorial" href="http://haslayout.net/css/view?tut=Star-HTML-Bug" alt="Star-HTML-Bug">Star HTML Bug</a></p>
<p>（* html bug）</p>
</td>
<td>IE6</td>
<td>* html [selector]在ie6下通常不会被忽略，这个bug通常被用来作IE6的hack使用。</td>
</tr>
<tr>
<td><a title="'IE6 !important Ignore Bug' tutorial" href="http://haslayout.net/css/view?tut=IE6--important-Ignore-Bug" alt="IE6--important-Ignore-Bug">IE6 !important Ignore Bug</a></td>
<td>IE6</td>
<td>!important 关键字会忽略，important之后设置同样的规则后important会被忽略，这个bug也常被用来指定ie6的样式。</td>
</tr>
<tr>
<td>
<p><a title="'PNG Image and Background Color Mismatch' tutorial" href="http://haslayout.net/css/view?tut=PNG-Image-and-Background-Color-Mismatch" alt="PNG-Image-and-Background-Color-Mismatch">PNG Image and Background Color Mismatch</a></p>
<p>（png图片和背景颜色不一致）</p>
</td>
<td>IE8 ,IE7,IE6</td>
<td>设置背景颜色和png图片背景同样的颜色代码最后表现不一致，原来是因为ie支持<a href="http://hsivonen.iki.fi/png-gamma/" target="_blank">“PNG Gamma profiles”</a>，解决方案是通过一个<a href="http://pmt.sourceforge.net/pngcrush/" target="_blank">pngcrush</a>程序来优化图片。而他们本来是一致的。IE认为这是他一个Feature。太可笑了。</td>
</tr>
<tr>
<td><a title="'No Auto Margin Center Pseudo-Bug' tutorial" href="http://haslayout.net/css/view?tut=No-Auto-Margin-Center-Pseudo-Bug" alt="No-Auto-Margin-Center-Pseudo-Bug">No Auto Margin Center Pseudo-Bug</a></td>
<td>IE8 ,IE7,IE6</td>
<td>如果把margins 设置成 `auto` ，IE不会把组件放置在中间的位置。所有的浏览器都会，只有IE不会。给block元素设置margin auto无法居中，出现这种bug的原因通常是没有Doctype，然后触发了ie的quirks mode，加上&lt;!DOCTYPE html&gt;就可以了。</td>
</tr>
<tr>
<td>
<p><a title="':first-line !important Rule Ignore Bug' tutorial" href="http://haslayout.net/css/view?tut=-first-line--important-Rule-Ignore-Bug" alt="-first-line--important-Rule-Ignore-Bug">:first-line !important Rule Ignore Bug</a></p>
<p>(:first-line/:first-letter里的!important会忽略)</p>
</td>
<td>IE8</td>
<td>如果在伪class :first-line 内使用!important，那么其所有定义会被忽略。</td>
</tr>
<tr>
<td><a title="':first-letter Ignore Bug' tutorial" href="http://haslayout.net/css/view?tut=-first-letter-Ignore-Bug" alt="-first-letter-Ignore-Bug">:first-letter Ignore Bug</a></td>
<td>IE6</td>
<td>当:first-letter前面有逗号的时候ie6会忽略这条规则，解决方法是将:first-letter放到最后。</td>
</tr>
<tr>
<td><a title="':first-letter !important Rule Ignore Bug' tutorial" href="http://haslayout.net/css/view?tut=-first-letter--important-Rule-Ignore-Bug" alt="-first-letter--important-Rule-Ignore-Bug">:first-letter !important Rule Ignore Bug</a></td>
<td>IE8</td>
<td>如果在伪class :first-letter内使用!important，那么其所有定义会被忽略。</td>
</tr>
<tr>
<td><a title="'Partial Click Bug v2' tutorial" href="http://haslayout.net/css/view?tut=Partial-Click-Bug-v2" alt="Partial-Click-Bug-v2">Partial Click Bug v2</a></td>
<td>E7,IE6</td>
<td>设置了整个区域是可以点击的，但在IE中只有文本可以点击。</td>
</tr>
<tr>
<td><a title="'Staircase Bug' tutorial" href="http://haslayout.net/css/view?tut=Staircase-Bug" alt="Staircase-Bug">Staircase Bug</a></td>
<td>E7,IE6</td>
<td>浮动的元素排序起来就像一个楼梯。</td>
</tr>
<tr>
<td><a title="'Disappearing List Background Bug' tutorial" href="http://haslayout.net/css/view?tut=Disappearing-List-Background-Bug" alt="Disappearing-List-Background-Bug">Disappearing List Background Bug</a></td>
<td>IE6</td>
<td>B &lt;li&gt;, &lt;dt&gt;, &lt;dd&gt; 没有背景。</td>
</tr>
<tr>
<td><a title="'noscript Ghost Bug' tutorial" href="http://haslayout.net/css/view?tut=noscript-Ghost-Bug" alt="noscript-Ghost-Bug">noscript Ghost Bug</a></td>
<td>IE8,IE7,IE6</td>
<td>&lt;noscript&gt; 标识中只有 borders/background 才有用。</td>
</tr>
<tr>
<td>
<p><a title="'No Transparency Click Bug' tutorial" href="http://haslayout.net/css/view?tut=No-Transparency-Click-Bug" alt="No-Transparency-Click-Bug">No Transparency Click Bug</a></p>
<p>(透明区域无法点击bug)</p>
</td>
<td>IE8,IE7,IE6</td>
<td>背景透明的图片在作为链接时，并且其“filter”被设置成了PNG透明，但其背景还是不可点击。</td>
</tr>
<tr>
<td>
<p><a title="'List Drop Shift Bug' tutorial" href="http://haslayout.net/css/view?tut=List-Drop-Shift-Bug" alt="List-Drop-Shift-Bug">List Drop Shift Bug</a></p>
<p>(List标记偏移)</p>
</td>
<td>IE8</td>
<td>
<p>在&lt;li&gt;中的内容被换行了。</p>
<p>当给list里面的元素设置display和overflow属性后List标记会偏移，解决方法是给里面的元素加一个float:right; width:100%;可以使用ie的条件注释针对ie8</p>
</td>
</tr>
<tr>
<td>
<p><a title="'No Increase on &lt;ol&gt; Numbers Bug' tutorial" href="http://haslayout.net/css/view?tut=No-Increase-on--ol--Numbers-Bug" alt="No-Increase-on--ol--Numbers-Bug">No Increase on &lt;ol&gt; Numbers Bug</a></p>
<p>(ol数字标记不自增)</p>
</td>
<td>IE7,IE6</td>
<td>
<p>&lt;ol&gt; 中的 &lt;li&gt; 列表序号不会增加。</p>
<p>当给li设置宽度时会触发这个bug，解决方法是给li设置display:list-item .</p>
</td>
</tr>
<tr>
<td>
<p><a title="'No Bullets on &lt;ul&gt; and &lt;ol&gt; Bug' tutorial" href="http://haslayout.net/css/view?tut=No-Bullets-on--ul--and--ol--Bug" alt="No-Bullets-on--ul--and--ol--Bug">No Bullets on &lt;ul&gt; and &lt;ol&gt; Bug</a></p>
<p>(ul/ol标记消失bug)</p>
</td>
<td>IE7,IE6</td>
<td>
<p>在&lt;ul&gt; 和 &lt;ol&gt; 中看不到列表序号/数字了。</p>
<p>当ul/ol触发了layout并且有margin-left会触发这个bug，解决方案是给li设置margin-left .</p>
</td>
</tr>
<tr>
<td>
<p><a title="'No line-height Vertical Center on Images Bug' tutorial" href="http://haslayout.net/css/view?tut=No-line-height-Vertical-Center-on-Images-Bug" alt="No-line-height-Vertical-Center-on-Images-Bug">No line-height Vertical Center on Images Bug</a></p>
<p>(图片不垂直居中)</p>
</td>
<td>IE7,IE6</td>
<td>
<p>图片使用line-height 方法不能垂直居中.</p>
<p>当使用line-height来居中图片时在ie6/7下不会生效，解决方法是在img后加一个空白元素如&lt;span&gt;&lt;/span&gt;.</p>
</td>
</tr>
<tr>
<td>
<p><a title="'No Background Image Bug' tutorial" href="http://haslayout.net/css/view?tut=No-Background-Image-Bug" alt="No-Background-Image-Bug">No Background Image Bug</a></p>
<p>(没有背景图片bug)</p>
</td>
<td>IE8,IE7,IE6</td>
<td>
<p>在IE中使用background无法定义背景图.</p>
<p>当使用background的时候如果在url()后没有加空格背景图片就不会显示。</p>
</td>
</tr>
<tr>
<td>
<p><a title="'Custom Cursor Bug' tutorial" href="http://haslayout.net/css/view?tut=Custom-Cursor-Bug" alt="Custom-Cursor-Bug">Custom Cursor Bug</a></p>
<p>(自定义鼠标bug)</p>
</td>
<td>IE8,IE7,IE6</td>
<td>
<p>自定义鼠标不工作.</p>
<p>当自定义鼠标样式的时候，如果url()里面的路径是相对路径的话，ie会认为相对于当前文档而不会出现鼠标样式的图片，解决方法是采用绝对路径。</p>
</td>
</tr>
<tr>
<td>
<p><a title="'Leaking Background Bug' tutorial" href="http://haslayout.net/css/view?tut=Leaking-Background-Bug" alt="Leaking-Background-Bug">Leaking Background Bug</a></p>
<p>(背景溢出bug)</p>
</td>
<td>IE6</td>
<td>
<p>背景从一个元件的内部溢出到外部.</p>
<p>一个容器里面有浮动元素并且通过加一个clear:both的额外div来清除浮动会产生此bug，解决方案就是建议尽量不要通过增加一个  clear:both的div来清除浮动，可以通过在外层加上overflow:hidden;对于ie可以通过加上zoom:1；来触发ie的  layout</p>
</td>
</tr>
<tr>
<td>
<p><a title="'Expanding Height Bug' tutorial" href="http://haslayout.net/css/view?tut=Expanding-Height-Bug" alt="Expanding-Height-Bug">Expanding Height Bug</a></p>
<p>(高度扩展bug)</p>
</td>
<td>IE6</td>
<td>
<p>元件的高度比指定的要长得多。</p>
<p>当高度很窄如小于12px时ie6会扩展高度，解决方法是设置overlfow:hidden或font-size:0;</p>
</td>
</tr>
<tr>
<td>
<p><a title="'Expanding Width Bug' tutorial" href="http://haslayout.net/css/view?tut=Expanding-Width-Bug" alt="Expanding-Width-Bug">Expanding Width Bug</a></p>
<p>(宽度扩展bug)</p>
</td>
<td>IE6</td>
<td>
<p>元件的宽度比指定的要长得多。</p>
<p>当连续英文字符的时候设定宽度不起作用，解决方法是设置overflow:hidden或word-wrap:break-word;</p>
</td>
</tr>
<tr>
<td>
<p><a title="'Double Margin Bug' tutorial" href="http://haslayout.net/css/view?tut=Double-Margin-Bug" alt="Double-Margin-Bug">Double Margin Bug</a></p>
<p>(浮动双margin)</p>
</td>
<td>IE6</td>
<td>
<p>float元件的左和右的空白（margins）被加倍了。</p>
<p>当给一个浮动元素设置margin-left或margin-right时margin加倍，解决方法是加上一条display:inline;</p>
</td>
</tr>
<tr>
<td>
<p><a title="'Negative Margin Bug' tutorial" href="http://haslayout.net/css/view?tut=Negative-Margin-Bug" alt="Negative-Margin-Bug">Negative Margin Bug</a></p>
<p>(负margin bug)</p>
</td>
<td>IE7,IE6 </td>
<td>
<p>如果使用负数来指定页白（margins）里面的元件会被外面的元件所遮挡。</p>
<p>当给一个有layout容器里面的元素设置负marin时内容会被截断，解决方法是不让容器有layout或者给负marin的元素设置position:relative;zoom:1;</p>
</td>
</tr>
<tr>
<td><a title="'Italics Float Bug' tutorial" href="http://haslayout.net/css/view?tut=Italics-Float-Bug" alt="Italics-Float-Bug">Italics Float Bug</a></td>
<td>IE6</td>
<td>float的元件中的字体会被设置成倾斜。</td>
</tr>
<tr>
<td>
<p><a title="'3px Gap Bug aka Text Jog Bug' tutorial" href="http://haslayout.net/css/view?tut=3px-Gap-Bug-aka-Text-Jog-Bug" alt="3px-Gap-Bug-aka-Text-Jog-Bug">3px Gap Bug aka Text Jog Bug</a></p>
<p>(3px间距bug)</p>
</td>
<td>IE6</td>
<td>
<p>下一个float的元件不是有一个3px的空隙，就是被换行了。</p>
<p>当几个连续浮动且有layout的元素排列时会有3px的间距，解决方法就是给这些元素设置3px的负margin或加上overflow:hidden;</p>
</td>
</tr>
<tr>
<td><a title="'Text-Align Bug' tutorial" href="http://haslayout.net/css/view?tut=Text-Align-Bug" alt="Text-Align-Bug">Text-Align Bug</a></td>
<td>
        IE7,IE6
        </td>
<td>
<p>text-align属性会影响整个元件内的所有内容。</p>
<p>当容器外面设置了text-align，如果容器里面有文本和其他block的元素, block的元素也会继承text-align，这是不正确的，解决方法是重新写出合理的有语义的markup，如文本外面加一个p.</p>
</td>
</tr>
</tbody>
</table>
<h2><strong>IE的CSS Bug：布局类 Bug</strong></h2>
<table border="1" width="550">
<caption>
    hasLayout Internet Explorer <abbr title="Cascading Style Sheets">CSS</abbr> Bugs<br />
  </caption>
<thead>
<tr>
<th width="184">解决方法名称</th>
<th width="120">IE的版本</th>
<th width="224">描述</th>
</tr>
</thead>
<tbody>
<tr>
<td><a title="'Scared of Floats Bug' tutorial" href="http://haslayout.net/css/Scared-of-Floats-Bug">Scared of Floats Bug</a></td>
<td>IE7, IE6</td>
<td>elements with layout clear floats instead of going   around floated elements</td>
</tr>
<tr>
<td><a title="'Border Chaos Bug' tutorial" href="http://haslayout.net/css/view?tut=Border-Chaos-Bug" alt="Border-Chaos-Bug">Border Chaos Bug</a></td>
<td>IE6</td>
<td>连框显示是混乱的</td>
</tr>
<tr>
<td><a title="'Sub-Hover Bug' tutorial" href="http://haslayout.net/css/view?tut=Sub-Hover-Bug" alt="Sub-Hover-Bug">Sub-Hover Bug</a></td>
<td>IE6</td>
<td>一些selectors 如 a:hover foo{} 无法正常工作</td>
</tr>
<tr>
<td><a title="'Partial Click Bug' tutorial" href="http://haslayout.net/css/view?tut=Partial-Click-Bug" alt="Partial-Click-Bug">Partial Click Bug</a></td>
<td>IE6</td>
<td>在定义了display: block的链接中(&lt;a&gt;) 只有文本是可以点的。</td>
</tr>
<tr>
<td><a title="'Disappearing Content Bug' tutorial" href="http://haslayout.net/css/view?tut=Disappearing-Content-Bug" alt="Disappearing-Content-Bug">Disappearing Content Bug</a></td>
<td>IE6</td>
<td>当我们滚动窗口的时候，或是最大化最小化窗品的时候，有一些内容会重复显示。</td>
</tr>
</tbody>
</table>
<h2><strong>IE的CSS Bug：不支持的功能</strong></h2>
<table border="1" width="550">
<caption>
    No Support Workarounds<br />
  </caption>
<thead>
<tr>
<th width="182">解决方法名称</th>
<th width="116">IE的版本</th>
<th width="230">描述</th>
</tr>
</thead>
<tbody>
<tr>
<td><a title="'No Child Selector Support Workaround' tutorial" href="http://haslayout.net/css/view?tut=No-Child-Selector-Support-Workaround" alt="No-Child-Selector-Support-Workaround">No Child Selector Support Workaround</a></td>
<td>IE6</td>
<td>子 selector 将被忽略</td>
</tr>
<tr>
<td><a title="'Max-Height Workaround' tutorial" href="http://haslayout.net/css/view?tut=Max-Height-Workaround" alt="Max-Height-Workaround">Max-Height Workaround</a></td>
<td>IE6</td>
<td>max-height 不支持      </td>
</tr>
<tr>
<td><a title="'Max-Width Workaround' tutorial" href="http://haslayout.net/css/view?tut=Max-Width-Workaround" alt="Max-Width-Workaround">Max-Width Workaround</a></td>
<td>IE6</td>
<td>max-width 不支持      </td>
</tr>
<tr>
<td><a title="'Opacity' tutorial" href="http://haslayout.net/css/view?tut=Opacity" alt="Opacity">Opacity</a></td>
<td>IE8，IE7,IE6</td>
<td>opacity 属性不支持      </td>
</tr>
<tr>
<td><a title="'Min-Width Workaround' tutorial" href="http://haslayout.net/css/view?tut=Min-Width-Workaround" alt="Min-Width-Workaround">Min-Width Workaround</a></td>
<td>IE6</td>
<td>min-width 属性<br />
      不支持</p>
<div></div>
</td>
</tr>
<tr>
<td><a title="'Min-Height Workaround' tutorial" href="http://haslayout.net/css/view?tut=Min-Height-Workaround" alt="Min-Height-Workaround">Min-Height Workaround</a></td>
<td>IE6</td>
<td>min-height 属性将被忽略</td>
</tr>
</tbody>
</table>
<h2><strong>IE的CSS Bug：程序崩溃 Bug</strong></h2>
<p>这个BUG可以导致整个 <abbr title="Internet Explorer">IE</abbr> 崩溃.</p>
<table border="1" width="550">
<caption>
Crash Bugs<br />
</caption>
<thead>
<tr>
<th width="184">解决方法名称</th>
<th width="111">IE的版本</th>
<th width="233">描述</th>
</tr>
</thead>
<tbody>
<tr>
<td><a title="'Hover Crash Bug' tutorial" href="http://haslayout.net/css/view?tut=Hover-Crash-Bug" alt="Hover-Crash-Bug">Hover Crash Bug</a></td>
<td>IE6</td>
<td>当你把鼠标移上 :hover 的链接时，浏览器会崩溃</td>
</tr>
</tbody>
</table>
<blockquote>
<p>如果想了解更多的IE CSS Bugs ，请看原文。</p>
<p>原译文来自：<a href="http://haslayout.net/css/">Internet Explorer CSS Bugs</a></p>
</blockquote>
<h3  class="related_post_title">相关日志 »</h3><ul class="related_post"><li>2010/08/17 -- <a href="http://cssrainbow.cn/tutorials/xhtml-css/1360.html" title="IE CSS Bug Table">IE CSS Bug Table</a> (1)</li><li>2010/09/02 -- <a href="http://cssrainbow.cn/tutorials/xhtml-css/1375.html" title="图像替换技术的最佳实战">图像替换技术的最佳实战</a> (2)</li><li>2010/04/15 -- <a href="http://cssrainbow.cn/code-snippets/css-code-snippets/1234.html" title="CSS中区别IE6, IE7和 IE8  的4个非常有用的字符">CSS中区别IE6, IE7和 IE8  的4个非常有用的字符</a> (1)</li><li>2010/03/02 -- <a href="http://cssrainbow.cn/tutorials/xhtml-css/1130.html" title="IE条件注释与CSS Hacks">IE条件注释与CSS Hacks</a> (0)</li><li>2010/02/27 -- <a href="http://cssrainbow.cn/articles/general/1124.html" title="Internet Explorer 6 的盛衰史">Internet Explorer 6 的盛衰史</a> (0)</li><li>2009/06/16 -- <a href="http://cssrainbow.cn/tutorials/xhtml-css/347.html" title="5种解决ie6下png图片透明的方法">5种解决ie6下png图片透明的方法</a> (0)</li><li>2009/04/29 -- <a href="http://cssrainbow.cn/tutorials/xhtml-css/172.html" title="84个超级有用的CSS技巧与资源">84个超级有用的CSS技巧与资源</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://cssrainbow.cn/tutorials/xhtml-css/1147.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Web 设计中的 5 个最具争议性的话题</title>
		<link>http://cssrainbow.cn/tutorials/xhtml-css/1137.html</link>
		<comments>http://cssrainbow.cn/tutorials/xhtml-css/1137.html#comments</comments>
		<pubDate>Thu, 04 Mar 2010 02:05:57 +0000</pubDate>
		<dc:creator>Rainbow</dc:creator>
				<category><![CDATA[(X)HTML / CSS]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[XHTML]]></category>

		<guid isPermaLink="false">http://cssrainbow.cn/?p=1137</guid>
		<description><![CDATA[在 Web 空前繁荣的今天，有关 Web 设计中的各种观点很多会成为话题，有的很快达成一致，有的则一直争议下去，本文讲述 Web 设计中的   5 大经典争议，这些争议从它们诞生的那天起，就被正反两方争得不亦乐乎。]]></description>
			<content:encoded><![CDATA[<p>在 Web 空前繁荣的今天，有关 Web 设计中的各种观点很多会成为话题，有的很快达成一致，有的则一直争议下去，本文讲述 Web 设计中的   5 大经典争议，这些争议从它们诞生的那天起，就被正反两方争得不亦乐乎。</p>
<h3>争议之一：链接是否应该在新窗口打开</h3>
<p><img src="http://line25.com/wp-content/uploads/2010/debates/new-window.jpg" /></p>
<h4>正方:</h4>
<p>外部链接应该始终从新窗口打开，当你浏览一个站点的时候，点击了一个链接，却被带到另外一个站点，你在这个站点的会话也因此丢失，这实在令人恼怒。  因此，站点内的链接可以在现有窗口打开，而站点外链接则应该在新窗口打开。</p>
<h4>反方:</h4>
<p>作为 Web   设计师，我们不该控制用户的行为，一个链接是否在新窗口打开，应该是用户自己的选择。剥夺用户的控制权，在用户的桌面上打开一堆窗口或标签，这才是真正让  人恼怒的事。如果用户想打开新窗口，他们可以自己选择，而对非熟练用户，新窗口让他们丢失了“后退”按钮更让他们无所适从。</p>
<p><span id="more-1137"></span></p>
<h4>和事佬:</h4>
<p>总体来讲，应该避免使用新窗口打开链接，但在某些场合，如打开购物车中的帮助链接，打开一个非 html 文件（如 PDF   文件），应该使用新窗口。为了提高易用性，最好在需要打开新窗口的地方，用一个小图标提示一下。</p>
<h3>争议之二：在链接中应该使用诸如“Click here” 一类的笼统词汇吗？</h3>
<p><img src="http://line25.com/wp-content/uploads/2010/debates/click-here.jpg" /></p>
<h4>正方:</h4>
<p><a href="http://dustincurtis.com/you_should_follow_me_on_twitter.html">事实证明</a>，“Click   here” 比描述性的链接更容易获得点击，因此应该使用该词汇以获得更好的点击率。</p>
<h4>反方:</h4>
<p>“Click here” 一类的链接损害 Web 的易用性，用户在点击之前，只能通过周围的上下文关系猜测这个链接是做什么的。<a href="http://www.w3.org/QA/Tips/noClickHere">Quality guidelines</a> 建议，任何链接文字都应该明确描述该链接的目的。</p>
<h4>和事佬:</h4>
<p>为了提高站点的易用性，可访问性和 SEO 性能，应该始终使用描述性链接。很有趣听到有人说 “Click here”   比描述性链接可以获得更多点击率，不知道那些点击进来的人是不是看两眼就离开了。</p>
<h3>争议之三：是否该继续使用  &lt;b&gt;   和 &lt;i&gt; 两个标签?</h3>
<p><img src="http://line25.com/wp-content/uploads/2010/debates/b-i.jpg" height="200" width="500" /></p>
<p><strong>正方：</strong></p>
<p>如果你仅仅想把一个词设为粗体，而这个词并没有强调表示重要的意思，应该使用 &lt;b&gt; 标签，不该用 &lt;strong&gt;   标签，读屏软件对 &lt;b&gt; 和&lt;i&gt; 标签有不同的发音，而 HTML5   规范中仍包含这两个标签。</p>
<p><strong>反方:</strong></p>
<p>这两个标签的作用是将文字设置为粗体或斜体，从语义角度看，任何装饰性的东西都应该使用 CSS 实现，如果要强调一个词语，应该使用 &lt;strong&gt; 或 &lt;em&gt; 标签。</p>
<p><strong>和事佬：</strong></p>
<p>&lt;b&gt; 和 &lt;i&gt; 标签不应该用于修饰文字的式样，这些视觉的修饰应该交由   CSS 处理。如果要强调一个词汇或语句，应该使用 &lt;strong&gt;   或 &lt;em&gt;   标签。只有在那些没有别的标签可用的场合，才可以考虑 &lt;b&gt;   和 &lt;i&gt; 。</p>
<h3>争议之四：站点 Logo 是否因出现在 &lt;h1&gt; 标签中?</h3>
<p><img src="http://line25.com/wp-content/uploads/2010/debates/h1.jpg" /></p>
<p>
  <strong>正方s:</strong></p>
<p>Logo 不应包围在标题标签中，标题标签应该包含这个页面的标题或描述性内容，这是 SEO   的最佳方式，否则，站点中的每个页的标题岂不是全变成公司名字了？</p>
<p><strong>反方:</strong></p>
<p>一个站点最明显的标志是它的 Logo， 而 &lt;h1&gt;   是一个页面最顶级的标题，将 Logo 包围其中很自然，这样，即使没有 CSS 人们也很容易该明白这个页面的结构。</p>
<p><strong>和事佬:</strong></p>
<p>标题标签的作用是描述内容的层级结构，如果一个站点有一个描述站点内容的标题，应该放在 &lt;h1&gt; 中，否则，第二级结构或描述性的对象，就是 Logo。</p>
<h3>争议之五：是否应该支持 IE6？</h3>
<p><img src="http://line25.com/wp-content/uploads/2010/debates/ie6.jpg" /></p>
<h4>正方:</h4>
<p>IE6 现在仍占有 <a href="http://www.w3schools.com/browsers/browsers_stats.asp">10%</a> 的市场份额（在国内更高-译者注），因此，网站毫无疑问应该支持 IE6。世界上仍然有很多公司的系统仍需使用 IE6   访问，另外，还有很多人根本不知道怎么升级他们的浏览器。</p>
<h4>反方:</h4>
<p>IE6 已经过时，不支持最新的 Web 技术，它给在线用户带来安全隐患，也是众多 Web 开发设计师的噩梦。包括 YouTube   在内的大型站点已经<a href="http://mashable.com/2010/02/23/youtube-ie6/">停止支持 IE6</a>。  你也不例外。</p>
<h4>和事佬:</h4>
<p>IE6 毫无疑问在衰退，随着大公司对它的抛弃，它的死亡可能来得比预期还快，是否支持 IE6 要看的具体情况，可以考虑为 IE6   用户提供最基本的页面格式，而不必为它挣扎。</p>
<p>本文来源：<a href="http://line25.com/articles/top-5-web-design-debates-that-cause-the-most-riots">http://line25.com/articles/top-5-web-design-debates-that-cause-the-most-riots</a></p>
<p>中文编译来源：<a href="http://www.comsharp.com"><strong>锐商企业CMS</strong> 网站内容管理系统</a> 官方网站</p>
<h3  class="related_post_title">相关日志 »</h3><ul class="related_post"><li>2009/09/15 -- <a href="http://cssrainbow.cn/tutorials/xhtml-css/718.html" title="漫画：混乱的标记语言XHTML2/HTML5">漫画：混乱的标记语言XHTML2/HTML5</a> (0)</li><li>2009/08/31 -- <a href="http://cssrainbow.cn/articles/resources/671.html" title="Opera的Web标准课程（推荐）">Opera的Web标准课程（推荐）</a> (1)</li><li>2009/08/19 -- <a href="http://cssrainbow.cn/articles/general/646.html" title="Web前端开发需要掌握的技能(图解)">Web前端开发需要掌握的技能(图解)</a> (0)</li><li>2010/01/26 -- <a href="http://cssrainbow.cn/articles/resources/1033.html" title="网页设计中的面包屑导航：实例和最佳做法">网页设计中的面包屑导航：实例和最佳做法</a> (0)</li><li>2009/10/20 -- <a href="http://cssrainbow.cn/tutorials/xhtml-css/779.html" title="让XHTML/CSS页面可正常打印 (收藏)">让XHTML/CSS页面可正常打印 (收藏)</a> (0)</li><li>2009/04/17 -- <a href="http://cssrainbow.cn/tutorials/xhtml-css/33.html" title="Add-Icons-next-to-your-links-with-CSS">Add-Icons-next-to-your-links-with-CSS</a> (0)</li><li>2010/09/02 -- <a href="http://cssrainbow.cn/tutorials/xhtml-css/1375.html" title="图像替换技术的最佳实战">图像替换技术的最佳实战</a> (2)</li><li>2010/05/17 -- <a href="http://cssrainbow.cn/tutorials/html5-tutorials/1287.html" title="HTML5入门 之 新标签的解析 篇">HTML5入门 之 新标签的解析 篇</a> (3)</li><li>2010/05/13 -- <a href="http://cssrainbow.cn/tutorials/html5-tutorials/1284.html" title="HTML5入门 之 样板和兼容IE浏览器篇">HTML5入门 之 样板和兼容IE浏览器篇</a> (6)</li><li>2010/05/11 -- <a href="http://cssrainbow.cn/tutorials/html5-tutorials/1278.html" title="HTML5入门之标签篇《下》 ">HTML5入门之标签篇《下》 </a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://cssrainbow.cn/tutorials/xhtml-css/1137.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IE条件注释与CSS Hacks</title>
		<link>http://cssrainbow.cn/tutorials/xhtml-css/1130.html</link>
		<comments>http://cssrainbow.cn/tutorials/xhtml-css/1130.html#comments</comments>
		<pubDate>Tue, 02 Mar 2010 13:15:23 +0000</pubDate>
		<dc:creator>Rainbow</dc:creator>
				<category><![CDATA[(X)HTML / CSS]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Web Roundups]]></category>
		<category><![CDATA[CSS Hack]]></category>

		<guid isPermaLink="false">http://cssrainbow.cn/?p=1130</guid>
		<description><![CDATA[IE条件注释与CSS Hacks]]></description>
			<content:encoded><![CDATA[<p>我们知道，IE6的存在，因其预装于目前市场占有率最大的 Windows XP 操作系统。对于老态龙钟的IE6，说拜拜还需要很长的时间。<br />
IE虽然给我们网页设计师，带来了不少多麻烦，还好，IE<a href="http://msdn2.microsoft.com/en-us/library/ms537512.aspx">条件注释</a>，给我们解决浏览器兼容问题带来了一个很好的方法。</p>
<h2>一、什么是IE条件注释？</h2>
<p>IE条件注释，顾名思义就是使用IE特有的条件语句来显示代码块。</p>
<p>这些巧妙的逻辑片段只能被IE浏览器所支持，其它的浏览器理解为纯粹的HTML注释，不起任何作用。条件注释在IE5中首次出现，并且得到了Widnows浏览器所有后续版本的支持。IE条件注释及其有效，而且非常容易记住。通过这些技巧，我们可以为基于Windows的IE5、6、7、8添加一些特殊的行为。这样做的好处是，HTML和CSS代码可以通过验证。主要的缺点是这些注释需要放在HTML页面中，而不是放在CSS中。这样，当你不需要这些东西，或者有所更改的时候，就需要维护很多的地方。好处是通过这种方式使用条件注释，可以很轻松的管理项目中的目标浏览器，并使得CSS补丁文件保持独立自由。更重要的是它帮助我们优化了  CSS样式表，保证了主要样式表的干净，这对于大型网站来说就很重要了，也许你还没有感觉到它的可爱之处。</p>
<p><span id="more-1130"></span></p>
<p>作为有Web标准意识的开发者，我们始终应该首先在大部分现有的兼容标准的浏览器上测试我们的设计，然后再为那些稍作细微修改就能回到正轨的浏览器提供补丁。</p>
<h2>二、条件注释使用方法</h2>
<h3>条件注释属性</h3>
<ul>
<li><strong>gt</strong> : greater than，选择条件版本以上版本，不包含条件版本</li>
<li><strong>lt</strong> : less than，选择条件版本以下版本，不包含条件版本</li>
<li><strong>gte</strong> : greater than or equal，选择条件版本以上版本，包含条件版本</li>
<li><strong>lte</strong> : less than or equal，选择条件版本以下版本，包含条件版本</li>
<li><strong>!</strong> : 选择条件版本以外所有版本，无论高低</li>
</ul>
<h3>The Code</h3>
<p>我们概括性地说明一下你如何使用条件注释，首先，我们应该把你所有的CSS
<link>等CSS文件放在<head>中。条件注释的基本结构和HTML的注释(<!-- -->)是一样的。因此 ，IE以外的浏览器将会把它们看  作是普通的注释而完全忽略它们。IE将会根据if条件来判断是否如解析普通的页面内容一样解析条件注释里的内容。条件注释使用的是HTML的注释结构，因此他们只能使用在HTML文件里，而不能在CSS文件中使用。</p>
<h4>Target ALL VERSIONS of IE（ 所有的IE可识别 ）</h4>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="css" style="font-family:monospace;">&lt;!--<span style="color: #00AA00;">&#91;</span>if IE<span style="color: #00AA00;">&#93;</span><span style="color: #00AA00;">&gt;</span>  	&lt;link rel<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;stylesheet&quot;</span> type<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;text/css&quot;</span> href<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;all-ie-only.css&quot;</span> /<span style="color: #00AA00;">&gt;</span>  &lt;!<span style="color: #00AA00;">&#91;</span>endif<span style="color: #00AA00;">&#93;</span>--<span style="color: #00AA00;">&gt;</span></pre></td></tr></table></div>

<h4>Target everything EXCEPT IE （除IE外都可识别 ）</h4>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="css" style="font-family:monospace;">&lt;!--<span style="color: #00AA00;">&#91;</span>if !IE<span style="color: #00AA00;">&#93;</span><span style="color: #00AA00;">&gt;</span>  &lt;link rel<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;stylesheet&quot;</span> type<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;text/css&quot;</span> href<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;not-ie.css&quot;</span> /<span style="color: #00AA00;">&gt;</span>  &lt;!<span style="color: #00AA00;">&#91;</span>endif<span style="color: #00AA00;">&#93;</span>--<span style="color: #00AA00;">&gt;</span></pre></td></tr></table></div>

<h4>Target IE 7 ONLY （ 仅IE7可识别 ）</h4>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="css" style="font-family:monospace;">&lt;!--<span style="color: #00AA00;">&#91;</span>if IE <span style="color: #cc66cc;">7</span><span style="color: #00AA00;">&#93;</span><span style="color: #00AA00;">&gt;</span>  &lt;link rel<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;stylesheet&quot;</span> type<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;text/css&quot;</span> href<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;ie7.css&quot;</span><span style="color: #00AA00;">&gt;</span>  &lt;!<span style="color: #00AA00;">&#91;</span>endif<span style="color: #00AA00;">&#93;</span>--<span style="color: #00AA00;">&gt;</span></pre></td></tr></table></div>

<h4>Target IE 6 ONLY（仅IE6可识别）</h4>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="css" style="font-family:monospace;">&lt;!--<span style="color: #00AA00;">&#91;</span>if IE <span style="color: #cc66cc;">6</span><span style="color: #00AA00;">&#93;</span><span style="color: #00AA00;">&gt;</span>  &lt;link rel<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;stylesheet&quot;</span> type<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;text/css&quot;</span> href<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;ie6.css&quot;</span> /<span style="color: #00AA00;">&gt;</span>  &lt;!<span style="color: #00AA00;">&#91;</span>endif<span style="color: #00AA00;">&#93;</span>--<span style="color: #00AA00;">&gt;</span></pre></td></tr></table></div>

<h4>Target IE 5 ONLY（仅IE5.0与IE5.5可以识别 ）</h4>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="css" style="font-family:monospace;">&lt;!--<span style="color: #00AA00;">&#91;</span>if IE <span style="color: #cc66cc;">5</span><span style="color: #00AA00;">&#93;</span><span style="color: #00AA00;">&gt;</span>  &lt;link rel<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;stylesheet&quot;</span> type<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;text/css&quot;</span> href<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;ie5.css&quot;</span> /<span style="color: #00AA00;">&gt;</span>  &lt;!<span style="color: #00AA00;">&#91;</span>endif<span style="color: #00AA00;">&#93;</span>--<span style="color: #00AA00;">&gt;</span></pre></td></tr></table></div>

<h4>Target IE 5.0 ONLY (只有IE5.0可以识别 )</h4>
<p><!--[if IE 5.0]>
<link rel="stylesheet" type="text/css" href="ie50.css" />  <![endif]--> </p>
<h4>Target IE 5.5 ONLY（只有IE5.0可以识别）</h4>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="css" style="font-family:monospace;">&lt;!--<span style="color: #00AA00;">&#91;</span>if IE <span style="color: #cc66cc;">5.5000</span><span style="color: #00AA00;">&#93;</span><span style="color: #00AA00;">&gt;</span>  &lt;link rel<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;stylesheet&quot;</span> type<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;text/css&quot;</span> href<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;ie55.css&quot;</span> /<span style="color: #00AA00;">&gt;</span>  &lt;!<span style="color: #00AA00;">&#91;</span>endif<span style="color: #00AA00;">&#93;</span>--<span style="color: #00AA00;">&gt;</span></pre></td></tr></table></div>

<h4>Target IE 6 and LOWER（IE6和IE6以下的）</h4>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="css" style="font-family:monospace;">&lt;!--<span style="color: #00AA00;">&#91;</span>if lt IE <span style="color: #cc66cc;">7</span><span style="color: #00AA00;">&#93;</span><span style="color: #00AA00;">&gt;</span>  &lt;link rel<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;stylesheet&quot;</span> type<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;text/css&quot;</span> href<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;ie6-and-down.css&quot;</span> /<span style="color: #00AA00;">&gt;</span>  &lt;!<span style="color: #00AA00;">&#91;</span>endif<span style="color: #00AA00;">&#93;</span>--<span style="color: #00AA00;">&gt;</span></pre></td></tr></table></div>


<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="css" style="font-family:monospace;">&lt;!--<span style="color: #00AA00;">&#91;</span>if lte IE <span style="color: #cc66cc;">6</span><span style="color: #00AA00;">&#93;</span><span style="color: #00AA00;">&gt;</span>  &lt;link rel<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;stylesheet&quot;</span> type<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;text/css&quot;</span> href<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;ie6-and-down.css&quot;</span> /<span style="color: #00AA00;">&gt;</span>  &lt;!<span style="color: #00AA00;">&#91;</span>endif<span style="color: #00AA00;">&#93;</span>--<span style="color: #00AA00;">&gt;</span></pre></td></tr></table></div>

<h4>Target IE 7 and LOWER（IE7和IE7以下的）</h4>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="css" style="font-family:monospace;">&lt;!--<span style="color: #00AA00;">&#91;</span>if lt IE <span style="color: #cc66cc;">8</span><span style="color: #00AA00;">&#93;</span><span style="color: #00AA00;">&gt;</span>  &lt;link rel<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;stylesheet&quot;</span> type<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;text/css&quot;</span> href<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;ie7-and-down.css&quot;</span> /<span style="color: #00AA00;">&gt;</span>  &lt;!<span style="color: #00AA00;">&#91;</span>endif<span style="color: #00AA00;">&#93;</span>--<span style="color: #00AA00;">&gt;</span></pre></td></tr></table></div>


<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="css" style="font-family:monospace;">&lt;!--<span style="color: #00AA00;">&#91;</span>if lte IE <span style="color: #cc66cc;">7</span><span style="color: #00AA00;">&#93;</span><span style="color: #00AA00;">&gt;</span>  &lt;link rel<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;stylesheet&quot;</span> type<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;text/css&quot;</span> href<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;ie7-and-down.css&quot;</span> /<span style="color: #00AA00;">&gt;</span>  &lt;!<span style="color: #00AA00;">&#91;</span>endif<span style="color: #00AA00;">&#93;</span>--<span style="color: #00AA00;">&gt;</span></pre></td></tr></table></div>

<h4>Target IE 8 and LOWER（IE8和IE8以下的）</h4>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="css" style="font-family:monospace;">&lt;!--<span style="color: #00AA00;">&#91;</span>if lt IE <span style="color: #cc66cc;">9</span><span style="color: #00AA00;">&#93;</span><span style="color: #00AA00;">&gt;</span>  &lt;link rel<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;stylesheet&quot;</span> type<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;text/css&quot;</span> href<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;ie8-and-down.css&quot;</span> /<span style="color: #00AA00;">&gt;</span>  &lt;!<span style="color: #00AA00;">&#91;</span>endif<span style="color: #00AA00;">&#93;</span>--<span style="color: #00AA00;">&gt;</span></pre></td></tr></table></div>


<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="css" style="font-family:monospace;">&lt;!--<span style="color: #00AA00;">&#91;</span>if lte IE <span style="color: #cc66cc;">8</span><span style="color: #00AA00;">&#93;</span><span style="color: #00AA00;">&gt;</span>  &lt;link rel<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;stylesheet&quot;</span> type<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;text/css&quot;</span> href<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;ie8-and-down.css&quot;</span> /<span style="color: #00AA00;">&gt;</span>  &lt;!<span style="color: #00AA00;">&#91;</span>endif<span style="color: #00AA00;">&#93;</span>--<span style="color: #00AA00;">&gt;</span></pre></td></tr></table></div>

<h4>Target IE 6 and HIGHER（IE6和IE6以上的）</h4>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="css" style="font-family:monospace;">&lt;!--<span style="color: #00AA00;">&#91;</span>if gt IE <span style="color: #cc66cc;">5.5</span><span style="color: #00AA00;">&#93;</span><span style="color: #00AA00;">&gt;</span>  &lt;link rel<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;stylesheet&quot;</span> type<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;text/css&quot;</span> href<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;ie6-and-up.css&quot;</span> /<span style="color: #00AA00;">&gt;</span>  &lt;!<span style="color: #00AA00;">&#91;</span>endif<span style="color: #00AA00;">&#93;</span>--<span style="color: #00AA00;">&gt;</span></pre></td></tr></table></div>


<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="css" style="font-family:monospace;">&lt;!--<span style="color: #00AA00;">&#91;</span>if gte IE <span style="color: #cc66cc;">6</span><span style="color: #00AA00;">&#93;</span><span style="color: #00AA00;">&gt;</span>  &lt;link rel<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;stylesheet&quot;</span> type<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;text/css&quot;</span> href<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;ie6-and-up.css&quot;</span> /<span style="color: #00AA00;">&gt;</span>  &lt;!<span style="color: #00AA00;">&#91;</span>endif<span style="color: #00AA00;">&#93;</span>--<span style="color: #00AA00;">&gt;</span></pre></td></tr></table></div>

<h4>Target IE 7 and HIGHER（IE7和IE7以上的）</h4>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="css" style="font-family:monospace;">&lt;!--<span style="color: #00AA00;">&#91;</span>if gt IE <span style="color: #cc66cc;">6</span><span style="color: #00AA00;">&#93;</span><span style="color: #00AA00;">&gt;</span>  &lt;link rel<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;stylesheet&quot;</span> type<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;text/css&quot;</span> href<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;ie7-and-up.css&quot;</span> /<span style="color: #00AA00;">&gt;</span>  &lt;!<span style="color: #00AA00;">&#91;</span>endif<span style="color: #00AA00;">&#93;</span>--<span style="color: #00AA00;">&gt;</span></pre></td></tr></table></div>


<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="css" style="font-family:monospace;">&lt;!--<span style="color: #00AA00;">&#91;</span>if gte IE <span style="color: #cc66cc;">7</span><span style="color: #00AA00;">&#93;</span><span style="color: #00AA00;">&gt;</span>  &lt;link rel<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;stylesheet&quot;</span> type<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;text/css&quot;</span> href<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;ie7-and-up.css&quot;</span> /<span style="color: #00AA00;">&gt;</span>  &lt;!<span style="color: #00AA00;">&#91;</span>endif<span style="color: #00AA00;">&#93;</span>--<span style="color: #00AA00;">&gt;</span></pre></td></tr></table></div>

<h4>Target IE 8 and HIGHER（IE8和IE8以上的）</h4>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="css" style="font-family:monospace;">&lt;!--<span style="color: #00AA00;">&#91;</span>if gt IE <span style="color: #cc66cc;">7</span><span style="color: #00AA00;">&#93;</span><span style="color: #00AA00;">&gt;</span>  &lt;link rel<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;stylesheet&quot;</span> type<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;text/css&quot;</span> href<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;ie8-and-up.css&quot;</span> /<span style="color: #00AA00;">&gt;</span>  &lt;!<span style="color: #00AA00;">&#91;</span>endif<span style="color: #00AA00;">&#93;</span>--<span style="color: #00AA00;">&gt;</span></pre></td></tr></table></div>


<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="css" style="font-family:monospace;">&lt;!--<span style="color: #00AA00;">&#91;</span>if gte IE <span style="color: #cc66cc;">8</span><span style="color: #00AA00;">&#93;</span><span style="color: #00AA00;">&gt;</span>  &lt;link rel<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;stylesheet&quot;</span> type<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;text/css&quot;</span> href<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;ie8-and-up.css&quot;</span> /<span style="color: #00AA00;">&gt;</span>  &lt;!<span style="color: #00AA00;">&#91;</span>endif<span style="color: #00AA00;">&#93;</span>--<span style="color: #00AA00;">&gt;</span></pre></td></tr></table></div>

<h3>Universal IE 6 CSS（通用的IE 6样式）</h3>
<p>&nbsp;处理IE   6和IE6以下的版本始终是一个超特殊的挑战。老态龙钟的IE6，还保持着高额的市场占有率，还不能彻底的放弃它，不然会有许多的客户抱怨我们。不过也有些人正在放弃对它的支持，包括大企业，大型网络应用，甚至政府。有一个不失落的 ，不放弃的 解决办法，那就是使用一个特精简的样式<a href="http://css-tricks.com/snippets/html/universal-ie6-css/"> universal IE 6 CSS</a>.，然后为IE 7和以上（和所有其他浏览器）的应用常规的CSS。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="css" style="font-family:monospace;">&lt;!--<span style="color: #00AA00;">&#91;</span>if !IE <span style="color: #cc66cc;">6</span><span style="color: #00AA00;">&#93;</span><span style="color: #00AA00;">&gt;</span>&lt;!--<span style="color: #00AA00;">&gt;</span>  &lt;link rel<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;stylesheet&quot;</span> type<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;text/css&quot;</span> media<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;screen, projection&quot;</span> href<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;REGULAR-STYLESHEET.css&quot;</span> /<span style="color: #00AA00;">&gt;</span>  &lt;!--&lt;!<span style="color: #00AA00;">&#91;</span>endif<span style="color: #00AA00;">&#93;</span>--<span style="color: #00AA00;">&gt;</span>   
&lt;!--<span style="color: #00AA00;">&#91;</span>if gte IE <span style="color: #cc66cc;">7</span><span style="color: #00AA00;">&#93;</span><span style="color: #00AA00;">&gt;</span>  &lt;link rel<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;stylesheet&quot;</span> type<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;text/css&quot;</span> media<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;screen, projection&quot;</span> href<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;REGULAR-STYLESHEET.css&quot;</span> /<span style="color: #00AA00;">&gt;</span>  &lt;!<span style="color: #00AA00;">&#91;</span>endif<span style="color: #00AA00;">&#93;</span>--<span style="color: #00AA00;">&gt;</span>   
&lt;!--<span style="color: #00AA00;">&#91;</span>if lte IE <span style="color: #cc66cc;">6</span><span style="color: #00AA00;">&#93;</span><span style="color: #00AA00;">&gt;</span>  &lt;link rel<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;stylesheet&quot;</span> type<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;text/css&quot;</span> media<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;screen, projection&quot;</span> href<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;http://universal-ie6-css.googlecode.com/files/ie6.0.3.css&quot;</span> /<span style="color: #00AA00;">&gt;</span>  &lt;!<span style="color: #00AA00;">&#91;</span>endif<span style="color: #00AA00;">&#93;</span>--<span style="color: #00AA00;">&gt;</span></pre></td></tr></table></div>

<h2>IE6/IE7/FF的CSS Hacks</h2>
<h3>1.区别IE和非IE浏览器</h3>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="css" style="font-family:monospace;"><span style="color: #cc00cc;">#tip</span> <span style="color: #00AA00;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span><span style="color: #000000; font-weight: bold;">blue</span><span style="color: #00AA00;">;</span> <span style="color: #808080; font-style: italic;">/*非IE 背景藍色*/</span>
    <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span><span style="color: #993333;">red</span> \<span style="color: #cc66cc;">9</span><span style="color: #00AA00;">;</span> <span style="color: #808080; font-style: italic;">/*IE6、IE7、IE8背景紅色*/</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<h3>2.区别IE6,IE7,IE8,FF</h3>
<p>【区别符号】：「\9」、「*」、「_」</p>
<p>【示例】：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="css" style="font-family:monospace;"><span style="color: #cc00cc;">#ue</span><span style="color: #00AA00;">&#123;</span> <span style="color: #808080; font-style: italic;">/*Firefox 背景变蓝色*/</span>
    <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span><span style="color: #993333;">red</span> \<span style="color: #cc66cc;">9</span><span style="color: #00AA00;">;</span> <span style="color: #808080; font-style: italic;">/*IE8 背景变红色*/</span>
    <span style="color: #00AA00;">*</span><span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span><span style="color: #000000; font-weight: bold;">black</span><span style="color: #00AA00;">;</span> <span style="color: #808080; font-style: italic;">/*IE7 背景变黑色*/</span>
    _background<span style="color: #00AA00;">:</span>orange<span style="color: #00AA00;">;</span> <span style="color: #808080; font-style: italic;">/*IE6 背景变橘色*/</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<p>
 【说明】：因为IE系列浏览器可读「\9」，而IE6和IE7可读「*」(米字号)，另外IE6可辨识「_」(底线)，因此可以依照顺序写下来，就会让浏  览器正确的读取到自己看得懂得CSS语法，所以就可以有效区分IE各版本和非IE浏览器(像是Firefox、Opera、Google  Chrome、Safari等)。
</p>
<h3>3.区别IE6、IE7、Firefox (方法 1) </h3>
<p>【区别符号】：「*」、「_」</p>
<p>【示例】：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="css" style="font-family:monospace;"><span style="color: #cc00cc;">#tip</span> <span style="color: #00AA00;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span><span style="color: #000000; font-weight: bold;">blue</span><span style="color: #00AA00;">;</span> <span style="color: #808080; font-style: italic;">/*Firefox背景变蓝色*/</span>
    <span style="color: #00AA00;">*</span><span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span><span style="color: #000000; font-weight: bold;">black</span><span style="color: #00AA00;">;</span> <span style="color: #808080; font-style: italic;">/*IE7 背景变黑色*/</span>
    _background<span style="color: #00AA00;">:</span>orange<span style="color: #00AA00;">;</span> <span style="color: #808080; font-style: italic;">/*IE6 背景变橘色*/</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<p>  【说明】：IE7和IE6可读「*」(米字号)，IE6又可以读「_」(底线)，但是IE7却无法读取「_」，至于Firefox(非IE浏览器)则完全无法辨识「*」和「_」，因此就可以透过这样的差异性来区分IE6、IE7、Firefox。</p>
<h3> 4.区别IE6、IE7、Firefox (方法 2) </h3>
<p>【区别符号】：「*」、「!important」</p>
<p>【示例】：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="css" style="font-family:monospace;"><span style="color: #cc00cc;">#tip</span> <span style="color: #00AA00;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span><span style="color: #000000; font-weight: bold;">blue</span><span style="color: #00AA00;">;</span> <span style="color: #808080; font-style: italic;">/*Firefox 背景变蓝色*/</span>
    <span style="color: #00AA00;">*</span><span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span><span style="color: #993333;">green</span> !important<span style="color: #00AA00;">;</span> <span style="color: #808080; font-style: italic;">/*IE7 背景变绿色*/</span>
    <span style="color: #00AA00;">*</span><span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span>orange<span style="color: #00AA00;">;</span> <span style="color: #808080; font-style: italic;">/*IE6 背景变橘色*/</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<p>【说明】：IE7可以辨识「*」和「!important」，但是IE6只可以辨识「*」，却无法辨识「!important」，至于Firefox可以读取「!important」但不能辨识「*」因此可以透过这样的差异来有效区隔IE6、IE7、Firefox。</p>
<h3>5.区别IE7、Firefox </h3>
<p>【区别符号】：「*」、「!important」</p>
<p>【示例】：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="css" style="font-family:monospace;"><span style="color: #cc00cc;">#tip</span> <span style="color: #00AA00;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span><span style="color: #000000; font-weight: bold;">blue</span><span style="color: #00AA00;">;</span> <span style="color: #808080; font-style: italic;">/*Firefox 背景变蓝色*/</span>
    <span style="color: #00AA00;">*</span><span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span><span style="color: #993333;">green</span> !important<span style="color: #00AA00;">;</span> <span style="color: #808080; font-style: italic;">/*IE7 背景变绿色*/</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<p>【说明】：因为Firefox可以辨识「!important」但却无法辨识「*」，而IE7则可以同时看懂「*」、「!important」，因此可以两个辨识符号来区隔IE7和Firefox。</p>
<h3>6.区别IE6、IE7 (方法 1) </h3>
<p>【区别符号】：「*」、「_」</p>
<p>【示例】：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="css" style="font-family:monospace;"><span style="color: #cc00cc;">#tip</span> <span style="color: #00AA00;">&#123;</span>
    <span style="color: #00AA00;">*</span><span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span><span style="color: #000000; font-weight: bold;">black</span><span style="color: #00AA00;">;</span> <span style="color: #808080; font-style: italic;">/*IE7 背景变黑色*/</span>
    _background<span style="color: #00AA00;">:</span>orange<span style="color: #00AA00;">;</span> <span style="color: #808080; font-style: italic;">/*IE6 背景变橘色*/</span>
    <span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<p>【说明】：IE7和IE6都可以辨识「*」(米字号)，但IE6可以辨识「_」(底线)，IE7却无法辨识，透过IE7无法读取「_」的特性就能轻鬆区隔IE6和IE7之间的差异。</p>
<h3>7.区别IE6、IE7 (方法 2) </h3>
<p>【区别符号】：「!important」</p>
<p> 【示例】：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="css" style="font-family:monospace;"><span style="color: #cc00cc;">#tip</span> <span style="color: #00AA00;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span><span style="color: #000000; font-weight: bold;">black</span> !important<span style="color: #00AA00;">;</span> <span style="color: #808080; font-style: italic;">/*IE7 背景变黑色*/</span>
    <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span>orange<span style="color: #00AA00;">;</span> <span style="color: #808080; font-style: italic;">/*IE6 背景变橘色*/</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<p>【说明】：因为IE7可读取「!important;」但IE6却不行，而CSS的读取步骤是从上到下，因此IE6读取时因无法辨识「!important」而直接跳到下一行读取CSS，所以背景色会呈现橘色。</p>
<h3>8.区别IE6、Firefox </h3>
<p>【区别符号】：「_」</p>
<p>【示例】：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="css" style="font-family:monospace;"><span style="color: #cc00cc;">#tip</span> <span style="color: #00AA00;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span><span style="color: #000000; font-weight: bold;">black</span><span style="color: #00AA00;">;</span> <span style="color: #808080; font-style: italic;">/*Firefox 背景变黑色*/</span>
    _background<span style="color: #00AA00;">:</span>orange<span style="color: #00AA00;">;</span> <span style="color: #808080; font-style: italic;">/*IE6 背景变橘色*/</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<p>【说明】：因为IE6可以辨识「_」(底线)，但是Firefox却不行，因此可以透过这样的差异来区隔Firefox和IE6，有效达成CSS hack。</p>
<h4>9. IE-6 ONLY</h4>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="css" style="font-family:monospace;"><span style="color: #00AA00;">*</span> html <span style="color: #cc00cc;">#div</span> <span style="color: #00AA00;">&#123;</span>      <span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span> <span style="color: #933;">300px</span><span style="color: #00AA00;">;</span>  <span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<h4>10. NON IE-7 ONLY:</h4>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="css" style="font-family:monospace;"><span style="color: #cc00cc;">#div</span> <span style="color: #00AA00;">&#123;</span>     _height<span style="color: #00AA00;">:</span> <span style="color: #933;">300px</span><span style="color: #00AA00;">;</span>  <span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<h4>11. Hide from IE 6 and LOWER:</h4>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="css" style="font-family:monospace;"><span style="color: #cc00cc;">#div</span> <span style="color: #00AA00;">&#123;</span>     <span style="color: #000000; font-weight: bold;">height</span><span style="color: #808080; font-style: italic;">/**/</span><span style="color: #00AA00;">:</span> <span style="color: #933;">300px</span><span style="color: #00AA00;">;</span>  <span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>


<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="css" style="font-family:monospace;">html <span style="color: #00AA00;">&gt;</span> body <span style="color: #cc00cc;">#div</span> <span style="color: #00AA00;">&#123;</span>        <span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span> <span style="color: #933;">300px</span><span style="color: #00AA00;">;</span>  <span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<h2>浏览器专属 CSS Hack:区分 Firefox / Opera / Safari / Internet Explorer</h2>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
</pre></td><td class="code"><pre class="css" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">/* Opera */</span>  
html<span style="color: #3333ff;">:first-child </span><span style="color: #cc00cc;">#opera</span>  <span style="color: #00AA00;">&#123;</span>  <span style="color: #000000; font-weight: bold;">display</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">block</span><span style="color: #00AA00;">;</span>  <span style="color: #00AA00;">&#125;</span>  
<span style="color: #808080; font-style: italic;">/* IE 7 */</span> 
<span style="color: #00AA00;">*</span><span style="color: #3333ff;">:first-child</span><span style="color: #00AA00;">+</span>html<span style="color: #00AA00;">&#123;</span><span style="color: #000000; font-weight: bold;">background-color</span><span style="color: #00AA00;">:</span><span style="color: #cc00cc;">#F00</span><span style="color: #00AA00;">;</span><span style="color: #00AA00;">&#125;</span>
<span style="color: #808080; font-style: italic;">/* IE 7 */</span> 
 html <span style="color: #00AA00;">&gt;</span> body <span style="color: #cc00cc;">#ie7</span>  <span style="color: #00AA00;">&#123;</span>  <span style="color: #00AA00;">*</span><span style="color: #000000; font-weight: bold;">display</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">block</span><span style="color: #00AA00;">;</span>  <span style="color: #00AA00;">&#125;</span>  
<span style="color: #808080; font-style: italic;">/* IE 6 */</span> 
<span style="color: #00AA00;">*</span> html <span style="color: #cc00cc;">#div</span><span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">background-color</span><span style="color: #00AA00;">:</span><span style="color: #cc00cc;">#F00</span><span style="color: #00AA00;">;</span><span style="color: #00AA00;">&#125;</span>
<span style="color: #808080; font-style: italic;">/* IE 6 */</span> 
 body <span style="color: #cc00cc;">#ie6</span>  <span style="color: #00AA00;">&#123;</span>  _display<span style="color: #00AA00;">:</span> <span style="color: #993333;">block</span><span style="color: #00AA00;">;</span>  <span style="color: #00AA00;">&#125;</span> 
&nbsp;
<span style="color: #808080; font-style: italic;">/*IE7及其更低版本*/</span>
<span style="color: #00AA00;">*</span><span style="color: #3333ff;">:first-child</span><span style="color: #00AA00;">+</span>html<span style="color: #00AA00;">&#123;</span><span style="color: #00AA00;">&#125;</span><span style="color: #00AA00;">*</span>html<span style="color: #00AA00;">&#123;</span><span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">/*IE7,IE7以上和主流浏览器*/</span>
html<span style="color: #00AA00;">&gt;</span>body<span style="color: #00AA00;">&#123;</span><span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">/*适合主流浏览器(IE7排除在外，IE7以下的也不行)*/</span> 
html<span style="color: #00AA00;">&gt;</span><span style="color: #808080; font-style: italic;">/**/</span>body<span style="color: #00AA00;">&#123;</span><span style="color: #00AA00;">&#125;</span>
<span style="color: #808080; font-style: italic;">/* Firefox 1 - 2 */</span> 
 body<span style="color: #3333ff;">:empty </span><span style="color: #cc00cc;">#firefox12</span>  <span style="color: #00AA00;">&#123;</span>  <span style="color: #000000; font-weight: bold;">display</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">block</span><span style="color: #00AA00;">;</span>  <span style="color: #00AA00;">&#125;</span>  
<span style="color: #808080; font-style: italic;">/* Firefox */</span>  <span style="color: #a1a100;">@-moz-document url-prefix()  {  #firefox { display: block; }  } </span>
<span style="color: #808080; font-style: italic;">/* Safari */</span>  <span style="color: #a1a100;">@media screen and (-webkit-min-device-pixel-ratio:0)  {  #safari { display: block; }  } </span>
<span style="color: #808080; font-style: italic;">/* Opera */</span>  <span style="color: #a1a100;">@media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0)  {  head~body #opera { display: block; }  }</span></pre></td></tr></table></div>

<h3  class="related_post_title">相关日志 »</h3><ul class="related_post"><li>2010/08/17 -- <a href="http://cssrainbow.cn/tutorials/xhtml-css/1360.html" title="IE CSS Bug Table">IE CSS Bug Table</a> (1)</li><li>2010/04/15 -- <a href="http://cssrainbow.cn/code-snippets/css-code-snippets/1234.html" title="CSS中区别IE6, IE7和 IE8  的4个非常有用的字符">CSS中区别IE6, IE7和 IE8  的4个非常有用的字符</a> (1)</li><li>2010/03/09 -- <a href="http://cssrainbow.cn/tutorials/xhtml-css/1147.html" title="IE CSS Bugs 列表和解决方法 ">IE CSS Bugs 列表和解决方法 </a> (0)</li><li>2009/06/16 -- <a href="http://cssrainbow.cn/tutorials/xhtml-css/347.html" title="5种解决ie6下png图片透明的方法">5种解决ie6下png图片透明的方法</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://cssrainbow.cn/tutorials/xhtml-css/1130.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sexy Bookmarks 效果，基于CSS</title>
		<link>http://cssrainbow.cn/tutorials/xhtml-css/961.html</link>
		<comments>http://cssrainbow.cn/tutorials/xhtml-css/961.html#comments</comments>
		<pubDate>Mon, 25 Jan 2010 06:45:17 +0000</pubDate>
		<dc:creator>Rainbow</dc:creator>
				<category><![CDATA[(X)HTML / CSS]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[CSS Sprites]]></category>

		<guid isPermaLink="false">http://cssrainbow.cn/?p=961</guid>
		<description><![CDATA[Sexy Bookmarks 插件是针对WordPress 平台开发的一款网摘收藏按钮插件，其功能主要是在文章末尾显示一组社会收藏
我非常喜欢它的图标弹出悬停效果，然而以前实现的Sexy bookmarks 效果是基于 javascript 库的。我尝试了一下只使用CSS来实现此效果。我们主要用到的是CSS Sprites技术。CSS Sprites技术是非常有利于网站性能优化的。 ]]></description>
			<content:encoded><![CDATA[<p>Sexy Bookmarks 插件是针对WordPress 平台开发的一款网摘收藏按钮插件，其功能主要是在文章末尾显示一组社会收藏（Social Bookmarks）按钮，以方便读者将该文章收藏/提交到这些收藏网站，并与他人分享。  </p>
<p>我非常喜欢它的图标弹出悬停效果，然而以前实现的Sexy bookmarks 效果是基于 javascript 库的。</p>
<p> 我尝试了一下只使用CSS来实现此效果。我们主要用到的是CSS Sprites技术。CSS Sprites技术是非常有利于网站性能优化的。 </p>
<p><a href="http://www.webdeveloperjuice.com/demos/css/demo1.html"><img src="http://cssrainbow.cn/dw-content/Sexy-Bookmark.png" width="555" height="157" /></a></p>
<p align="center"><a href="http://www.webdeveloperjuice.com/demos/css/demo1.html" class="button">Demo演示 </a></p>
<p><span id="more-961"></span></p>
<h3>The HTML Code :</h3>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">ul</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;sharing-cl&quot;</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text&quot;</span>&gt;</span> 
	<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">li</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;sh-mail&quot;</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;&quot;</span>&gt;</span>email<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">li</span>&gt;</span> 
	<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">li</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;sh-feed&quot;</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;&quot;</span>&gt;</span>feed<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">li</span>&gt;</span> 
	<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">li</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;sh-tweet&quot;</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;&quot;</span>&gt;</span>twitter<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">li</span>&gt;</span> 
	<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">li</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;sh-face&quot;</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;&quot;</span>&gt;</span>facebook<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">li</span>&gt;</span> 
	<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">li</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;sh-su&quot;</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;&quot;</span>&gt;</span>stumbleupon<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">li</span>&gt;</span> 
	<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">li</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;sh-digg&quot;</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;&quot;</span>&gt;</span>digg<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">li</span>&gt;</span> 
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">ul</span>&gt;</span></pre></td></tr></table></div>

<h3>The CSS Code :</h3>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
</pre></td><td class="code"><pre class="css" style="font-family:monospace;">.sharing-cl<span style="color: #00AA00;">&#123;</span>
	  <span style="color: #000000; font-weight: bold;">overflow</span><span style="color: #00AA00;">:</span><span style="color: #993333;">hidden</span><span style="color: #00AA00;">;</span>
	  <span style="color: #000000; font-weight: bold;">margin</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
	  <span style="color: #000000; font-weight: bold;">padding</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
	  <span style="color: #000000; font-weight: bold;">list-style</span><span style="color: #00AA00;">:</span><span style="color: #993333;">none</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
<span style="color: #6666ff;">.sharing-cl</span> a<span style="color: #00AA00;">&#123;</span>
	 <span style="color: #000000; font-weight: bold;">overflow</span><span style="color: #00AA00;">:</span><span style="color: #993333;">hidden</span><span style="color: #00AA00;">;</span>
	 <span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span><span style="color: #933;">75px</span><span style="color: #00AA00;">;</span>
	 <span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span><span style="color: #933;">30px</span><span style="color: #00AA00;">;</span>
	 <span style="color: #000000; font-weight: bold;">float</span><span style="color: #00AA00;">:</span><span style="color: #000000; font-weight: bold;">left</span><span style="color: #00AA00;">;</span>
	 <span style="color: #000000; font-weight: bold;">margin-right</span><span style="color: #00AA00;">:</span><span style="color: #933;">5px</span><span style="color: #00AA00;">;</span>
	 <span style="color: #000000; font-weight: bold;">text-indent</span><span style="color: #00AA00;">:</span><span style="color: #933;">-200px</span><span style="color: #00AA00;">;</span>
	 <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span><span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000;">&quot;http://www.webdeveloperjuice.com/demos/images/share-sprite.png&quot;</span><span style="color: #00AA00;">&#41;</span> <span style="color: #993333;">no-repeat</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
	a<span style="color: #6666ff;">.sh-su</span><span style="color: #00AA00;">&#123;</span><span style="color: #000000; font-weight: bold;">background-position</span><span style="color: #00AA00;">:</span><span style="color: #933;">-210px</span> <span style="color: #933;">-40px</span><span style="color: #00AA00;">;</span><span style="color: #00AA00;">&#125;</span>
	a<span style="color: #6666ff;">.sh-feed</span><span style="color: #00AA00;">&#123;</span><span style="color: #000000; font-weight: bold;">background-position</span><span style="color: #00AA00;">:</span><span style="color: #933;">-70px</span> <span style="color: #933;">-40px</span><span style="color: #00AA00;">;</span><span style="color: #00AA00;">&#125;</span>
	a<span style="color: #6666ff;">.sh-tweet</span><span style="color: #00AA00;">&#123;</span><span style="color: #000000; font-weight: bold;">background-position</span><span style="color: #00AA00;">:</span><span style="color: #933;">-140px</span> <span style="color: #933;">-40px</span><span style="color: #00AA00;">;</span><span style="color: #00AA00;">&#125;</span>
	a<span style="color: #6666ff;">.sh-mail</span><span style="color: #00AA00;">&#123;</span><span style="color: #000000; font-weight: bold;">background-position</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span> <span style="color: #933;">-40px</span><span style="color: #00AA00;">;</span><span style="color: #00AA00;">&#125;</span>
	a<span style="color: #6666ff;">.sh-digg</span><span style="color: #00AA00;">&#123;</span><span style="color: #000000; font-weight: bold;">background-position</span><span style="color: #00AA00;">:</span><span style="color: #933;">-280px</span> <span style="color: #933;">-40px</span><span style="color: #00AA00;">;</span><span style="color: #00AA00;">&#125;</span>
	a.sh-face<span style="color: #00AA00;">&#123;</span>
	  <span style="color: #000000; font-weight: bold;">margin-right</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
	  <span style="color: #000000; font-weight: bold;">background-position</span><span style="color: #00AA00;">:</span><span style="color: #933;">-350px</span> <span style="color: #933;">-40px</span><span style="color: #00AA00;">;</span>
	<span style="color: #00AA00;">&#125;</span>
	a<span style="color: #6666ff;">.sh-mail</span><span style="color: #3333ff;">:hover</span><span style="color: #00AA00;">&#123;</span><span style="color: #000000; font-weight: bold;">background-position</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span> <span style="color: #933;">1px</span><span style="color: #00AA00;">;</span><span style="color: #00AA00;">&#125;</span>
	a<span style="color: #6666ff;">.sh-feed</span><span style="color: #3333ff;">:hover</span><span style="color: #00AA00;">&#123;</span><span style="color: #000000; font-weight: bold;">background-position</span><span style="color: #00AA00;">:</span><span style="color: #933;">-70px</span> <span style="color: #933;">1px</span><span style="color: #00AA00;">;</span><span style="color: #00AA00;">&#125;</span>
	a<span style="color: #6666ff;">.sh-tweet</span><span style="color: #3333ff;">:hover</span><span style="color: #00AA00;">&#123;</span><span style="color: #000000; font-weight: bold;">background-position</span><span style="color: #00AA00;">:</span><span style="color: #933;">-140px</span> <span style="color: #933;">1px</span><span style="color: #00AA00;">;</span><span style="color: #00AA00;">&#125;</span>
	a<span style="color: #6666ff;">.sh-su</span><span style="color: #3333ff;">:hover</span><span style="color: #00AA00;">&#123;</span><span style="color: #000000; font-weight: bold;">background-position</span><span style="color: #00AA00;">:</span><span style="color: #933;">-210px</span> <span style="color: #933;">1px</span><span style="color: #00AA00;">;</span><span style="color: #00AA00;">&#125;</span>
	<span style="color: #6666ff;">.sh-digg</span><span style="color: #3333ff;">:hover</span><span style="color: #00AA00;">&#123;</span><span style="color: #000000; font-weight: bold;">background-position</span><span style="color: #00AA00;">:</span><span style="color: #933;">-280px</span> <span style="color: #933;">1px</span><span style="color: #00AA00;">;</span><span style="color: #00AA00;">&#125;</span>
	a<span style="color: #6666ff;">.sh-face</span><span style="color: #3333ff;">:hover</span><span style="color: #00AA00;">&#123;</span>
	  <span style="color: #000000; font-weight: bold;">background-position</span><span style="color: #00AA00;">:</span><span style="color: #933;">-350px</span> <span style="color: #933;">1px</span><span style="color: #00AA00;">;</span>
	<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #cc00cc;">#text</span><span style="color: #00AA00;">&#123;</span>
	  <span style="color: #000000; font-weight: bold;">margin-top</span><span style="color: #00AA00;">:</span><span style="color: #933;">3em</span><span style="color: #00AA00;">;</span>
	  <span style="color: #000000; font-weight: bold;">font-weight</span><span style="color: #00AA00;">:</span><span style="color: #993333;">bold</span><span style="color: #00AA00;">;</span>
	  <span style="color: #000000; font-weight: bold;">font-family</span><span style="color: #3333ff;">:helvetica</span><span style="color: #00AA00;">,</span>arial<span style="color: #00AA00;">,</span><span style="color: #993333;">sans-serif</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
	<span style="color: #cc00cc;">#text</span> a<span style="color: #00AA00;">&#123;</span>
	  <span style="color: #000000; font-weight: bold;">text-indent</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
	  <span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span><span style="color: #993333;">auto</span><span style="color: #00AA00;">;</span>
	  <span style="color: #000000; font-weight: bold;">text-align</span><span style="color: #00AA00;">:</span><span style="color: #993333;">center</span><span style="color: #00AA00;">;</span>
	  <span style="color: #000000; font-weight: bold;">font-size</span><span style="color: #00AA00;">:</span><span style="color: #933;">11px</span><span style="color: #00AA00;">;</span>
	  <span style="color: #000000; font-weight: bold;">padding-top</span><span style="color: #00AA00;">:</span><span style="color: #933;">35px</span><span style="color: #00AA00;">;</span>
	  <span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span><span style="color: #cc00cc;">#999</span><span style="color: #00AA00;">;</span>
	  <span style="color: #000000; font-weight: bold;">text-decoration</span><span style="color: #00AA00;">:</span><span style="color: #993333;">none</span><span style="color: #00AA00;">;</span>
	<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<p>如果你需要图片精灵的话，可以在这里<a href="http://webdeveloperjuice.com/demos/images/share-sprite.png" class="button">下载图片</a> .</p>
<p>原文来自：<a href="http://www.webdeveloperjuice.com/2009/12/15/sexy-bookmark-like-effect-using-pure-css/">Sexy bookmark like effect using pure css : re-cleaned</a></p>
<h3  class="related_post_title">相关日志 »</h3><ul class="related_post"><li>2010/09/02 -- <a href="http://cssrainbow.cn/tutorials/xhtml-css/1375.html" title="图像替换技术的最佳实战">图像替换技术的最佳实战</a> (2)</li><li>2010/04/15 -- <a href="http://cssrainbow.cn/code-snippets/css-code-snippets/1234.html" title="CSS中区别IE6, IE7和 IE8  的4个非常有用的字符">CSS中区别IE6, IE7和 IE8  的4个非常有用的字符</a> (1)</li><li>2010/03/04 -- <a href="http://cssrainbow.cn/tutorials/xhtml-css/1137.html" title="Web 设计中的 5 个最具争议性的话题">Web 设计中的 5 个最具争议性的话题</a> (0)</li><li>2010/01/26 -- <a href="http://cssrainbow.cn/articles/resources/1033.html" title="网页设计中的面包屑导航：实例和最佳做法">网页设计中的面包屑导航：实例和最佳做法</a> (0)</li><li>2010/01/25 -- <a href="http://cssrainbow.cn/articles/web-roundups/941.html" title="15个富有创意的Web表单设计,基于CSS">15个富有创意的Web表单设计,基于CSS</a> (0)</li><li>2010/01/14 -- <a href="http://cssrainbow.cn/tutorials/xhtml-css/882.html" title="实现侧边栏滚动的多种技术，基于CSS,jQuery or MooTools ">实现侧边栏滚动的多种技术，基于CSS,jQuery or MooTools </a> (1)</li><li>2009/11/04 -- <a href="http://cssrainbow.cn/tutorials/xhtml-css/800.html" title="解密CSS Sprites：技巧、工具和教程 (收藏)">解密CSS Sprites：技巧、工具和教程 (收藏)</a> (0)</li><li>2009/11/03 -- <a href="http://cssrainbow.cn/tutorials/xhtml-css/797.html" title="征服，高级CSS选择器(收藏)">征服，高级CSS选择器(收藏)</a> (1)</li><li>2009/10/20 -- <a href="http://cssrainbow.cn/tutorials/xhtml-css/779.html" title="让XHTML/CSS页面可正常打印 (收藏)">让XHTML/CSS页面可正常打印 (收藏)</a> (0)</li><li>2009/09/21 -- <a href="http://cssrainbow.cn/tutorials/xhtml-css/734.html" title="CSS3的新功能快速体验和应用">CSS3的新功能快速体验和应用</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://cssrainbow.cn/tutorials/xhtml-css/961.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>用CSS改变选择文本的背景颜色</title>
		<link>http://cssrainbow.cn/tutorials/xhtml-css/901.html</link>
		<comments>http://cssrainbow.cn/tutorials/xhtml-css/901.html#comments</comments>
		<pubDate>Mon, 18 Jan 2010 09:09:55 +0000</pubDate>
		<dc:creator>Rainbow</dc:creator>
				<category><![CDATA[(X)HTML / CSS]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[::selection]]></category>
		<category><![CDATA[CSS3]]></category>

		<guid isPermaLink="false">http://cssrainbow.cn/?p=901</guid>
		<description><![CDATA[我经常浏览国外一些大牛的网站，每当我用鼠标选择网页上的文本时，文字的背景色不是默认的深蓝色，而是，他们改变成了与自己网站相协调的背景色。这一个小的技巧非常有用，我到网上搜寻一些关于改变 “ 选择文本的背景颜色 ” 的解决方案。]]></description>
			<content:encoded><![CDATA[<p>
我经常浏览国外一些大牛的网站，每当我用鼠标选择网页上的文本时，文字的背景色不是默认的深蓝色，而是，他们改变成了与自己网站相协调的背景色。这一个小的技巧非常有用，我到网上搜寻一些关于改变 “ 选择文本的背景颜色 ” 的解决方案。</p>
<p> 这么酷的方法，只有CSS3的 UI元素状态伪类 <span class="param">E::selection</span> 选择器才能实现此功能，:<span class="param">:selection</span> 它可以选择任何您想要的颜色 ，与您的网站文字匹配协调的高亮颜色。使用鼠标按下不放选择文字的时候可以看到。</p>
<blockquote>
<p>目前，只有 Safari 和 Firefox 支持此CSS3属性，不过语法上还有些稍微的区别。</p>
</blockquote>
<p><span id="more-901"></span></p>
<p>在主流的浏览器中使用感觉非常好，但是，却得到了其他浏览器的支持，非常遗憾。不过丝毫没有改变我们的使用热情,这可能看起来没有什么，但它是一个微妙的效果，可以为您的网站增加一些视觉吸引力！</p>
<h2>The CSS3 Code :</h2>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="css" style="font-family:monospace;"><span style="color: #00AA00;">:</span><span style="color: #3333ff;">:selection </span><span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#ffb7b7</span><span style="color: #00AA00;">;</span> <span style="color: #808080; font-style: italic;">/* Safari */</span>
	<span style="color: #00AA00;">&#125;</span>
<span style="color: #00AA00;">:</span><span style="color: #3333ff;">:-moz-selection </span><span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#ffb7b7</span><span style="color: #00AA00;">;</span> <span style="color: #808080; font-style: italic;">/* Firefox */</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<p>&nbsp;</p>
<p><a href="http://css-tricks.com/examples/DifferentSelectionColors/" class="button">View Demo » </a> </p>
<p>&nbsp;</p>
<h2>不同的段落选择颜色：</h2>
<pre>
p.red::selection {
	background: #ffb7b7;
}
p.red::-moz-selection {
	background: #ffb7b7;
}
p.blue::selection {
	background: #a8d1ff;
}
p.blue::-moz-selection {
	background: #a8d1ff;
}
p.yellow::selection {
	background: #fff2a8;
}
p.yellow::-moz-selection {
	background: #fff2a8;
}
</pre>
<h3  class="related_post_title">相关日志 »</h3><ul class="related_post"><li>2010/05/06 -- <a href="http://cssrainbow.cn/articles/web-roundups/1254.html" title="CSS3 和 HTML5 兼容性测试">CSS3 和 HTML5 兼容性测试</a> (3)</li><li>2010/03/22 -- <a href="http://cssrainbow.cn/code-snippets/javascript-code-snippets/1187.html" title="简单的斑马纹表格">简单的斑马纹表格</a> (2)</li><li>2010/01/24 -- <a href="http://cssrainbow.cn/articles/web-roundups/932.html" title="在Webkit浏览器中，使用CSS3替代7个JavaScript效果">在Webkit浏览器中，使用CSS3替代7个JavaScript效果</a> (0)</li><li>2009/11/03 -- <a href="http://cssrainbow.cn/tutorials/xhtml-css/797.html" title="征服，高级CSS选择器(收藏)">征服，高级CSS选择器(收藏)</a> (1)</li><li>2009/09/21 -- <a href="http://cssrainbow.cn/tutorials/xhtml-css/734.html" title="CSS3的新功能快速体验和应用">CSS3的新功能快速体验和应用</a> (0)</li><li>2009/09/01 -- <a href="http://cssrainbow.cn/tutorials/xhtml-css/684.html" title="CSS 3.0 中文参考手册 &#038; CSS3系列教程">CSS 3.0 中文参考手册 &#038; CSS3系列教程</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://cssrainbow.cn/tutorials/xhtml-css/901.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>实现侧边栏滚动的多种技术，基于CSS,jQuery or MooTools</title>
		<link>http://cssrainbow.cn/tutorials/xhtml-css/882.html</link>
		<comments>http://cssrainbow.cn/tutorials/xhtml-css/882.html#comments</comments>
		<pubDate>Thu, 14 Jan 2010 06:29:45 +0000</pubDate>
		<dc:creator>Rainbow</dc:creator>
				<category><![CDATA[(X)HTML / CSS]]></category>
		<category><![CDATA[Demos & Downloads]]></category>
		<category><![CDATA[MooTools]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[MooTools 实例]]></category>

		<guid isPermaLink="false">http://cssrainbow.cn/?p=882</guid>
		<description><![CDATA[当我们，页面内容的篇幅很长的时候,我们需要拼命的向下滚动页面，鼠标滚动的次数过多，难免有些让人不耐烦。这样，就需要在文章的侧面需要一个“目录侧栏”，如果“目录侧栏”跟着滚动页面动作移动那就更好了，非常有利于用户体验，有很多方法去做“Number”。本文就告诉你实现侧边栏滚动的多种技术。]]></description>
			<content:encoded><![CDATA[<p>当我们，页面内容的篇幅很长的时候,我们需要拼命的向下滚动页面，鼠标滚动的次数过多，难免有些让人不耐烦。这样，就需要在文章的侧面需要一个“目录侧栏”，如果“目录侧栏”跟着滚动页面动作移动那就更好了，非常有利于用户体验，有很多方法去做“Number”。本文就告诉你实现侧边栏滚动的多种技术。</p>
<p>我们将讨论两个：CSS和JavaScript（jQuery，MooTools）技巧。 </p>
<blockquote>
<p><strong>本文的教程来自：</strong><a href="http://css-tricks.com/scrollfollow-sidebar/" rel="bookmark" title="Permanent Link to Scroll/Follow Sidebar, Multiple Techniques">Scroll/Follow Sidebar, Multiple Techniques</a>，具体内容请看原英文内容。</p>
<p><strong>网站：</strong><a href="http://css-tricks.com/">css-tricks.com</a></p>
<p><span id="more-882"></span></p>
<p><a href="http://css-tricks.com/scrollfollow-sidebar/"></a></p>
</blockquote>
<p><img  class="center" src="http://cssrainbow.cn/dw-content/scrollingsidebar.png" width="570" height="246"  alt="scrollingsidebar"/></p>
<h2>CSS 技术</h2>
<p>最简单的处理方法就是使用CSS固定定位( CSS fixed positioning)。</p>
<h3>The HTML Code</h3>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;page-wrap&quot;</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;main&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;sidebar&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span></pre></td></tr></table></div>

<h3>The CSS Code</h3>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
</pre></td><td class="code"><pre class="css" style="font-family:monospace;"><span style="color: #cc00cc;">#page-wrap</span> <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span> <span style="color: #933;">600px</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">margin</span><span style="color: #00AA00;">:</span> <span style="color: #933;">15px</span> <span style="color: #993333;">auto</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">position</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">relative</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #cc00cc;">#sidebar</span> <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span> <span style="color: #933;">190px</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">position</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">fixed</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">margin-left</span><span style="color: #00AA00;">:</span> <span style="color: #933;">410px</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<p>使用此技术，当向下滚动页面时，使侧边栏永远停留在你的旁边。</p>
<p>&nbsp;</p>
<p><a href="http://css-tricks.com/scrollfollow-sidebar/" class="button">View Demo </a>
</p>
<p>&nbsp;</p>
<h2>JavaScript 技术</h2>
<p>如果我们使用JavaScript,主要用到的是 <span class="param">window.scroll</span> 事件。</p>
<p><strong>代码优化来自</strong>  <a href="http://dougneiner.com/">Doug Neiner</a>:</p>
<h3>The jQuery JavaSript</h3>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">$<span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #003366; font-weight: bold;">var</span> $sidebar   <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#sidebar&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
        $window    <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span>window<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
        offset     <span style="color: #339933;">=</span> $sidebar.<span style="color: #660066;">offset</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
        topPadding <span style="color: #339933;">=</span> <span style="color: #CC0000;">15</span><span style="color: #339933;">;</span>
&nbsp;
    $window.<span style="color: #000066;">scroll</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>$window.<span style="color: #660066;">scrollTop</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&gt;</span> offset.<span style="color: #660066;">top</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            $sidebar.<span style="color: #000066;">stop</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">animate</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
                marginTop<span style="color: #339933;">:</span> $window.<span style="color: #660066;">scrollTop</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> offset.<span style="color: #660066;">top</span> <span style="color: #339933;">+</span> topPadding
            <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
            $sidebar.<span style="color: #000066;">stop</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">animate</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
                marginTop<span style="color: #339933;">:</span> <span style="color: #CC0000;">0</span>
            <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>&nbsp;</p>
<p><a href="http://css-tricks.com/scrollfollow-sidebar/" class="button">View Demo </a></p>
<p>&nbsp;</p>
<h3>The MooTools</h3>
<p>在<a href="http://davidwalsh.name">David Walsh Blog</a>上有一个很好好的实例，在我的网站上已成功应用，它是 <a href="http://davidwalsh.name/scroll-sidebar">&#8220;MooTools ScrollSidebar&#8221;</a>。</p>
<p>
<img class="center" src="http://cssrainbow.cn/dw-content/MooTools-ScrollSidebar.png" width="485" height="452" alt="ScrollSidebar" /> </p>
<p>&nbsp;</p>
<p><a href="http://davidwalsh.name/dw-content/scrolling-sidebar.php" class="button">View Demo </a></p>
<h3  class="related_post_title">相关日志 »</h3><ul class="related_post"><li>2010/06/30 -- <a href="http://cssrainbow.cn/tutorials/jquery/1347.html" title="盒子（Box）中间的链接（Links）,基于MooTools or jQuery ">盒子（Box）中间的链接（Links）,基于MooTools or jQuery </a> (5)</li><li>2010/06/24 -- <a href="http://cssrainbow.cn/tutorials/jquery/1331.html" title="打破重复的动画效果,基于CSS,MooTools or jQuery">打破重复的动画效果,基于CSS,MooTools or jQuery</a> (3)</li><li>2010/03/30 -- <a href="http://cssrainbow.cn/tutorials/jquery/1225.html" title="关于‘TOP’置顶链接的那些事儿">关于‘TOP’置顶链接的那些事儿</a> (0)</li><li>2010/03/05 -- <a href="http://cssrainbow.cn/code-snippets/mootools-code-snippets/1141.html" title="删除残破的图片（Broken Images），基于 MooTools or jQuery">删除残破的图片（Broken Images），基于 MooTools or jQuery</a> (0)</li><li>2010/02/05 -- <a href="http://cssrainbow.cn/tutorials/mootools/1104.html" title="网页换肤,基于MooTools or jQuery">网页换肤,基于MooTools or jQuery</a> (1)</li><li>2010/02/03 -- <a href="http://cssrainbow.cn/tutorials/jquery/1078.html" title="Google-Style之元素褪色（Element Fading），基于MooTools or jQuery">Google-Style之元素褪色（Element Fading），基于MooTools or jQuery</a> (0)</li><li>2009/12/02 -- <a href="http://cssrainbow.cn/tutorials/jquery/835.html" title="在网站外部链接旁边添加Favorite Icons的方法，基于MooTools or jQuery">在网站外部链接旁边添加Favorite Icons的方法，基于MooTools or jQuery</a> (0)</li><li>2009/11/10 -- <a href="http://cssrainbow.cn/tutorials/jquery/819.html" title="学会做一个简易的 Tooltip 效果，基于 MooTools or jQuery">学会做一个简易的 Tooltip 效果，基于 MooTools or jQuery</a> (3)</li><li>2009/11/04 -- <a href="http://cssrainbow.cn/tutorials/jquery/805.html" title="创建一个‘精灵’导航菜单，基于 CSS Sprites And MooTools or jQuery ">创建一个‘精灵’导航菜单，基于 CSS Sprites And MooTools or jQuery </a> (0)</li><li>2009/09/24 -- <a href="http://cssrainbow.cn/tutorials/jquery/742.html" title="模仿Flickr的下拉导航条，基于MooTools &#038; jQuery实现的">模仿Flickr的下拉导航条，基于MooTools &#038; jQuery实现的</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://cssrainbow.cn/tutorials/xhtml-css/882.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>解密CSS Sprites：技巧、工具和教程 (收藏)</title>
		<link>http://cssrainbow.cn/tutorials/xhtml-css/800.html</link>
		<comments>http://cssrainbow.cn/tutorials/xhtml-css/800.html#comments</comments>
		<pubDate>Wed, 04 Nov 2009 02:40:47 +0000</pubDate>
		<dc:creator>Rainbow</dc:creator>
				<category><![CDATA[(X)HTML / CSS]]></category>
		<category><![CDATA[Web Roundups]]></category>
		<category><![CDATA[CSS Sprites]]></category>

		<guid isPermaLink="false">http://cssrainbow.cn/?p=800</guid>
		<description><![CDATA[CSS Sprites并没有一个确定的中文翻译，通常被意译为“CSS图像拼合”或“CSS贴图定位”。CSS Sprites并不是一门新技术，目前它已经在网页开发中发展得较为成熟。CSS Sprites并不是什么金科玉律，但在很多情况下，它有着一定的优势，最重要的是它可以减轻服务器的负载，提高网页加载速度。

本文系统的介绍了CSS Sprites的概念、用途和用法，相信本文会解决你在使用CSS Sprites中遇到的大部分问题。]]></description>
			<content:encoded><![CDATA[<p><span class="bodytag"><em><a class="bodytag" target="_blank" href="#"><em>CSS</em></a></em></span> Sprites并没有一个确定的中文翻译，通常被意译为“CSS图像拼合”或“CSS贴图定位”。CSS Sprites并不是一门新技术，目前它已经在<span class="bodytag"><em>网页</em></span>开发中发展得较为成熟。CSS Sprites并不是什么金科玉律，但在很多情况下，它有着一定的优势，最重要的是它可以减轻服务器的负载，提高网页加载速度。</p>
<p>本文系统的介绍了<span class="bodytag"><em><a class="bodytag" target="_blank" href="#"><em>CSS</em></a></em></span> Sprites的概念、用途和用法，相信本文会解决你在使用CSS Sprites中遇到的大部分问题。</p>
<h2>什么是<a class="bodytag" href="#" target="_blank"><em></em></a><em><a class="bodytag" target="_blank" href="#"><em>CSS</em></a></em> Sprites？</h2>
<p><span id="more-800"></span></p>
<p>“Sprite”(精灵)这个词在计算机图形学中有它独特的定义，由于游戏、视频等画质越来越高，必须有一种技术可以智能的处理材质和贴图，并且要<br />
同时保持画面流畅。“Sprite”就是这样一种技术，它将许多图片组合到一个网格上，然后通过程序将每个网格的内容定位到画面上。</p>
<p>Sprite被定位到一副静态图片上，并且通过简单的程序或硬件即可正确定位到画面上，一幅幅图片就像是被“变”出来的，他们并没有单独占用内存，所以被取名为“Sprite精灵”。</p>
<p>&nbsp;</p>
<p class="showcase"><a href="http://img45.imageshack.us/img45/4259/buildingssheet7dv.png"><img src="http://cssrainbow.cn/Project/CSS-HTML/demo14/2152344114-0.gif" alt="Screenshot" border="0" width="450" height="299"></a></p>
<p class="showcase">上图是口袋妖怪的组合图片，可以<a href="http://gmc.yoyogames.com/lofiversion/index.php/t307986.html">点这里欣赏更多</a>。不是加载每个但以图片</p>
<p class="showcase">时间进行到2000年，Web<a class="bodytag" target="_blank" href="http://www.yeeyan.com/articles/tag/%E8%AE%BE%E8%AE%A1"><em>设计</em></a>向着精致、巧妙的方向发展。设计师们开始考虑使用非Javascript的方 式制作鼠标滑过、悬停菜单的效果，这时<span class="bodytag"><em><a class="bodytag" target="_blank" href="#"><em>CSS</em></a></em></span> Sprite应运而生，它基于同上文提到的游戏Sprite同样的原理，并且使用CSS更容易控制，很快的流行开来。</p>
<p>2004年，Dave Shea 提出了一种使用<span class="bodytag"><em><a class="bodytag" target="_blank" href="#"><em>CSS</em></a></em></span>控制组合图片的<a href="http://www.alistapart.com/articles/sprites">方案</a> ，将许过小的图片组合在一起，使用css定义背景属性，来控制图片的显示位置和方式。</p>
<p>当页面加载时，不是加载每个单独图片，而是一次加载整个组合图片。这是一个了不起的改进，它大大减少了HTTP请求的次数，减轻服务器压力，同时缩短了悬停加载图片所需要的时间延迟，使效果更流畅，不会停顿。</p>
<h2><a class="bodytag" href="#" target="_blank"><em></em></a><em><a class="bodytag" target="_blank" href="#"><em>CSS</em></a></em> Sprites用在哪里？</h2>
<p><span class="bodytag"><em><a class="bodytag" target="_blank" href="#"><em>CSS</em></a></em></span> Sprites可以用在很多场合，大型网站可以将许多单独的图片，以有机的方式组合起来，从而使其便于维护和更新。图片之间通常会留出较大的空白，使 得图片不会影响<span class="bodytag"><em>网页</em></span>的内容。但同时CSS Sprite大多使用于较固定的像素定位中，它的弹性较差，收到定位等因素的制约。所以，你需要在可维护性vs降低负载之间权衡利弊，选择最适合你的项目 的方式。</p>
<p>下面是一些<span class="bodytag"><em><a class="bodytag" target="_blank" href="#"><em>CSS</em></a></em></span> Sprites的使用范例：</p>
<p><a href="http://www.xing.de/">Xing</a></p>
<p>这个网站将一些按钮、图标以及LOGO做成了<span class="bodytag"><em><a class="bodytag" target="_blank" href="#"><em>CSS</em></a></em></span> Sprites：</p>
<p class="showcase"><img src="http://cssrainbow.cn/Project/CSS-HTML/demo14/2152343M6-1.png" alt="Screenshot" border="0" width="463" height="106"></p>
<p><a href="http://www.amazon.com/">Amazon</a><br /> 亚马逊使用的大幅、整齐巧妙的<span class="bodytag"><em><a class="bodytag" target="_blank" href="#"><em>CSS</em></a></em></span> Sprites：</p>
<p class="showcase"><a href="http://www.flickr.com/photos/mezzoblue/3217540317/"><img src="http://cssrainbow.cn/Project/CSS-HTML/demo14/215234Nb-2.png" alt="Screenshot" border="0" width="581" height="518"></a></p>
<p><a href="http://www.apple.com/">Apple</a><br /> 苹果网站使用<span class="bodytag"><em><a class="bodytag" target="_blank" href="#"><em>CSS</em></a></em></span> Sprites来制作导航菜单的鼠标悬停效果：</p>
<p class="showcase"><a href="http://images.apple.com/global/nav/images/globalnavbg.png"><img src="http://cssrainbow.cn/Project/CSS-HTML/demo14/2152342464-3.jpg" alt="Screenshot" border="0" width="575" height="141" /></a></p>
<p><a href="http://www.youtube.com/">YouTube</a><br /> <br />
YouTube使用了一个2008像素高的<span class="bodytag"><em><a class="bodytag" target="_blank" href="#"><em>CSS</em></a></em></span> Sprites：</p>
<p class="showcase"><a href="http://s.ytimg.com/yt/img/master-vfl89407.png"><img src="http://cssrainbow.cn/Project/CSS-HTML/demo14/21523442D-4.gif" alt="Screenshot" border="0" width="152" height="450"></a></p>
<p><a href="http://www.cnn.com/">CNN</a><br /> CNN使用了非常简单谨慎的方案：</p>
<p class="showcase"><a href="http://i.cdn.turner.com/cnn/.element/img/2.0/global/icons/share_sprite.gif"><img src="http://cssrainbow.cn/Project/CSS-HTML/demo14/2152342G8-5.gif" alt="Screenshot" border="0" width="20" height="200"></a></p>
<p><a href="http://www.digg.com/">Digg</a><br /> Digg的方案比较复杂：</p>
<p class="showcase"><a href="http://digg.com//img/menu-current.gif"><img src="http://cssrainbow.cn/Project/CSS-HTML/demo14/2152346092-6.gif" alt="Screenshot" border="0" width="211" height="508"></a></p>
<p><a href="http://www.yahoo.com/">Yahoo</a><br /> Yahoo将他们漂亮的图标等距离排布起来：</p>
<p class="showcase"><a href="http://l.yimg.com/a/i/ca/sp/purple/fp_spt_icons_0.0.2.png"><img src="http://cssrainbow.cn/Project/CSS-HTML/demo14/215234CX-7.gif" alt="Screenshot" border="0" width="335" height="435"></a></p>
<p><a href="http://www.google.com/">Google</a><br /> Google使用了极其简化的方案：</p>
<p class="showcase"><a href="http://www.google.ca/images/nav_logo3.png"><img src="http://cssrainbow.cn/Project/CSS-HTML/demo14/2152344H9-8.png" alt="Screenshot" border="0" width="150" height="105"></a></p>
<p><a href="http://dragoninteractive.com/">Dragon Interactive</a><br /> 一个丰富多彩的<span class="bodytag"><em><a class="bodytag" target="_blank" href="#"><em>CSS</em></a></em></span> Sprites方案：</p>
<p class="showcase"><a href="http://dragoninteractive.com/lib/i/navigation/sprite.jpg"><img src="http://cssrainbow.cn/Project/CSS-HTML/demo14/2152344X0-9.jpg" alt="Screenshot" border="0" width="556" height="350"></a></p>
<p><a href="http://tv1.rtp.pt/noticias/index.php">TV1.rtp.pt</a><br />一个很大很酷的<span class="bodytag"><em><a class="bodytag" target="_blank" href="#"><em>CSS</em></a></em></span> Sprites方案</p>
<p class="showcase"><a href="http://img.rtp.pt/noticias/images/ImgNoticias_n_repeat.jpg"><img src="http://cssrainbow.cn/Project/CSS-HTML/demo14/2152342464-10.jpg" alt="Screenshot" border="0" width="500" height="600"></a></p>
<p><span class="bodytag"><em><a class="bodytag" target="_blank" href="#"><em>CSS</em></a></em></span> Sprites常用来合并频繁使用的图形元素，如导航、LOGO、分割线、RSS图标、按钮等。通常它们不会作为<span class="bodytag"><em>网页</em></span>内容出现，因为涉及内容的图片并不是每个页面都一样。</p>
<h2>关于<a class="bodytag" href="#" target="_blank"><em></em></a><em><a class="bodytag" target="_blank" href="#"><em>CSS</em></a></em> Sprites的文章<br />
</h2>
<p><a href="http://www.alistapart.com/articles/sprites">CSS Sprites: Image Slicing’s Kiss of Death</a></p>
<p>中文版 http://www.liquidroc.name/post/my_view_on_css_<span class="bodytag"><em><a class="bodytag" target="_blank" href="http://www.yeeyan.com/articles/tag/sprites"><em>sprites</em></a></em></span>.html</p>
<p>最权威的<span class="bodytag"><em><a class="bodytag" target="_blank" href="#"><em>CSS</em></a></em></span> Sprites介绍文章之一</p>
<p class="showcase"><a href="http://www.alistapart.com/articles/sprites"><img src="http://cssrainbow.cn/Project/CSS-HTML/demo14/2152344017-11.gif" alt="Screenshot" border="0" width="175" height="112"></a></p>
<p><a title="What They Are, Why They’re Cool, and How To Use Them" href="http://css-tricks.com/css-sprites/">CSS Sprites: What They Are, Why They’re Cool And How To Use Them</a><br /> 一片图文并茂的介绍文章</p>
<p class="showcase"><a href="http://css-tricks.com/css-sprites/"><img src="http://cssrainbow.cn/Project/CSS-HTML/demo14/2152341628-12.png" alt="Screenshot" border="0" width="450" height="294"></a></p>
<p><a href="http://www.websiteoptimization.com/speed/tweak/css-sprites/">How Yahoo.com and AOL.com Improve Web Performance With CSS Sprites</a><br /> 介绍Yahoo、AOL等网站使用<span class="bodytag"><em><a class="bodytag" target="_blank" href="#"><em>CSS</em></a></em></span> Sprites降低服务器压力的案例。</p>
<p><a href="http://www.peachpit.com/articles/article.aspx?p=447210">What Are CSS Sprites?</a><br />又一片介绍文章</p>
<p class="showcase"><a href="http://www.peachpit.com/articles/article.aspx?p=447210"><img src="http://cssrainbow.cn/Project/CSS-HTML/demo14/215234K05-13.jpg" alt="Screenshot" border="0" width="377" height="542"></a></p>
<p><a title="Permanent link for this article" href="http://mezzoblue.com/archives/2009/01/27/sprite_optim/">Sprite Optimization</a><br /> Dave Shea的思考：是不是真的有必要简历复杂的大型<span class="bodytag"><em><a class="bodytag" target="_blank" href="#"><em>CSS</em></a></em></span> Sprites？答案是不！不要搞得太复杂，找到一个折中的方案才是正道。</p>
<p><a title="Permanent link for this article" href="http://mezzoblue.com/archives/2009/01/27/sprite_optim/"><img src="http://cssrainbow.cn/Project/CSS-HTML/demo14/21523434G-14.gif" alt="CSS Sprites" width="514" height="157"></a></p>
<p><a href="http://cssglobe.com/post/3028/creating-easy-and-useful-css-sprites">Creating Easy and Useful CSS Sprites</a></p>
<p>一篇教程，其源文件可下载学习</p>
<p class="showcase"><a href="http://cssglobe.com/post/3028/creating-easy-and-useful-css-sprites"><img src="http://cssrainbow.cn/Project/CSS-HTML/demo14/2152341045-15.png" alt="Screenshot" border="0" width="579" height="236"></a></p>
<p><a href="http://wellstyled.com/css-nopreload-rollovers.html">Fast Rollovers Without Preload</a></p>
<p>一个快速翻转效果的例子</p>
<p class="showcase"><a href="http://wellstyled.com/css-nopreload-rollovers.html"><img src="http://cssrainbow.cn/Project/CSS-HTML/demo14/2152343X6-16.gif" alt="Screenshot" border="0" width="471" height="27"></a></p>
<p><a href="http://cssglobe.com/post/3714/css-sprites-rounded-corners/">CSS Sprites + Rounded corners</a></p>
<p>另一个例子：使用<span class="bodytag"><em><a class="bodytag" target="_blank" href="#"><em>CSS</em></a></em></span> Sprites实现背景圆角</p>
<p class="showcase"><a href="http://cssglobe.com/post/3714/css-sprites-rounded-corners/"><img src="http://cssrainbow.cn/Project/CSS-HTML/demo14/2152344T1-17.gif" alt="Screenshot" border="0" width="479" height="105"></a></p>
<p><a href="http://websitetips.com/articles/css/sprites/">CSS Image Sprites</a></p>
<p>一篇教程</p>
<p><a href="http://www.itnewb.com/archive/Optimize-Your-Web-Site-by-Using-CSS-Image-Sprites">Optimize Your Website Using CSS Image Sprites</a></p>
<p>非常详细的教程，介绍了<span class="bodytag"><em><a class="bodytag" target="_blank" href="#"><em>CSS</em></a></em></span> Sprites的原理和应用方法。</p>
<p class="showcase"><a href="http://www.itnewb.com/archive/Optimize-Your-Web-Site-by-Using-CSS-Image-Sprites"><img src="http://cssrainbow.cn/Project/CSS-HTML/demo14/215234J33-18.gif" alt="Screenshot" border="0" width="401" height="401"></a></p>
<p><a title="Animated GIF For CSS Sprites" href="http://adamducker.com/blog/7/animated-gif-for-css-sprites/">Animated GIF For CSS Sprites</a></p>
<p>一个比较特别的应用</p>
<p class="showcase"><a href="http://adamducker.com/blog/7/animated-gif-for-css-sprites/"><img src="http://cssrainbow.cn/Project/CSS-HTML/demo14/2152343634-19.gif" alt="Screenshot" border="0" width="220" height="21"></a></p>
<p><a href="http://stylemeltdown.com/2007/10/22/image-sprite-navigation-with-css/">Image Sprite Navigation With CSS</a></p>
<p>怎样制作简单的悬停菜单效果</p>
<p class="showcase"><a href="http://stylemeltdown.com/2007/10/22/image-sprite-navigation-with-css/"><img src="http://cssrainbow.cn/Project/CSS-HTML/demo14/2152341022-20.jpg" alt="Screenshot" border="0" width="490" height="80"></a></p>
<p><a href="http://www.webdesignerwall.com/tutorials/advanced-css-menu/">Advanced CSS Menu</a></p>
<p>还是悬停效果</p>
<p class="showcase"><a href="http://www.webdesignerwall.com/tutorials/advanced-css-menu/"><img src="http://cssrainbow.cn/Project/CSS-HTML/demo14/215234L45-21.gif" alt="Screenshot" border="0" width="400" height="220"></a></p>
<p><a href="http://davidwalsh.name/css-sprites">Creating and Using CSS Sprites</a></p>
<p>一个非常基本的教程</p>
<p class="showcase"><a href="http://davidwalsh.name/css-sprites"><img src="http://cssrainbow.cn/Project/CSS-HTML/demo14/2152341333-22.gif" alt="CSS Sprites Screenshot" width="383" height="150"></a></p>
<h2><a class="bodytag" href="#" target="_blank"><em></em></a><em><a class="bodytag" target="_blank" href="#"><em>CSS</em></a></em> Sprites视频教程</h2>
<p><a href="http://www.from-the-couch.com/post.cfm/title/how-to-use-css-sprites">How to Use CSS Sprites</a><br /> <br />
David Perel解释了<span class="bodytag"><em><a class="bodytag" target="_blank" href="#"><em>CSS</em></a></em></span> Sprites的基本概念，并演示了如何在<span class="bodytag"><em>网页</em></span>中使用它，长度：10分钟</p>
<p><a href="http://www.from-the-couch.com/post.cfm/title/creating-rounded-buttons-with-css-sprites">Creating Rounded Buttons With CSS Sprites</a><br /> 继续上面的教程，展示了如何制作滑动按钮</p>
<p><a href="http://nettuts.com/videos/screencasts/exactly-how-to-use-css-sprites/">Exactly How to Use CSS Sprites</a><br /> Andres Fernandez&nbsp; 展示了 <span class="bodytag"><em><a class="bodytag" target="_blank" href="#"><em>CSS</em></a></em></span> sprites如何加快加载时间和减少请求次数</p>
<p><a href="http://css-tricks.com/video-screencasts/43-how-to-use-css-sprites/">How To Use CSS Sprites</a><br /> Chris Coyier 展示了一个 <span class="bodytag"><em><a class="bodytag" target="_blank" href="#"><em>CSS</em></a></em></span> sprites的范例，他将8幅图片组合在了一起，并且使用jQuery制作了一个小程序。</p>
<p><a href="http://borkweb.com/story/faster-page-loads-with-image-concatenation">Faster Page Loads With Image Concatenation</a><br /> 对于复杂的网站，减少图片请求数量可以减轻服务器负担，这是许多站长所希望看到的。</p>
<p><a href="http://www.csslessons.com/">CSS Image Sprites In 10 Minutes</a><br /> 另一个关于导航菜单的教程</p>
<p><a href="http://www.sitepoint.com/blogs/2007/07/05/css-using-percentages-in-background-image/">CSS: Using Percentages in Background-Image</a><br /> 介绍背景图片定位的方法</p>
<p>&nbsp;</p>
<h2>利用<a class="bodytag" href="#" target="_blank"><em></em></a><em><a class="bodytag" target="_blank" href="#"><em>CSS</em></a></em> Sprites制作图像映射(image maps)</h2>
<p>使用<span class="bodytag"><em><a class="bodytag" target="_blank" href="#"><em>CSS</em></a></em></span> Sprites，你可以对一个对象的一小部分加载翻转效果，使用负值的背景图片位置( <code>background-position</code> )，你可以创建基于CSS的图像映射，下面的文章讲述了这一技术：</p>
<p><a href="http://lab.fatagnus.com/css-sprites/">CSS Image Maps Using Sprites</a><br />一个基于<span class="bodytag"><em><a class="bodytag" target="_blank" href="#"><em>CSS</em></a></em></span>的图像映射的简单例子。你可以同<a href="http://www.cssplay.co.uk/menu/imap.html">传统的方式</a>对比一下优劣。</p>
<p class="showcase"><a href="http://lab.fatagnus.com/css-sprites/"><img src="http://cssrainbow.cn/Project/CSS-HTML/demo14/21523452X-23.jpg" alt="Screenshot" width="517" height="202"></a></p>
<p><a href="http://www.alistapart.com/d/sprites/ala-image3.html">City Guide Map Using Sprites</a><br /> 另一个横向定位的例子</p>
<p class="showcase"><a href="http://www.alistapart.com/d/sprites/ala-image3.html"><img src="http://cssrainbow.cn/Project/CSS-HTML/demo14/2152343511-24.jpg" alt="Screenshot" width="403" height="402"></a></p>
<p><a href="http://www.frankmanno.com/ideas/css-imagemap/">Advanced Map Using Sprites</a><br /> 一个更高级的技术。</p>
<p class="showcase"><a href="http://www.frankmanno.com/ideas/css-imagemap/"><img src="http://cssrainbow.cn/Project/CSS-HTML/demo14/215234KC-25.jpg" alt="Screenshot" width="366" height="267"></a></p>
<h2><a class="bodytag" href="#" target="_blank"><em></em></a><em><a class="bodytag" target="_blank" href="#"><em>CSS</em></a></em> Sprites技术</h2>
<p><a href="http://alistapart.com/articles/sprites2">CSS Sprites 2</a><br /> <br />
Dave Shea 使用jQuery扩展了经典的<span class="bodytag"><em><a class="bodytag" target="_blank" href="#"><em>CSS</em></a></em></span> Sprites， 他的技术可以让不同的链接之间使用组合图片，即使用户禁用了Javascript。</p>
<p><a href="http://www.newmediacampaigns.com/page/css-sprites2-refactored-building-an-unobtrusive-jquery-plugin">CSS Sprites2 Refactored: Building an Unobtrusive jQuery Plug-In</a><br /> Joel Sutherland 制作的jQuery插件，整理了Dave Shea的功能，并简化了初始化设置。</p>
<p class="showcase"><a href="http://www.newmediacampaigns.com/page/css-sprites2-refactored-building-an-unobtrusive-jquery-plugin"><img src="http://cssrainbow.cn/Project/CSS-HTML/demo14/2152344017-26.gif" alt="CSS Sprites Screenshot" width="401" height="195"></a></p>
<p><a href="http://www.phpied.com/background-repeat-and-css-sprites/">Background Repeat and CSS Sprites</a><br /> 什么情况下使用<span class="bodytag"><em><a class="bodytag" target="_blank" href="#"><em>CSS</em></a></em></span> Sprites</p>
<p><a href="http://www.interactivellama.com/blog/archives/photoshop-script-combine-two-images-css-hover-css-sprite/">CSS Sprite: Photoshop Script Combines Two Images for CSS Hover</a><br /> 这是一个可以导入Photoshop的动作设置，可以让你快速制作翻转按钮的背景图片。</p>
<p class="showcase"><a href="http://www.interactivellama.com/blog/archives/photoshop-script-combine-two-images-css-hover-css-sprite/"><img src="http://cssrainbow.cn/Project/CSS-HTML/demo14/2152343I6-27.jpg" alt="CSS Sprites Screenshot" width="316" height="280"></a></p>
<p><a href="http://www.jennifersemtner.com/css/101/extending-css-spriting/">Extending CSS Spriting</a><br /> Jennifer Semtner 扩展了经典<span class="bodytag"><em><a class="bodytag" target="_blank" href="#"><em>CSS</em></a></em></span> Sprites技术，并讲述应该在什么时候使用它。</p>
<p><a href="http://www.fiftyfoureleven.com/weblog/web-development/css/doors-meet-sprites">Sliding Doors Meets CSS Sprites</a><br /> 滑动门技术 “<a href="http://www.alistapart.com/articles/slidingdoors/">Sliding Doors of CSS</a>.”</p>
<p><a href="http://trevordavis.net/blog/tutorial/how-to-preload-images-when-you-cant-use-css-sprites/">How to Preload Images When You Can’t Use CSS Sprites</a><br /> 如何处理<span class="bodytag"><em><a class="bodytag" target="_blank" href="#"><em>CSS</em></a></em></span> Sprites对<span class="bodytag"><em>网页</em></span>内容的影响</p>
<p><a href="http://www.sitepoint.com/blogs/2007/07/20/javascript-sprite-animation-using-jquery/">JavaScript Sprite Animation Using jQuery</a><br /> Alex Walker 结合<span class="bodytag"><em><a class="bodytag" target="_blank" href="#"><em>CSS</em></a></em></span> Sprites和jQuery，实现了“打开页面”的效果</p>
<p class="showcase"><a href="http://www.sitepoint.com/blogs/2007/07/20/javascript-sprite-animation-using-jquery/"><img src="http://cssrainbow.cn/Project/CSS-HTML/demo14/215234C36-28.gif" alt="CSS Sprites Screenshot" width="348" height="255"></a></p>
<p><a href="http://www.julienlecomte.net/blog/2007/07/4/">IE6, CSS Sprites and Alpha Transparency</a><br /> Julien Lecomte 讲述IE6下的透明hack问题</p>
<h2><a class="bodytag" href="#" target="_blank"><em></em></a><em><a class="bodytag" target="_blank" href="#"><em>CSS</em></a></em> Sprite 制作工具<br />
</h2>
<p><a href="http://duris.ru/lang/en/">Data URI Sprites</a><br /> <br />
DURIS (Data URI [<span class="bodytag"><em><a class="bodytag" target="_blank" href="#"><em>CSS</em></a></em></span>] Sprites) 是一个管理<span class="bodytag"><em>网页</em></span>图片的新工具，它可以最大限度的帮助你减少背景图片的数量，减少请求数。</p>
<p class="showcase"><a href="http://duris.ru/lang/en/"><img src="http://cssrainbow.cn/Project/CSS-HTML/demo14/2152343303-29.gif" alt="Screenshot" border="0" width="497" height="303" /></a></p>
<p><a href="http://printf.ru/spritr/">Spritr</a><br /> <br />
一个生成<span class="bodytag"><em><a class="bodytag" target="_blank" href="#"><em>CSS</em></a></em></span> Sprites的简单工具</p>
<p><a href="http://www.floweringmind.com/sprite-creator/index.php">Sprite Creator 1.0</a><br /> 同上</p>
<p><a href="http://drupal.org/project/sprites">CSS Sprite Generator</a><br /> 制作<span class="bodytag"><em><a class="bodytag" target="_blank" href="#"><em>CSS</em></a></em></span> sprites 的Drupal插件</p>
<p><a href="http://www.csssprites.com/">CSS Sprites Generator</a><br /> 这个工具允许你上传多张图片生成<span class="bodytag"><em><a class="bodytag" target="_blank" href="#"><em>CSS</em></a></em></span> Sprites和CSS代码</p>
<p><a href="http://spritegen.website-performance.org/">Projekt Fondue CSS Sprite Generator</a><br /> 它具有忽略重复图像，调整图像精度，确定横向和纵向偏移，指定背景色和透明度，指定<span class="bodytag"><em><a class="bodytag" target="_blank" href="#"><em>CSS</em></a></em></span>前缀等众多功能。</p>
<p class="showcase"><a href="http://spritegen.website-performance.org/"><img src="http://cssrainbow.cn/Project/CSS-HTML/demo14/2152345429-30.gif" alt="Screenshot" border="0" width="511" height="492"></a></p>
<p><a href="http://smartsprites.osinski.name/">SmartSprites</a><br /> 基于java的桌面程序</p>
<p>你可以继续以你自己的方式编写<span class="bodytag"><em><a class="bodytag" target="_blank" href="#"><em>CSS</em></a></em></span>和使用图像，有一个工具可以自动为你设置CSS Sprites，<a href="http://www.tanila.de/smartsprite/index.php">这里是PHP 版本</a> ，它是开源的，具体可以看： <a href="http://tanila.de/smartsprite/index.php">Chris Brainard’s Sprite Creator 1.0</a>.</p>
<p>&nbsp;</p>
<h2>附：<a class="bodytag" href="#" target="_blank"><em></em></a><em><a class="bodytag" target="_blank" href="#"><em>CSS</em></a></em>属性background-position(图像背景位置)该如何设置</h2>
<p>background-position(图像背景位置)这个属性是<span class="bodytag"><em><a class="bodytag" target="_blank" href="#"><em>CSS</em></a></em></span>中非常重要的属性。</p>
<p>根据<span class="bodytag"><em><a class="bodytag" target="_blank" href="#"><em>CSS</em></a></em></span>规范，background-position属性包含了两个(可选的)变量：水平位置(horizontal)和垂直位置(vertical)，例如：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="css" style="font-family:monospace;"><span style="color: #6666ff;">.introduction</span> <span style="color: #00AA00;">&#123;</span> 
   <span style="color: #000000; font-weight: bold;">background-image</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000; font-style: italic;">bg.gif</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span>
   <span style="color: #000000; font-weight: bold;">background-position</span><span style="color: #00AA00;">:</span> <span style="color: #00AA00;">&#91;</span>horizontal <span style="color: #000000; font-weight: bold;">position</span><span style="color: #00AA00;">&#93;</span> <span style="color: #00AA00;">&#91;</span>vertical <span style="color: #000000; font-weight: bold;">position</span><span style="color: #00AA00;">&#93;</span><span style="color: #00AA00;">;</span> 		
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<p>使用这个属性，你可以定义块级元素的背景图像位置，可以使用%百分比或px像素为单位来定义图像开始的位置，也可以使用关键字：top<br />
left, top center, top right, center left, center center, center right,<br />
bottom left, bottom center, bottom right.</p>
<p>在“ <code>background-position: x% y%;&nbsp;</code> ”这样一个语句中，x%指水平偏移，y%指垂直偏移，左上角是：0%,0%，右下角是：100%,100%，默认的是50%。</p>
<p>例如，你可以这样定义：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="css" style="font-family:monospace;">ul li <span style="color: #00AA00;">&#123;</span>  
   <span style="color: #000000; font-weight: bold;">background-image</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000; font-style: italic;">bg.gif</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span>  
   <span style="color: #000000; font-weight: bold;">background-position</span><span style="color: #00AA00;">:</span> <span style="color: #933;">19px</span> <span style="color: #933;">85px</span><span style="color: #00AA00;">;</span>  
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<p>这样背景图片就被定位到了距离左侧19像素，距离上边85像素。</p>
<p>关于这个属性，可以在这里找到更详细的资料：<a href="http://reference.sitepoint.com/css/background-position">background-position (CSS property)</a> 。</p>
<p>&nbsp;</p>
<p>英文原文：<a href="http://www.smashingmagazine.com/2009/04/27/the-mystery-of-css-sprites-techniques-tools-and-tutorials/">Smashing Magazine</a><br />中文翻译：<a href="http://oncoding.net/rebuild/css/article200904/150.html" target="_blank">Oncoding编码营</a></p>
<h3  class="related_post_title">相关日志 »</h3><ul class="related_post"><li>2010/01/25 -- <a href="http://cssrainbow.cn/tutorials/xhtml-css/961.html" title="Sexy Bookmarks 效果，基于CSS">Sexy Bookmarks 效果，基于CSS</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://cssrainbow.cn/tutorials/xhtml-css/800.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>征服，高级CSS选择器(收藏)</title>
		<link>http://cssrainbow.cn/tutorials/xhtml-css/797.html</link>
		<comments>http://cssrainbow.cn/tutorials/xhtml-css/797.html#comments</comments>
		<pubDate>Tue, 03 Nov 2009 01:29:02 +0000</pubDate>
		<dc:creator>Rainbow</dc:creator>
				<category><![CDATA[(X)HTML / CSS]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[CSS3]]></category>

		<guid isPermaLink="false">http://cssrainbow.cn/?p=797</guid>
		<description><![CDATA[CSS是对网页设计师可用的最强大的工具之一。使用它我们可以在几分钟内改变一个网站的界面，而不用改变页面的标签。但是尽管事实上，我们每个人也 都意识到了它是有用的，CSS 选择器远未发挥它们的潜力，有的时候我们还趋向于使用过多的和无用的class、id、div、span等把我们的HTML搞的很凌乱。

避免让这些“瘟疫”在你的标签中传播并保持其简洁和语义化的最佳方式，就是使用更复杂的CSS选择器，它们可以定位于指定的元素而不用使用额外的class或id，而且通过这种方式也可以让我们的代码和样式更加灵活。]]></description>
			<content:encoded><![CDATA[<h1 align="center">征服，高级CSS选择器(收藏)</h1>
<div>原文：<a href="http://www.qianduan.net/taming-advanced-css-selectors.html">征服高级CSS选择器</a> &nbsp;&nbsp;译者：<a href="http://www.qianduan.net">前端观察</a><br />
  译自：<a href="http://www.smashingmagazine.com/2009/08/17/taming-advanced-css-selectors/" target="_blank">Taming Advanced CSS Selectors</a>
</div>
<p>CSS是对网页设计师可用的最强大的工具之一。使用它我们可以在几分钟内改变一个网站的界面，而不用改变页面的标签。但是尽管事实上，我们每个人也  都意识到了它是有用的，CSS  选择器远未发挥它们的潜力，有的时候我们还趋向于使用过多的和无用的class、id、div、span等把我们的HTML搞的很凌乱。</p>
<p><span id="more-797"></span></p>
<p>避免让这些“瘟疫”在你的标签中传播并保持其简洁和语义化的最佳方式，就是使用更复杂的CSS选择器，它们可以定位于指定的元素而不用使用额外的class或id，而且通过这种方式也可以<strong>让我们的代码和样式更加灵活</strong>。</p>
<h2>CSS的优先级</h2>
<p>在深入研究高级CSS选择器领域之前，理解CSS优先级是如何工作的是很重要的，这样我们就知道如何适当的使用我们的选择器并避免浪费大量的时间来调试一些只要我们注意到优先级的话就很容易被搞定的问题</p>
<p>当我们写CSS的时候我们必须注意有些选择器在级联(cascade)上会<strong>高于</strong>其它选择器，我们写在最后面的选择器将不一定会覆盖前面我们写在同一个元素的样式。</p>
<p>那么你如何<strong>计算指定选择器的优先级</strong>？如果你考虑到将优先级表示为用逗号隔开的四个数字就会相当简单，比如：1, 1, 1, 1 或0, 2, 0, 1</p>
<ol>
<li>第一个数字(a)通常就是0，除非在标签上使用style属性；</li>
<li>第二个数字(b)是该选择器上的id的数量的总和；</li>
<li>第三个数字(c)是用在该选择器上的其它属性选择器和伪类的总和。这里包括class (.example) 和属性选择器(比如 li[id=red])；</li>
<li>第四个数字(d)计算元素(就像table、p、div等等)和伪元素(就像:first-line等)；</li>
<li>通用选择器(*)是0优先级；</li>
<li>如果两个选择器有同样的优先级，在样式表中后面的那个起作用。</li>
</ol>
<p>让我们看几个例子，这样或许比较容易理解些：</p>
<ul>
<li>#sidebar h2 — 0, 1, 0, 1</li>
<li>h2.title — 0, 0, 1, 1</li>
<li>h2 + p — 0, 0, 0, 2</li>
<li>#sidebar p:first-line — 0, 1, 0, 2</li>
</ul>
<p>在下面的例子中，第一个将会起作用，因为它比第二个优先级高：</p>
<ul>
<li>#sidebar p#first { color: red; } — 0, 2, 0, 1</li>
<li>#sidebar p:first-line { color: blue; } — 0, 1, 0, 2</li>
</ul>
<p>至少基本理解优先级是如何工作的是很重要的，但是一些工具比如<strong>Firebug</strong>，在我们审查指定元素的时候，按照选择器的优先级列出所有的css选择器对让我们知道在指定元素上哪个选择器是有效的是很有用的。</p>
<p><img src="http://cssrainbow.cn/Project/CSS-HTML/demo13/firebug.jpg" width="535" height="256" /><br />
  <em>让你非常容易的看到那个选择器作用于一个元素上了。</em></p>
<p>有用的文章:</p>
<ul>
<li><a href="http://www.smashingmagazine.com/2007/07/27/css-specificity-things-you-should-know/">CSS Specificity: Things You Should Know</a></li>
<li><a href="http://meyerweb.com/eric/css/link-specificity.html">Link Specificity¯MeyerWeb</a></li>
<li><a href="http://www.stuffandnonsense.co.uk/archives/css_specificity_wars.html">CSS: Specificity Wars</a></li>
<li><a href="http://www.w3.org/TR/CSS2/cascade.html">Assigning property values, Cascading, and Inheritance—W3C</a></li>
</ul>
<h2>1. 属性选择器</h2>
<p>属性选择器(Attribute selector)让你可以基于属性来定位一个元素。你可以只指定该元素的某个属性，这样所有使用该属性——而不管它的值——的这个元素都将被定位，也可以更加明确并<strong>定位在这些属性上使用特定值的元素</strong> —— 这就是属性选择器展示它们的威力的地方。</p>
<p>有6个不同类型的属性选择器：</p>
<ul>
<li>[att=value]<br />
    该属性有指定的确切的值。</li>
<li>[att~=value]<br />
    该属性的值必须是一系列用空格隔开的多个值，(比如，class=”title featured home”)，而且这些值中的一个必须是指定的值”value”。</li>
<li>[att|=value]<br />
    属性的值就是“value”或者以“value”开始并立即跟上一个“-”字符，也就是“value-”。(比如lang=”zh-cn”)</li>
<li>[att^=value]<br />
    该属性的值以指定值开始。</li>
<li>[att$=value]<br />
    该属性的值包含指定的值(而无论其位置)。</li>
<li>[att*=value]<br />
    该属性的值以指定的值结束</li>
</ul>
<p>比如，如果你想要<strong>改变你的博客上的日志部分元素的背景颜色</strong>，你可以使用一个指定每一个class属性值以“post-”开始的div的属性选择器：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;">div[class|=&quot;post&quot;] {
   background-color: #333;
}</pre></td></tr></table></div>

<p>该语句将匹配所有class属性包含”post”并带”-”字符的div元素。(注：此处英文原文有些上下文不对应，我已经更正——译者，神飞)</p>
<p>属性选择器的另一个很有用的用处是<strong>定位不同类型的input元素</strong>。比如，如果你想让你的文本输入框使用一个特定的宽度，你可以使用下面的属性选择器：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;">input[type=&quot;text&quot;] {  	
     width: 200px;  	
}</pre></td></tr></table></div>

<p>这将匹配所有type属性值等于“text”的input元素。</p>
<p>现在我们可能像为网站上<strong>不同的文件类型的链接添加不同的图标</strong>，这样你的网站的访客就会知道他们将获得一个图片、或者PDF文件、或者是一个word文档等。这就可以使用属性选择器来实现：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;">a[href*=&quot;.jpg&quot;] {
  	background: url(jpeg.gif) no-repeat left 50%;  	
   padding: 2px 0 2px 20px;  	
}     
a[href*=&quot;.pdf&quot;] {  	
   background: url(pdf.gif) no-repeat left 50%;  
	padding: 2px 0 2px 20px;  	
}     
a[href*=&quot;.doc&quot;] {  	
   background: url(word.gif) no-repeat left 50%;  	
   padding: 2px 0 2px 20px;  
}</pre></td></tr></table></div>

<p>在此例中，我们使用了一个定位所有的链接(a)的href属性分别以.jpg,.pdf或.doc结束(*)的属性选择器。详细可查看前端观察之前的一篇文章《<a href="http://www.qianduan.net/css-selectors-customization-link-style.html" target="_blank">使用CSS选择器创建个性化链接样式</a>》</p>
<h4>浏览器支持</h4>
<p>除了Internet Explorer 6，所有的主流浏览器都支持属性选择器。这意味着，如果你在你的网站上使用了属性选择器，你应该<strong>确保IE6用户将仍能获得一个可用的网站</strong>。比如我们的第三个例子，为链接添加图标可以给你的网站带来另一个级别的可用性，但是如果这些链接不显示任何图标，该网站仍然还是可用的。</p>
<h2>2. 子选择器</h2>
<p>子选择器用符号“>”表示。它允许你<strong>定位某个元素的第一级子元素</strong>。</p>
<p>比如，如果你想匹配所有的作为你的网站侧栏的div的子元素的h2元素，而不是可能是在div元素内的所有h2元素，也不是div的孙元素(或者更低级别的)，你就可以使用下面的选择器：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;">div#sidebar &gt; h2 {
  	font-size: 20px;  	
}</pre></td></tr></table></div>

<p>你当然也可以同时使用子元素和后代元素。比如，如果你想定位只有在body元素的子级div元素内的blockquote元素(比如你想匹配主要的div内的blockquotes，而不是其它部分的：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;">body &gt; div &gt; div blockquote {
  	margin-left: 30px;  	
}</pre></td></tr></table></div>

<h4>浏览器支持</h4>
<p>和属性选择器一样，子选择器不被IE6支持。如果你通过这种方式要实现的效果和网站的可用性或总体设计息息相关，你可以考虑使用一个class，或者使用只针对IE6的样式，但是这将有悖使用子选择器的目的。</p>
<h2>3. 兄弟组合</h2>
<p>有两类兄弟组合：临近兄弟组合和普通兄弟组合</p>
<h3>临近兄弟组合</h3>
<p>该选择器使用加号“+”来链接前后两个选择器。选择器中的元素有<strong>同一个父亲</strong>，而且<strong>第二个必须紧紧的跟着第一个</strong>。</p>
<p>临近兄弟组合可以灰常有用，比如，在<strong>处理文字的时候</strong>。比如我们想对段落后面的h2标题添加一个顶间距“margin-top”(当然或许你无需为h1标签后面的h2添加，或者它可能是页面的第一个元素)：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;">p + h2 {
  	margin-top: 10px;  	
}</pre></td></tr></table></div>

<p>你甚至可以更加具体，你想定位某个特定的div后面的h2：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;">div.post p + h2 {  	
   margin-top: 10px;  	
}</pre></td></tr></table></div>

<p>或者你可以搞得更加复杂：页面的第一个段落的第一行字母显示为小写字母。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;">.post h1 + p:first-line {
  	font-variant: small-caps;  	
}</pre></td></tr></table></div>

<p>因为可能大部分日志/文章的第一个段落都会紧紧的在H1标签的后面。你可以在你的选择器中借助于h1标签。</p>
<h3>普通兄弟组合</h3>
<p>普通兄弟组合和临近兄弟组合的工作原理很像，不同的是<strong>第二个选择其无需紧紧跟随第一个</strong>。</p>
<p>如果你需要定位所有的某个特定的div里面并且跟在h1标签后面的p标签的话(你可能想要这些p标签比拟的日志的标题前面的文字大些)，你就可以使用这个选择器：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;">.post h1 ~ p { 
 	font-size: 13px;  	
}</pre></td></tr></table></div>

<p>注：这两个选择器太像了，所有不是很好理解，可以试一试下面的这个例子：</p>
<p><strong>The CSS:</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;">p + h2{color:red;}  	
p ~ h2{font-weight:700;}</pre></td></tr></table></div>

<p><strong>The HTML:</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">p</span>&gt;</span>咳咳，内容。<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">p</span>&gt;</span>  
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">h2</span>&gt;</span>标题1<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">h2</span>&gt;</span>  
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">h2</span>&gt;</span>标题2<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">h2</span>&gt;</span></pre></td></tr></table></div>

<p>看看第二个h2的颜色就可以理解了吧？临近兄弟组合只能匹配第一个选择器后面的第一个兄弟选择其，普通兄弟组合则能匹配所有。</p>
<p>注：该部分英文原文没有，是神飞翻译时自己添加。</p>
<h4>浏览器支持</h4>
<p>Internet Explorer 6依然不能理解兄弟选择器，但是，另一种情况，如果你的用户中只有一小部分是IE6用户，而且网站的结构不会被破坏或者受到严重影响，这是实现很多很酷的效果而无需在你的HTML代码中添加无用的class或id。</p>
<h2>4. 伪类</h2>
<h3>动态伪类</h3>
<p>之所以被称为动态伪类是因为它们并不存在于HTML中——而是只有<strong>当用户和网站交互的时候</strong>才会呈现。</p>
<p>有两类动态伪类：<strong>链接</strong> 和<strong>用户行为</strong>。链接就是:link 和:visited，而用户行为包括:hover、:active 和:focus。</p>
<p>在本文中提到的css选择器中，这几个应该是<strong>最常用到</strong>的。</p>
<p><strong>:link</strong>伪类用于链接尚未被用户访问的时候，而<strong>:visited</strong> 伪类用于用户访问过的链接，也就是说它们是相反的。</p>
<p><strong>:hover</strong>伪类用于用户移动他们的鼠标在元素上，而尚未触发或点击它的时候。<strong>:active</strong>伪类应用于用户点击元素的情况。最后，<strong>:focus</strong>伪类用于元素成为焦点的时候——最常用于表单元素。</p>
<p>你可以在你的样式表中使用多种用户行为动态伪类，这样你就可以，比如，根据用户的鼠标只是滑过或悬停的时候，为一个输入框定义不同的背景色:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;">&nbsp;
input:focus {
  	background: #D2D2D2;
  	border: 1px solid #5E5E5E;  	
}  
input:focus:hover {
  	background: #C7C7C7;  	
}</pre></td></tr></table></div>

<h4>浏览器兼容性</h4>
<p>动态伪类被所有的现代浏览器支持，甚至IE6，但是请注意，对于IE系列浏览器来说，IE6只允许:hover 伪类应用于链接元素(a标签)而且只有IE8接受:active状态。</p>
<h3>:first-child</h3>
<p>:first-child伪类允许你定位某个元素<strong>第一个子元素</strong>。比如，如果你想给你的无须列表的第一个li添加一个margin-top，你就可以这样写：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;">ul &gt; li:first-child {
  	margin-top: 10px;  	
}</pre></td></tr></table></div>

<p>让我们来看一看另一个例子:比如你想让你的博客的侧栏的H2标签都有个顶部边距，以将标题和它们前面的内容区分开来，但是第一个h2不需要，你就可以使用下面的代码：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;">#sidebar &gt; h2 {
  	margin-top: 10px;  	
}
#sidebar &gt; h2:first-child {
  	margin-top: 0;  	
}</pre></td></tr></table></div>

<h4>浏览器兼容性</h4>
<p>IE6 不支持 :first-child  伪类。根据伪类应用到的设计的不同，它或许不会成为关注的主要问题。比如，如果你使用:first-child  选择器来移除标题或段落上的头部或底部的间距，你的布局在IE6中不会坏掉，它只会看起来有些不同。但是如果你使用:first-child选择器从一  个，比如浮动元素，移除左边距或右边距，将会让你的设计乱掉。</p>
<h3>语言伪类</h3>
<p>语言伪类<strong>:lang()</strong>，允许你匹配一个基于它的语言的元素。</p>
<p>你如，你想让你的网站的某个特定的链接根据页面的语言有不同的背景颜色：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;">:lang(en) &gt; a#flag {
  	background-image: url(english.gif);  	
}     
:lang(fr) &gt; a#flag {
  	background-image: url(french.gif);  	
}</pre></td></tr></table></div>

<p>这个选择器将会匹配相关的链接——如果页面的语言等于“en”或“fr”，或者以“en”或“fr”开头并在后面带个连字符“-”的话。</p>
<h4>浏览器兼容性</h4>
<p>不幸的是，只有IE浏览器中只有IE8支持该选择器，其它的主要浏览器都支持该伪类选择器。</p>
<h2>5. CSS 3 伪类</h2>
<h3>:target</h3>
<p>当你使用锚点(片段标识符 fragment  identifier)的时候，比如，http://www.smashingmagazine.com/2009/08/02/bauhaus-  ninety-years-of-inspiration/#comments，这“#comments”就是一个片段标识符，你就可以使  用:target伪类来控制目标的样式。</p>
<p>举个例子，比如你有一个很长的使用了很多文字和h2标题的页面，然后在页面的头部有一个对这些标题的索引。如果在点击索引内的某个链接时，相应的标题以某种方式高亮，然后滚动到相应的位置，对读者就会很有用。很简单。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;">h2:target {
  	background: #F2EBD6;  	
}</pre></td></tr></table></div>

<h4>浏览器兼容性</h4>
<p>这一次，IE浏览器完全不支持:target伪类，另一个小问题就是Opera 在使用“前进”和后退按钮时不支持该选择器。但是其它的各个主流浏览器都支持该选择器。</p>
<h3>UI元素状态伪类</h3>
<p>有些HTML元素有enable 或disabled 状态(比如，文本输入框)和 checked 或unchecked 状态(单选按钮和复选框)。这些状态就可以使用<strong>:enabled</strong>、<strong>:disabled</strong> 或<strong>:checked</strong> 伪类来分别定位。</p>
<p>那么你就会想，如果任意一个禁用的(disabled)文本框应该使用浅灰色的背景和虚线边框：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;">input:disabled {
  	border:1px dotted #999;
  	background:#F2F2F2;  	
}</pre></td></tr></table></div>

<p>你也可能会想让所有选中的复选框有个左边距(这样就可以在众多的复选框中很容易认出来)：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;">input[type=”checkbox”]:checked {
  	margin-left: 15px;  	
}</pre></td></tr></table></div>

<h4>浏览器兼容性</h4>
<p>所有的主流浏览器，除了我们常常不报希望的IE系列浏览器，都支持UI元素状态伪类。如果你考虑只是<strong>添加附加级别的细节</strong>和增强网站的可用性，这个仍然是可以采用的。</p>
<h2>6. CSS 3 结构伪类</h2>
<h3>:nth-child</h3>
<p>:nth-child()伪类允许你<strong>定位某个父级元素的一个或多个特定的子元素</strong>.</p>
<p>你可以通过定义它的值为一个<strong>整数</strong>来定位某个单个子元素：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;">ul li:nth-child(3) {
  	color: red;  	
}</pre></td></tr></table></div>

<p>这将会让ul元素的第三个li元素的文字变成红色。注意如果在ul里面有个其它类型的元素(不是li)，它也会算作其子元素。</p>
<p>你可以<strong>使用表达式</strong>来定位子元素。比如，下面的表达式将从第四个开始匹配每第三个元素。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;">ul li:nth-child(3n+4) {
  	color: yellow;  	
}</pre></td></tr></table></div>

<p>在上面的这个例子中，第一个黄色的li元素将会是第四个。如果也想从第一个开始匹配，你可以使用一个简单的表达式：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;">ul li:nth-child(3n) {
  	color: yellow;  	
}</pre></td></tr></table></div>

<p>这样的话，第一个黄色的li元素将会是第三个子元素，然后是它后面的每隔第三个。现在想象一下如果你只想匹配列表中的<strong>前四个子</strong>元素：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;">ul li:nth-child(-n+4) {
  	color: green;  	
}</pre></td></tr></table></div>

<p>:nth-child的值同样也可以被定义为<strong>“even” 或“odd”</strong>，和“2n” (第偶数个) 或“2n+1” (第奇数个)的效果是一样的。</p>
<h3>:nth-last-child</h3>
<p>:nth-last-child伪类基本上和:nth-child伪类的作用相同，但是它<strong>从最后一个元素开始</strong>算。</p>
<p>使用上面的一个例子来看看：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;">ul li:nth-child(-n+4) {
  	color: green;  	
}</pre></td></tr></table></div>

<p>不是匹配最前面的四个li元素，该选择器匹配最后面的四个元素。</p>
<p>你同样可以使用“even” 或“odd”只，同样与nth-child不同的是，这是从最后面的元素开始算的：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;">ul li:nth-last-child(odd) {
  	color: grey;  	
}</pre></td></tr></table></div>

<h3>:nth-of-type</h3>
<p>:nth-of-type伪类和:nth-child也很像，不同的是它只计算选择器中指定的那个元素。</p>
<p>这对定位元素中包含大量不同的元素的情况会很有用。比如，我们想控制一个文本块中的每隔一个段落，但是我们又想要无视其它元素比如图片和引用块：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;">p:nth-of-type(even) {
  	color: blue;  	
}</pre></td></tr></table></div>

<p>你也可以使用一些值，就像在:nth-child中使用的一样。</p>
<h3>:nth-last-of-type</h3>
<p>你能猜到它吧？！:nth-last-of-type 伪类可以<strong>像前面提到的:nth-last-child一样使用</strong>，但是这次，它将之匹配你在选择器中指定的元素类型：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;">ul li:nth-last-of-type(-n+4) {
  	color: green;  	
}</pre></td></tr></table></div>

<p>我们可以更加的聪明一些，在一个大的块级选择器中<strong>结合多种这样的伪类</strong>。比如我们想让文章中的所有的图片左浮动，除了第一个和最后一个(我们可以假设他们是满宽的，无须浮动)：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;">.post img:nth-of-type(n+2):nth-last-of-type(n+2) {
  	float: left;  	
}</pre></td></tr></table></div>

<p>所以在这个选择器的第一部分，我们从第二个图片开始定位每一个图片。在第二部分中，我们定位所有的图片，除了最后一个。因为这两个选择器并非互斥的，我们可以同时使用它们，这样就可以一下子排除第一个和最后一个元素！</p>
<h3>:last-child</h3>
<p>:last-child伪类的作用类似于:first-child 伪类，但是会定位<strong>父级元素的最后一个子元素</strong>。</p>
<p>让我们假设你不想让你的日志的div的最后一个段落也有一个底部边距：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;">.post &gt; p:last-child {
  	margin-bottom: 0;  	
}</pre></td></tr></table></div>

<p>该选择器将定位class为”post”的元素的最后一个直接子级段落。</p>
<h3>:first-of-type 和:last-of-type</h3>
<p>:first-of-type 伪类用于定位一个<strong>父级元素下的第一个同类子元素</strong>。</p>
<p>比如，你可以定位某个特定的div的第一个子级段落(p)，并让其第一行字母大写:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;">.post &gt; p:first-of-type:first-line {
  	font-variant: small-caps;  	
}</pre></td></tr></table></div>

<p>在这个选择器中，你可以确定你是在只定位class为”post”的元素的直接子级p元素，而且还是匹配第一个子级p元素。</p>
<p>:last-of-type伪类与此类似，只是匹配最后一个子元素。</p>
<h3>: only-child</h3>
<p>: only-child伪类表示一个元素是它的父级元素的<strong>唯一一个子元素</strong>。</p>
<p>比如说，你有一些盒子(“news”)，里面有一些文字段落，当你有多于一个段落的时候，你想让文字比只有一个段落的时候小一些：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;">div.news &gt; p {
  	font-size: 1.2em;  	
}     
div.news &gt; p:only-child {
  	font-size: 1.5em;  	
}</pre></td></tr></table></div>

<p>第一个选择器中，我们定义”news”div的所有子级p元素的字体大小。在第二个中，我们覆盖之前的字体大小，如果该p元素是“news” div的唯一子元素的时候，它的字体大小会比较大一些。</p>
<h3>: only-of-type</h3>
<p>: only-of-type伪类表示一个元素是<strong>它的父级元素的唯一一个相同类型的子元素</strong>。</p>
<p>这有用什么用？假设你有一些日志，每一篇都有个class为”post”的div，他们中的一些有多于一张图片，但是有些可能就只有一张图片。你想让后者中的图片水平居中，而在其它的有多于一张图片的日志中，就将它左浮动。这个需求用这个选择器就很容易实现：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;">.post &gt; img {
  	float: left;  	
}     
.post &gt; img:only-of-type {
  	float: none;
  	margin: auto;  	
}</pre></td></tr></table></div>

<h3>:empty</h3>
<p>:empty伪类表示<strong>一个元素里面没有任何内容</strong>。</p>
<p>这个选择器可以用很多种用途。比如，你在你的“sidebar”中有若干个盒子，但是不想让空盒子显示出来：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;">#sidebar .box:empty {
  	display: none;  	
}</pre></td></tr></table></div>

<p>注意，就算”box”div里面只有一个空格，它也不会被css当作空标签的，这样就不能匹配该选择器了。</p>
<h4>浏览器支持</h4>
<p> Internet Explorer (直到8.0版本)都不支持结构伪类。Firefox、Safari 和Opera 在其最新版本的浏览器中指出这些选择器。这意味着，使用这些选择器对<strong>网站的可用性和可访问性</strong>是很有用的，或者如果网站的用户中的大部分是使用IE而且你不想在某些细节上无视他们，最好还是保持使用通用的class和简单的选择器来迎合这些选择器。否则你会被搞疯的！</p>
<h2>7. 否定选择器</h2>
<p>否定选择器<strong>:not()</strong>，可以让你定位<strong>不匹配</strong>该选择器的元素</p>
<p>比如，如果你需要定义表单元素中的input元素，但是又不想包括submit类型的input的时候会灰常有用——你想它们有不同的样式，以看起来像按钮：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;">input:not([type=&quot;submit&quot;]) {
  	width: 200px;
  	padding: 3px;
  	border: 1px solid #000000;  	
}</pre></td></tr></table></div>

<p>另一个例子，你想你的日志的div中的所有段落(p)有比较大的字体，除了表示时间和日期的段落：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;">.post p:not(.date) {
  	font-size: 13px;  	
}</pre></td></tr></table></div>

<p>你可以想象这个选择器能带给你的潜力了吧，你能够从你的CSS文件中剥离(剔除)的无用的大量选择器也被它广泛支持吗？</p>
<h4>浏览器支持</h4>
<p>Internet Explorer在这里常常是让我们感到扫兴的东西：一点都不支持，甚至在IE8中。这大概意味着这些选择器将仍不得不等到一些开发者开始不再顾虑将它添加到他们的样式表中才会普及。</p>
<h2>8. 伪元素</h2>
<p>伪元素允许你操作<strong>HTML中不是真实存在的元素</strong>，比如一个文本块的第一行或者第一个字母。</p>
<p>伪元素在CSS 2.1中就已经存在，但是CSS 3说明书表示他们应该使用双冒号“::”，以与伪类区分开来。在CSS 2.1中，他们也是使用单个冒号“:”的。浏览器会将能够接受两种格式，除非这些伪元素只存在于CSS3中。</p>
<h3>::first-line</h3>
<p>::first-line伪元素将匹配block、inline-block、table-caption、table-cell等等级别元素的<strong>第一行</strong></p>
<p>这对在你的文字块上添加<strong>一些微妙的排版细节</strong>相当有用，比如，将一片文章的第一行文字改成小写字母：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;">h1 + p::first-line {
  	font-variant: small-caps;  	
}</pre></td></tr></table></div>

<p>如果你专心的阅读了我们前面的内容，你将会了解到上面的语法意味着，紧紧的跟在H1标签之后(+)的段落会将其第一行文字显示为小写字母。</p>
<p>你也可以针对相关的div的第一行，而不用针对实际的段落标签(p):</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;">div.post p::first-line {
  font-variant: small-caps; 
}</pre></td></tr></table></div>

<p>或者更进一步，定位某个特低的div的第一个段落的第一行：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;">div.post &gt; p:first-child::first-line {
  	font-variant: small-caps;  	
}</pre></td></tr></table></div>

<p>这里，“>”符号表示你指定的是post div的直接子级元素，这样如果段落被包括在第二级div中，它就不会匹配这个选择器。</p>
<h3>::first-letter</h3>
<p>::first-letter伪元素将会匹配一个文本块的<strong>第一个字母</strong>，除非在同一行里面包含一些其它元素，比如图片。</p>
<p>和::first-line伪类一样，::first-letter通常用于给文本元素<strong>添加排版细节</strong>，比如下沉字母或首字母。</p>
<p>这里是如何使用::first-letter伪元素创建<strong>首字下沉</strong>的例子:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;">p {
  	font-size: 12px;  	
}     
p::first-letter {
  	font-size: 24px;
  	float: left;  	
}</pre></td></tr></table></div>

<p>注意如果你在某些元素中同时使用::first-line 和::first-letter ，::first-letter 属性将覆盖从::first-line中继承下来的某些属性。</p>
<p>如果你不知道W3C规则的话，这个元素有时会产生意想不到的结果：它事实上是使用最长的规则的选择器！所以如果你计划使用它的话<strong>最好仔细的阅读一下</strong> (其它选择器也一样)。</p>
<h3>::before 和 ::after</h3>
<p>::before和::after 伪元素用于在一个元素的前面或后面<strong>插入内容</strong>，纯CSS方法。</p>
<p>这些元素将继承它们将附加的元素的大部分属性。</p>
<p>假设你想在你的页面中的图标的描述前面添加文字“Graphic number x:”。你将无需写文字“Graphic number”，或者自己手动添加数字：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre class="html4strict" style="font-family:monospace;">.post {
  counter-reset: image;
} 
   
p.description::before {
  content: &quot;Figure number &quot; counter(image) &quot;: &quot;;
  counter-increment: image;  	
}</pre></td></tr></table></div>

<p>那么这会产生什么？</p>
<p>首先，我们告诉HTML来<strong>创建“image”计数器</strong>。比如我们可以添加该属性到页面的body。同样我们也可以给该计数器起任何一个名字，只要你想，只要我们常常使用同样的名字引用它：自己试试吧！</p>
<p>那么我们想在class为”description”的每一个段落之前添加这一块内容: “Figure number ” — 注意只有我们在引号里面写的内容才会被创建到页面中，所以我们也要添加一个空格！</p>
<p>然后，我们就有了counter(image):这将用到我们之前在.post选择器中定义的属性。它默认会从数字1开始。</p>
<p>下一个属性在那里表示计数器知道对于每一个p.description，它需要将image计数器增加1 (counter-increment: image)。</p>
<p>它并不像看起来的那么复杂，而且还会灰常的有用。</p>
<p>::before和::after伪元素常常只<strong>使用content属性</strong>，来添加一些短语或排版元素，但是这里我们展示了我们如果以一种更加强大的结合counter-reset和counter-increment属性的方式来使用它们。</p>
<p><strong>有趣的是:</strong> ::first-line 和::first-letter 伪元素可以匹配使用::before伪元素生成的内容，如果存在的话。</p>
<h4>浏览器支持</h4>
<p>如果使用单个冒号的话(比如, :first-letter, 而不是::first-letter)，这些伪元素被IE8支持(但是不被IE7或6支持)。但是左右其他的主流浏览器都支持这些选择器。</p>
<h2>结语</h2>
<p>乏味的讲述终于结束了，现在该你来领悟本文的要义并<strong>自己尝试了</strong>: 开始通过创建实验性的页面并测试所有的这些选择器，在有疑问的时候返回这里并确保总是遵循W3C的规则，但是请不要只是坐在那里想这些选择器尚未被完全支持你就无视它们。</p>
<p>如果你<strong>敢于冒险</strong>，或者你不害怕放弃之前的遍地无用和非语义化的class和id，为什么不尝试一两个这些强大的CSS选择器到你的下一个项目中呢？我们保证你不会回头的！</p>
<h2>参考</h2>
<ul>
<li><a href="http://www.w3.org/TR/CSS2/selector.html">CSS 2 Selectors — W3C</a></li>
<li><a href="http://www.w3.org/TR/css3-selectors/">CSS 3 Selectors Level 3 — W3C</a></li>
<li><a href="http://en.wikipedia.org/wiki/Comparison_of_layout_engines_%28Cascading_Style_Sheets%29">Comparison of layout engines (Cascading Style Sheets) — Wikipedia</a></li>
<li><a href="http://www.w3.org/TR/CSS2/generate.html">Generated content, automatic numbering, and lists — W3C</a></li>
</ul>
<h2>扩展资源</h2>
<ul>
<li><a href="http://www.alistapart.com/articles/keepelementskidsinlinewithoffspring/">Keeping Your Elements’ Kids in Line with Offspring — A List Apart</a></li>
<li><a href="http://css.maxdesign.com.au/selectutorial/index.htm">Selectutorial – CSS selectors </a></li>
<li><a href="http://inspectelement.com/tutorials/a-look-at-some-of-the-new-selectors-introduced-in-css3/">A Look at Some of the New Selectors Introduced in CSS3</a></li>
<li>CSS 2.1 selectors, <a href="http://www.456bereastreet.com/archive/200509/css_21_selectors_part_1/">Part 1</a> and <a href="http://www.456bereastreet.com/archive/200510/css_21_selectors_part_2/">Part 2</a></li>
<li><a href="http://www.456bereastreet.com/archive/200601/css_3_selectors_explained/">CSS 3 selectors explained</a></li>
<li><a href="http://kimblim.dk/css-tests/selectors/">CSS selectors and pseudo selectors browser compatibility</a></li>
<li><a href="http://www.impressivewebs.com/10-useful-css-properties-not-supported-by-internet-explorer/">10 Useful CSS Properties Not Supported By Internet Explorer</a></li>
<li><a href="http://webdesignernotebook.com/css/styling-a-poem-with-advanced-css-selectors/">Styling a Poem with Advanced CSS Selectors</a></li>
</ul>
<h3  class="related_post_title">相关日志 »</h3><ul class="related_post"><li>2009/09/21 -- <a href="http://cssrainbow.cn/tutorials/xhtml-css/734.html" title="CSS3的新功能快速体验和应用">CSS3的新功能快速体验和应用</a> (0)</li><li>2009/09/01 -- <a href="http://cssrainbow.cn/tutorials/xhtml-css/684.html" title="CSS 3.0 中文参考手册 &#038; CSS3系列教程">CSS 3.0 中文参考手册 &#038; CSS3系列教程</a> (0)</li><li>2010/09/02 -- <a href="http://cssrainbow.cn/tutorials/xhtml-css/1375.html" title="图像替换技术的最佳实战">图像替换技术的最佳实战</a> (2)</li><li>2010/05/06 -- <a href="http://cssrainbow.cn/articles/web-roundups/1254.html" title="CSS3 和 HTML5 兼容性测试">CSS3 和 HTML5 兼容性测试</a> (3)</li><li>2010/04/15 -- <a href="http://cssrainbow.cn/code-snippets/css-code-snippets/1234.html" title="CSS中区别IE6, IE7和 IE8  的4个非常有用的字符">CSS中区别IE6, IE7和 IE8  的4个非常有用的字符</a> (1)</li><li>2010/03/22 -- <a href="http://cssrainbow.cn/code-snippets/javascript-code-snippets/1187.html" title="简单的斑马纹表格">简单的斑马纹表格</a> (2)</li><li>2010/03/04 -- <a href="http://cssrainbow.cn/tutorials/xhtml-css/1137.html" title="Web 设计中的 5 个最具争议性的话题">Web 设计中的 5 个最具争议性的话题</a> (0)</li><li>2010/01/26 -- <a href="http://cssrainbow.cn/articles/resources/1033.html" title="网页设计中的面包屑导航：实例和最佳做法">网页设计中的面包屑导航：实例和最佳做法</a> (0)</li><li>2010/01/25 -- <a href="http://cssrainbow.cn/tutorials/xhtml-css/961.html" title="Sexy Bookmarks 效果，基于CSS">Sexy Bookmarks 效果，基于CSS</a> (0)</li><li>2010/01/25 -- <a href="http://cssrainbow.cn/articles/web-roundups/941.html" title="15个富有创意的Web表单设计,基于CSS">15个富有创意的Web表单设计,基于CSS</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://cssrainbow.cn/tutorials/xhtml-css/797.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
