<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3178662459722973496</id><updated>2011-07-08T13:41:04.126+08:00</updated><category term='firefox'/><category term='oocss'/><category term='互联网'/><category term='jquery'/><category term='翻译'/><category term='看图不说话'/><category term='css'/><category term='Let&apos;s make the web faster'/><category term='CssOptimizer'/><category term='随笔'/><category term='用户体验'/><category term='无线生活'/><category term='沈玉琳'/><category term='浏览器bug'/><category term='greasemonkey'/><category term='性能'/><category term='stylish'/><category term='chrome'/><category term='google'/><title type='text'>99css</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>62</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-7639811867424671180</id><published>2009-11-01T01:13:00.004+08:00</published><updated>2009-11-01T01:22:02.838+08:00</updated><title type='text'>博客搬家了~</title><content type='html'>&lt;p&gt;blogger.com 的所有IP都被 GFW 了，转移为 Wordpress&lt;/p&gt;
&lt;p&gt;博客地址为：&lt;a href="http://www.99css.com"&gt;http://www.99css.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;订阅地址为：&lt;a href="http://feeds2.feedburner.com/ytzong"&gt;http://feeds2.feedburner.com/ytzong&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;另：感谢加班战友&lt;a href="http://ooxx.me"&gt;大猫&lt;/a&gt;的空间支持&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-7639811867424671180?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/7639811867424671180/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=7639811867424671180&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/7639811867424671180'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/7639811867424671180'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/11/blog-post.html' title='博客搬家了~'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-4549512281602302870</id><published>2009-10-31T18:25:00.004+08:00</published><updated>2009-10-31T18:32:17.449+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='浏览器bug'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>Pixel Perfect 1</title><content type='html'>&lt;p&gt;花了几个小时小小研究了一下中文字体：&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;使用的是 Arial 字体（不同字体下的结果不同，即便同为中文）&lt;/li&gt;&lt;li&gt;列分别为12px文字、12px链接、12px加粗文字、12px加粗链接、14px文字、14px链接、14px加粗文字、14px加粗链接&lt;/li&gt;&lt;li&gt;行分别为IE6、IE7、IE8、FF3.5&lt;/li&gt;&lt;/ul&gt;&lt;a href="http://docs.google.com/File?id=ddrrtxb_17497mfm2gf3_b" target="_blank"&gt;&lt;img style="width: 640px; height: 200.374px;" src="http://docs.google.com/File?id=ddrrtxb_17497mfm2gf3_b"&gt;&lt;/a&gt;&lt;p&gt;点击图片看大图&lt;/p&gt;&lt;h3&gt;结论：&lt;/h3&gt;
&lt;table cellpadding="0"&gt;
 &lt;tr&gt;
  &lt;th&gt;Arail&lt;/th&gt;
  &lt;th&gt;12px&lt;/th&gt;
  &lt;th&gt;14px文字&lt;/th&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;th&gt;ie6/7&lt;/th&gt;
  &lt;td&gt;高11px占14px&lt;br /&gt;
  上0下3px&lt;br /&gt;
  下划线在13px处&lt;/td&gt;
  &lt;td&gt;高13px占16px&lt;br /&gt;
  上0下3px&lt;br /&gt;
  下划线在15px处&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;th&gt;ie8&lt;/th&gt;
  &lt;td&gt;高11px占15px&lt;br /&gt;
  上0下4px&lt;br /&gt;
  下划线在12px处&lt;/td&gt;
  &lt;td&gt;高13px占16px&lt;br /&gt;
  上0下3px&lt;br /&gt;
  下划线在14px处&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
  &lt;th&gt;ff3.5&lt;/th&gt;
  &lt;td&gt;字11px高15px&lt;br /&gt;
  上2px下2px&lt;br /&gt;
  下划线在14px处&lt;/td&gt;
  &lt;td&gt;高13px占16px&lt;br /&gt;
  上1px下2px&lt;br /&gt;
  下划线在16px处&lt;/td&gt;
 &lt;/tr&gt;
&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-4549512281602302870?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/4549512281602302870/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=4549512281602302870&amp;isPopup=true' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/4549512281602302870'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/4549512281602302870'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/10/pixel-perfect-1.html' title='Pixel Perfect 1'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-8590039138560515937</id><published>2009-10-25T17:19:00.004+08:00</published><updated>2009-10-25T17:31:30.410+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='性能'/><category scheme='http://www.blogger.com/atom/ns#' term='oocss'/><category scheme='http://www.blogger.com/atom/ns#' term='翻译'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>[翻译]OOCSS FAQ</title><content type='html'>&lt;ul&gt;
 &lt;li&gt;原文：&lt;a href="http://wiki.github.com/stubbornella/oocss/faq"&gt;http://wiki.github.com/stubbornella/oocss/faq&lt;/a&gt;（翻译时为Version 
 28）&lt;/li&gt;
 &lt;li&gt;翻译：&lt;a href="http://www.99css.com"&gt;ytzong&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;在OOCSS中怎么定义“对象”？&lt;/h3&gt;
&lt;p&gt;对象类似JAVA中的类，保持着OO的特征。&lt;/p&gt;
&lt;p&gt;一个CSS对象由4部分组成：&lt;/p&gt;
&lt;ol&gt;
 &lt;li&gt;可能是一个或多个DOM节点的HTML&lt;/li&gt;
 &lt;li&gt;由wrapper节点的class名开始的CSS样式声明&lt;/li&gt;
 &lt;li&gt;类似于背景图片和显示用的sprites组件以及&lt;/li&gt;
 &lt;li&gt;JavaScript行为，监听或者与对象关联的方法&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这可能令人费解，因为每个CSS class不是其自身必要的对象，但可以是一个wrapper class的一个部件。比如：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;div class=&amp;quot;mod&amp;quot;&amp;gt;
        &amp;lt;div class=&amp;quot;inner&amp;quot;&amp;gt;
                &amp;lt;div class=&amp;quot;hd&amp;quot;&amp;gt;Block Head&amp;lt;/div&amp;gt;
                &amp;lt;div class=&amp;quot;bd&amp;quot;&amp;gt;Block Body&amp;lt;/div&amp;gt;
                &amp;lt;div class=&amp;quot;ft&amp;quot;&amp;gt;Block Foot&amp;lt;/div&amp;gt;
        &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;对象是一个class为mod的模块。包括4个部件节点（不能独立于模块外，包括2个区块，inner和body，和两个可选择的区块，head和foot）&lt;/p&gt;
&lt;h3&gt;OOCSS如何提升性能？&lt;/h3&gt;
&lt;p&gt;OOCSS具有双倍的性能优势：&lt;/p&gt;
&lt;ol&gt;
 &lt;li&gt;高度重用的CSS代码，只需要很少的CSS代码，意味着： 
 &lt;ul&gt;
  &lt;li&gt;更小的文件，从而更快的传输&lt;/li&gt;
  &lt;li&gt;CSS代码在站点页面中调用的比重增大则有希望被复用或被浏览器缓存&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;就浏览器而言更少的重绘和布局计算 
 &lt;ul&gt;
  &lt;li&gt;单个页面，CSS规则复用的越多，渲染引擎花在“computed values”的计算时间越少&lt;/li&gt;
  &lt;li&gt;手动增加的&amp;quot;extending&amp;quot;类，重写更少的规则，这再一次意味着引擎做很少去应用规则&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;要用ID来对内容写样式吗？&lt;/h3&gt;
&lt;p&gt;当你在同一页面（或者同一站点同时缓存良好）复用一个对象时，这是性能的“免费赠品”。用ID来写样式在同一页面中只能使用一次。@cgriego (twitter) 
拿它与singletons比较过，我认为非常精确。可能有些情况下你要用ID定义样式，比如非常特殊的 header menus，此时你可以在用ID来沙箱（译注：动名词）特殊元素并确保此处的代码不会影响站点的其它地方。选择ID而非class前要三思，随着站点的发展，真的&lt;em&gt;很难预料&lt;/em&gt;其他人会怎么处理依据你的CSS所构建的HTML。如有选择的余地，尽可能的考虑扩展性。&lt;/p&gt;
&lt;p&gt;我正在考虑移除模板head, body, foot中的ID。某些人或许有多个主区域。站点的多个header 和 footer更难以猜测，但我敢打赌肯定有设计师会这样想，所以ID很可能会消失（不太顺，看原文：Someone 
could have multiple main content areas. Multiple site headers and footers are more 
difficult to imagine, but I bet there is a designer who can dream up something like 
that, so the IDs are very likely to disappear.）。&lt;/p&gt;
&lt;p&gt;另一方面，&lt;em&gt;ID hooks are great for linking&lt;/em&gt;。放在HTML中，不过别用它们来写样式。&lt;/p&gt;
&lt;h3&gt;设计师可以写OOCSS吗？&lt;/h3&gt;
&lt;p&gt;是的，设计师出于本能理解对象，比多数人当前书写CSS的方式要形象 — layers of exceptions (想一下，一个老太太吞了一只苍蝇)。事实上，他们爱上OOCSS的原因有两个：&lt;/p&gt;
&lt;ol&gt;
 &lt;li&gt;这使他们能快速创建复杂高点击量的站点。他们不需纠结于不理解的结构除非有足够的能力并充足的了解语法&lt;/li&gt;
 &lt;li&gt;学CSS时，他们不需创建丑陋的 “hello world!” 站点。设计师在非常在意的是他们的工作看起来很漂亮。如果必需做一些丑陋的东东，即便是学习之由，他们很快就会有挫败感并灰常的郁闷。OO-&lt;span class="caps"&gt;CSS&lt;/span&gt; 
 使得他们的工作在每个学习阶段都看起来很漂亮&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;设计师是&lt;strong&gt;聪明&lt;/strong&gt;D。我们要给他们信任。他们会讲一种不同的，非工程师的语言，但是极客的语言经常以一种丑陋的方式来拒绝人。我们能做的更好。&lt;/p&gt;
&lt;h3&gt;我是个前端架构师，如何向团队传授OOCSS？&lt;/h3&gt;
&lt;p&gt;作为架构师，你应该写结构对象；圆角如何创建，为角或其他特性放置表象元素，并处理浏览器差异。新手为这些模块写皮肤（borders, colors, background 
images, 等等）。&lt;/p&gt;
&lt;p&gt;我用OO-CSS方式创建了大批站点（千级的页面，百万级的访问者）。正确的完成后，很好扩展，这意味着新手将处理的个别元件可预见性很强。代码审阅很容易，因为有可接受的方法明确的规则来扩展对象。这种回馈使新开发者快速生产。&lt;/p&gt;
&lt;p&gt;我在FullSIX（一个法国的网络营销机构）管理一个前端开发团队，是我工作过的最有才能的。某些时候我们的成功意味着我们将会有更多难以把控的工作。雇佣前端专家非常困难（没有这种学校！），所以我开始&lt;a href="http://www.slideshare.net/stubbornella/object-oriented-css/57"&gt;对一些对写代码有兴趣的设计师（很少或没有经验）推行一个内部实习项目&lt;/a&gt;，一个月就可以作为团队的初级成员工作。&lt;/p&gt;
&lt;ul&gt;
 &lt;li&gt;第一周：学习语义并根据现有的CSS创建HTML。学习创建网页：不需要更多的CSS，HTML语法，多个class，验证，语义，介绍代码审阅等&lt;/li&gt;
 &lt;li&gt;第二周：创建简单的内容对象（标题，列表等），持续一周。学习CSS语法，怎么扩展对象，颜色，字体百分比，等等&lt;/li&gt;
 &lt;li&gt;第三周：创建区块的皮肤。边框，颜色，背景图片，基本的布局，sprites。让他们同一个回答过n个问题的资深开发者一起工作，使他们少走弯路，他也应是很好的代码审阅者。&lt;/li&gt;
 &lt;li&gt;第四周：他们已经是团队的皮肤制作成员了。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;他们的代码在一个客户的网站上，同资深开发者写的一样好，或许更好因为他们还未学到一些坏习惯:)&lt;/p&gt;
&lt;h3&gt;入门：如何使用这些文件？&lt;/h3&gt;
&lt;p&gt;3个文件，libraries.css (reset 及 fonts 取自 yui), grids.css 及 template.css 已完成，其它的还非常不稳定。&lt;/p&gt;
&lt;ol&gt;
 &lt;li&gt;打开template.html并存为新文件&lt;/li&gt;
 &lt;li&gt;通过扩展相应的对象来改写列的数量及宽度。站点中只需一个模板，即使你有不同列的页面，因为列也是对象。可以把它们当作任意的区域，可能会有0 ~ n 
 个左列。查阅模板文档可了解更多&lt;/li&gt;
 &lt;li&gt;用栅格来分割内容区域为小的区块。查阅栅格文档了解更多&lt;/li&gt;
 &lt;li&gt;添加内容。提示：这也应OO&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;如何部署在站点上？&lt;/h3&gt;
&lt;p&gt;注意CSS文件在不断改进中，我会依据接到的反馈进行改变。&lt;/p&gt;
&lt;p&gt;我把CSS文件分为了模块，比如栅格和模板。在使用时移除不必要的注释并减少HTTP请求，否则站点会超级慢。这意味着要合并CSS文件为一个稍大的文件。我通过嵌套的注释来组织CSS。最后，作为上线/部署的一部分，用CSS压缩器来移除注释.&lt;/p&gt;
&lt;h3&gt;可以修改文件，或者用我自己的样式重写吗？&lt;/h3&gt;
&lt;p&gt;我不会修改grids, template, 或者 libraries。大量测试表明这些已恰到好处。如果要自定义，考虑下面的&lt;a href="#extend"&gt;扩展基本对象&lt;/a&gt;。&lt;/p&gt;
&lt;h3&gt;粉红不是我要的颜色！怎么处理content.css？&lt;/h3&gt;
&lt;p&gt;获取你会想要修改content.css。去吧，改颜色，字体大小，大小写。只需注意这个文件在快速发展，同时我还没有任何文档来说明如何正确的处理。我会这么做，我保证。&lt;/p&gt;
&lt;h3&gt;我需要不只6种标题（h1~h6），如何增加？&lt;/h3&gt;
&lt;p&gt;如果需要不只6中标题样式，通过添加一个新class来扩展标题对象。&lt;/p&gt;
&lt;pre&gt;.category{font-size:108%; font-weight:normal; font-style: normal; text-transform:uppercase; color: #333;}&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;不要&lt;/strong&gt;这样做：&lt;/p&gt;
&lt;pre&gt;#mySaleModule h2, #mySaleModule .h2{font-size:108%; font-weight:normal; font-style: normal; text-transform:uppercase; color: #333;}&lt;/pre&gt;
&lt;h2 id="extand"&gt;如何扩展对象？&lt;/h2&gt;
&lt;p&gt;如果要扩展对象，比如一个160px的左列，而非默认值，你可以再列上增加额外的class。&lt;/p&gt;
&lt;pre&gt;&amp;lt;div class=&amp;quot;leftCol gMail&amp;quot;&amp;gt; ... &amp;lt;/div&amp;gt;&lt;/pre&gt;
&lt;p&gt;如果默认值和扩展的列宽或者页面不适合你的站点，你可以扩展列来实现自定义的宽度。&lt;/p&gt;
&lt;h4&gt;列&lt;/h4&gt;
&lt;p&gt;myColumn 扩展列对象来实现自定义列宽。&lt;/p&gt;
&lt;pre&gt;.myColumn{width:400px;}&lt;/pre&gt;
&lt;p&gt;HTML&lt;/p&gt;
&lt;pre&gt;&amp;lt;div class=&amp;quot;leftCol myColumn&amp;quot;&amp;gt; ... &amp;lt;/div&amp;gt;&lt;/pre&gt;
&lt;p&gt;不要通过重写我的class来实现，而应&lt;em&gt;扩展&lt;/em&gt;此框架提供的对象。我提供了列，标题及其他对象。你可以通过增加另外的class（只指定与我的基本对象的不同点）来扩展这些对象。相对而言此处混合比较好。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;不要&lt;/strong&gt;这样做（因为更新我的框架时会有些麻烦）：&lt;/p&gt;
&lt;pre&gt;.leftCol{… 此处自定义CSS …}&lt;/pre&gt;
&lt;h3&gt;没有用到的样式。我的站点没有160px的gmail式的列，可以移除吗？&lt;/h3&gt;
&lt;p&gt;当然。移除对象或扩展对象非常合理。只需注意在站点发展时，很难预料到其他人用你的CSS创建的什么样的HTML。过早优化很危险。&lt;/p&gt;
&lt;h3&gt;为什么有一个单独的模板？&lt;/h3&gt;
&lt;p&gt;在OOCSS中，一个重要的目标是所有的页面创建自一个模板。这简化了CMS开发，因为有一个单独的起始点所有页面可以制作为其他的页面。CMS的用户不会落入已创建的页面不能变种为不同的页面类型的陷阱。OO模板的另一个目标是每一个section（列，header等）控制自己。实际上，这意味着如果要在模板上增加一个左列，只需在HTML中增加此列。你从来不想这样写CSS吧，为了使子元素满足表现而DOM树需要很多改变。对CMS开发来说DOM循环相当的昂贵。&lt;/p&gt;
&lt;h3&gt;这有语义吗？我要终止像 .formYellow 或 tinyBlueH2 的class命名吗？&lt;/h3&gt;
&lt;p&gt;OOCSS可以写得有语义也可无语义，取决于你创建模块时用 errorMod 而非 bigRedModule。我选择class名优一些原则（排名不分先后）：&lt;/p&gt;
&lt;ul&gt;
 &lt;li&gt;短 - 每一字节计算起来，所以尽可能保持class短&lt;/li&gt;
 &lt;li&gt;清晰 - 可预料的行为/样式要显而易见&lt;/li&gt;
 &lt;li&gt;语义化 - 对象&lt;em&gt;是&lt;/em&gt;什么高过&lt;em&gt;看起来&lt;/em&gt;像什么。如何用在站点中？&lt;/li&gt;
 &lt;li&gt;通用 - 名称应该适用于多数站点。过于特殊的名称减少了适用场合或导致语义化的class以非语义化的方式使用&lt;/li&gt;
 &lt;li&gt;屏幕 - 移动阅读器或打印样式或许有不同的视图，会重写默认的屏幕视图，所以当有冲突时class为屏幕而特殊定义（Different views 
 might be provided by mobile or print stylesheets, however they override the 
 default screen view, so the classes chosen are screen specific when there was 
 a conflict）。这简化了开发。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;其它的框架如何？这只能同YUI一起使用吗？&lt;/h3&gt;
&lt;p&gt;在大量框架的生态系统中，YUI是专业性及可扩展性的一例。我同他们进行了对比，因为我不断受到他们代码和文档的影响。OOCSS不是一个真正意义上的框架，尽管我创建了很多例子，而是一种书写可扩展，健壮，可维护性强的CSS的一种方式。也许最好的比喻是一个新的语言。最终，它是未知的JavaScript库（it 
is JavaScript library agnostic），我希望贡献代码回YUI及其他框架。&lt;/p&gt;
&lt;h3&gt;CSS框架太超过！我需要从头开始编写所有代码吗?&lt;/h3&gt;
&lt;p&gt;每需要一个随机数字都要写一个数字class吗？&lt;/p&gt;
&lt;p&gt;&lt;span class="caps"&gt;CSS&lt;/span&gt; is hard,
&lt;a href="http://www.stubbornella.org/content/2009/02/12/css-doesn’t-suck-you’re-just-doing-it-wrong/"&gt;
not because it is broken&lt;/a&gt; , but because it is a legitimate technology requiring 
expertise to architect correctly. 为每个站点重复发明轮子非常的愚蠢。&lt;/p&gt;
&lt;h3&gt;源文件中右列在主列之前，会影响可访问性，SEO吗？&lt;/h3&gt;
&lt;p&gt;我早期工作过的站点有更标准的模板结构，body上有一个极好的class，依靠这个模板显示或隐藏左右列。自定义CMS的用户要创建一个3列布局的页面时非常沮丧，发现需要两列，找到它们不得不一个个从头开始，因为有多个模板/起始点。你或许注意到主列是个流体列，在左右两列渲染后自适应剩余的空间。&lt;/p&gt;
&lt;p&gt;我更喜欢标签排序胜过视觉排序（因为如果标签顺序改变会变得非常怪异），但是我也只想要一个模板。在web开发中经常遇到的是，两个重要的目标发生了冲突，我做判断如何解决。这种情况下标签排序满足视觉顺序除了右列。在当前的代码中，只需在HTML增加一个左或右列，没有别处昂贵的DOM变化。&lt;/p&gt;
&lt;p&gt;屏幕阅读器用户有两个选择：&lt;/p&gt;
&lt;ol&gt;
 &lt;li&gt;跳过链接&lt;/li&gt;
 &lt;li&gt;导航链接经常为一个链接列表或嵌套的链接列表形式。这非常有趣，因为这允许屏幕阅读者通过屏幕阅读器的特殊操作设置跳过整个列表。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;我的意见是对于跳过菜单这两种方式足够了。&lt;/p&gt;
&lt;p&gt;每个人似乎都有一个回复观点：SEO，它们都不同，甚至相反。:)基于这个思潮，我倾向于：尤其对含有一定合理数量链接的导航菜单，不用太过在意。曾几何时，我看到过导航链接被索引在搜索结果的内容部分，不过是在几年前了。搜索爬虫非常智能，我已经准备好想当然的认为如果我以语义化，干净的方式标记内容，并非填充一坨垃圾链接，爬虫能区分的出来。&lt;/p&gt;
&lt;p&gt;把导航菜单标记为列表，允许屏幕阅读器用户跳过，并提供“跳至内容”链接，对可访问性提供了双倍的备用措施。&lt;/p&gt;
&lt;h3&gt;为什么用了_ hack？我能把这些代码放在单独的文件中吗？或者添加IE专有的class？&lt;/h3&gt;
&lt;p&gt;很显然，首先考虑的是尽可能少和长远。&lt;/p&gt;
&lt;ol&gt;
 &lt;li&gt;添加一个单独的样式表奖增加一个额外的HTTP请求，增加整体文件的大小，这早已是浏览器性能的对立点&lt;/li&gt;
 &lt;li&gt;我喜欢把一个对象的代码放在一个地方。我认为这有助于减少hack的数量，尤其是当项目随时间而发展&lt;/li&gt;
 &lt;li&gt;IE6-的开发工具非常原始，这使得hack和普通代码放在一起更加重要。我想能尽快找到一个可以使用属性的IE bug。同样，我认为这有助于减少hack&lt;/li&gt;
 &lt;li&gt;规则表明浏览器理解不了的属性会被忽略。对IE6-使用_早已众所周知，可以合理的预料好的浏览器将会忽略这个属性&lt;/li&gt;
 &lt;li&gt;使用条件注释意味着每个HTML页面必须包含一个IE专用样式。某一天（我不能等了！）当IE6的市场份额下降至像IE5那样低时，我将去除这些代码，但最后我要做的是触及百级或千级的HTML页面。我宁愿只有依赖CSS 
 hack的CSS，而不是把它放在HTML中。不幸的是，恕我直言，IE6兼容性的末日比我们期望的要更加长远，因为IE中的quirksmode会回落到IE5.5的模式&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;我认为我的选择有助于减少hack的总体数量，提升性能，并只有忽略不计的风险。话说回来，如果觉得代码中的_令你作呕，你完全可以移至单独的文件。&lt;/p&gt;
&lt;h3&gt;为了添加表象效果比如边框而使用空 &amp;lt;b&amp;gt; 标签容器对象，会给屏幕阅读器用户带来问题吗？&lt;/h3&gt;
&lt;p&gt;不会，幸运的是屏幕阅读器会忽略空的b标签。使用这个表象标签（b是加粗）来实现表象具有优势。这个标签可以通过服务器端脚本包含，以至于有一天所有的CSS圆角和阴影都支持了，可以关闭脚本并拥有漂亮，干净，语义化的HTML。&lt;/p&gt;
&lt;h3&gt;OOCSS声称避免位置依赖的样式。是否意味着我不能使用类似 .myModule .title 的派生选择器？&lt;/h3&gt;
&lt;p&gt;不使用派生选择器没什么阻碍，只是把它们放在更高的DOM树而已。避免在body或页面中最外层的div放置wide-net class或id，然后对对象产生的变量写大量的样式。这不能复用，同时会使页面渲染变慢。相反，通过直接在对象上添加一个class来增加一个多余的“local”变量（并对其子元素写派生样式）。&lt;/p&gt;
&lt;p&gt;一个好的经验是一个容器主体（body of a container）内的任意元素显然是一个单独的对象。&lt;/p&gt;
&lt;p&gt;这无可厚非，因为UL显然是一个单独的对象：&lt;/p&gt;
&lt;pre&gt;#sidebar ul { ... }&lt;/pre&gt;
&lt;p&gt;因此，carousel显然不是body对象的一部分：&lt;/p&gt;
&lt;pre&gt;body.browseProducts .carousel &lt;/pre&gt;
&lt;p&gt;这是适当的层叠应用，因为子节点真正的是较大的父对象的一部分。b（角）和inner显然隶属于moudle，它们不能独立存在：&lt;/p&gt;
&lt;pre&gt;.myModule { ... }
.myModule b { ... }
.myModule .inner { ... }&lt;/pre&gt;
&lt;h3&gt;如何贡献？&lt;/h3&gt;
&lt;p&gt;最好的方法是涉足其中，开始使用代码（libraries, grids, fonts）并&lt;a href="http://stubbornella.lighthouseapp.com/projects/26663-object-oriented-css/tickets"&gt;提交 
bug 报告及功能需求&lt;/a&gt;。 我建了一个 
&lt;a href="http://groups.google.com/group/object-oriented-css"&gt;&lt;span class="caps"&gt;
OOCSS&lt;/span&gt; google group&lt;/a&gt; 来进行超过140个twitter字符的讨论。&lt;/p&gt;
&lt;h3&gt;译注：&lt;/h3&gt;
&lt;p&gt;OOCSS的官方站点为 &lt;a href="http://oocss.org/"&gt;http://oocss.org/&lt;/a&gt;，有一些例子及下载等。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-8590039138560515937?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/8590039138560515937/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=8590039138560515937&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/8590039138560515937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/8590039138560515937'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/10/oocss-faq.html' title='[翻译]OOCSS FAQ'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-1661399090752487131</id><published>2009-10-24T13:25:00.000+08:00</published><updated>2009-10-24T13:26:12.936+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jquery'/><category scheme='http://www.blogger.com/atom/ns#' term='浏览器bug'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>IE 6&amp;7 z-index bug</title><content type='html'>&lt;p&gt;很老的 bug了，详细描述看下面几篇文章吧：&lt;/p&gt;
&lt;ol&gt;
 &lt;li&gt;&lt;a href="http://www.andymao.com/andy/post/67.html"&gt;position:relative/absolute无法冲破的等级&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="http://www.andymao.com/andy/post/69.html"&gt;对《无法冲破的等级》一文的补充&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="http://www.andymao.com/andy/post/74.html"&gt;补遗《无法冲破的等级》&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;文中给出的方法简单明了，不过有时页面比较复杂，只有通过用JS遍历 position:relative 元素并改变其 z-index 值来解决了。有了 
JS 框架则更加简单。《&lt;a href="http://css-tricks.com/snippets/jquery/fixing-ie-z-index/"&gt;Fixing IE z-index&lt;/a&gt;》分别给出了 jQuery 和 MooTools 版本，下面是 jQuery 版本的代码：&lt;/p&gt;
&lt;pre&gt;&lt;code class="javascript"&gt;$(function() {
       var zIndexNumber = 1000;
       // Put your target element(s) in the selector below!
       $("div").each(function() {
               $(this).css('zIndex', zIndexNumber);
               zIndexNumber -= 10;
       });
});&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;DEMO &lt;a href="http://css-tricks.com/examples/IE-z-index/"&gt;在此&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-1661399090752487131?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/1661399090752487131/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=1661399090752487131&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/1661399090752487131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/1661399090752487131'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/10/ie-6-z-index-bug.html' title='IE 6&amp;7 z-index bug'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-2126303475948458321</id><published>2009-10-21T22:07:00.001+08:00</published><updated>2009-10-21T22:07:32.195+08:00</updated><title type='text'>[转发]跨国公司招聘</title><content type='html'>&lt;p&gt;&lt;b&gt;未验证&lt;/b&gt;，自己碰运气吧，好像不错( ^_^ )&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="http://www.carryquote.com/"&gt;http://www.carryquote.com/&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Job Description&lt;/h3&gt;
&lt;p&gt;Job Title: Web Developer&lt;/p&gt;
&lt;p&gt;Job Location: Shenzhen&lt;/p&gt;
&lt;p&gt;Position Requirements/Qualification:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;University degree or college diploma &lt;/li&gt;
	&lt;li&gt;Fluent knowledge of xHTML, CSS and JavaScript&lt;/li&gt;
	&lt;li&gt;Fluent knowledge of classic ASP (VBScript), specifically integration with 
	MS SQL Server via ADO&lt;/li&gt;
	&lt;li&gt;Knowledge of AJAX is a plus&lt;/li&gt;
	&lt;li&gt;Good knowledge on making websites&lt;/li&gt;
	&lt;li&gt;Able to speak and write English&lt;/li&gt;
	&lt;li&gt;Immediately availability would be preferred&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Goblin&lt;/p&gt;
&lt;p&gt;Tel　0755-82714350&lt;/p&gt;
&lt;p&gt;E-MAIL &lt;a href="mailto:shuang.zhang@51job.com"&gt;shuang.zhang@51job.com&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-2126303475948458321?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/2126303475948458321/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=2126303475948458321&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/2126303475948458321'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/2126303475948458321'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/10/blog-post_21.html' title='[转发]跨国公司招聘'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-5666676678854148035</id><published>2009-10-03T18:58:00.003+08:00</published><updated>2009-10-07T14:35:57.540+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='看图不说话'/><category scheme='http://www.blogger.com/atom/ns#' term='性能'/><category scheme='http://www.blogger.com/atom/ns#' term='oocss'/><title type='text'>Web 开发哲学</title><content type='html'>&lt;div id="l:jx" style="text-align: left;"&gt;&lt;img style="width: 600px; height: 448px;" src="http://docs.google.com/File?id=ddrrtxb_1734fn5vb5d9_b"&gt;&lt;/div&gt;
&lt;p&gt;from &lt;a href="http://www.slideshare.net/stubbornella/object-oriented-css"&gt;Object Oriented CSS&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-5666676678854148035?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/5666676678854148035/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=5666676678854148035&amp;isPopup=true' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/5666676678854148035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/5666676678854148035'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/10/web-dev-philosophy.html' title='Web 开发哲学'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-7103363625992465717</id><published>2009-10-03T18:43:00.014+08:00</published><updated>2009-10-07T14:54:56.915+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='性能'/><category scheme='http://www.blogger.com/atom/ns#' term='oocss'/><category scheme='http://www.blogger.com/atom/ns#' term='翻译'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>[翻译]Object Oriented CSS</title><content type='html'>&lt;h3&gt;什么是面向对象的 CSS&lt;/h3&gt;
&lt;p&gt;框架？工具？哲学？&lt;/p&gt;
&lt;blockquote&gt;
 &lt;p&gt;Object-oriented CSS is a coding paradigm that styles &amp;quot;objects&amp;quot; or &amp;quot;modules&amp;quot;—nestable 
 chunks of HTML that define a section of a webpage—with robust, reusable styles.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;很像语言的进化&lt;/h3&gt;
&lt;p&gt;令 CSS 更强大&lt;/p&gt;
&lt;h3&gt;有什么不同？&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;ul{...}
ul li{...}
ul li a(②但是，结构在这里){①直至现在，我们只关心这里}&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;CSS 大约 2005&lt;/h3&gt;
&lt;p&gt;意大利面条&lt;/p&gt;
&lt;h3&gt;CSS 大约 2008&lt;/h3&gt;
&lt;p&gt;稍微好一点&lt;/p&gt;
&lt;h3&gt;而不是使我们的代码变好&lt;/h3&gt;
&lt;p&gt;我们筑了大栅栏&lt;/p&gt;
&lt;h3&gt;性能呢？&lt;/h3&gt;
&lt;p&gt;公认的毒药中心&lt;/p&gt;
&lt;h3&gt;网站变慢&lt;/h3&gt;
&lt;p&gt;文件大小和 HTTP 请求未作优化&lt;/p&gt;
&lt;h3&gt;CSS 大约 2009&lt;/h3&gt;
&lt;h3&gt;面向对象的CSS&lt;/h3&gt;
&lt;p&gt;性能的最佳实践、可扩展性、和最重要的-容易使用&lt;/p&gt;
&lt;ol&gt;
 &lt;li&gt;创建对象而不是页面或模块&lt;/li&gt;
 &lt;li&gt;在内容对象上设置好的公用默认值&lt;/li&gt;
 &lt;li&gt;抽象重用元素&lt;/li&gt;
 &lt;li&gt;分离结构和皮肤(为两个 class)&lt;/li&gt;
 &lt;li&gt;分离容器和内容(开放的编辑区)&lt;/li&gt;
 &lt;li&gt;使用继承&lt;/li&gt;
 &lt;li&gt;对看起来 OO 的应用多个 class&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;9条最佳实践&lt;/h3&gt;
&lt;ol&gt;
 &lt;li&gt;组件库：可重用和冗余&lt;/li&gt;
 &lt;li&gt;一致性：避免位置依赖(location-dependent)的样式&lt;/li&gt;
 &lt;li&gt;抽象化&lt;/li&gt;
 &lt;li&gt;优化图像和 sprites&lt;/li&gt;
 &lt;li&gt;灵活&lt;/li&gt;
 &lt;li&gt;学会爱栅格&lt;/li&gt;
 &lt;li&gt;避免非标准的浏览器字体&lt;/li&gt;
 &lt;li&gt;避免高度对齐(alignment)&lt;/li&gt;
 &lt;li&gt;谨慎卖弄你的技术(choose your bling carefully)&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;9个陷阱&lt;/h3&gt;
&lt;ol&gt;
 &lt;li&gt;位置依赖的样式&lt;/li&gt;
 &lt;li&gt;避免指定一个 class 的标签&lt;/li&gt;
 &lt;li&gt;避免用 ID 定义主内容区域内的样式&lt;/li&gt;
 &lt;li&gt;避免不规则背景上阴影和圆角&lt;/li&gt;
 &lt;li&gt;不要拼合所有图片(触发只有少数几个页面)&lt;/li&gt;
 &lt;li&gt;避免高度对齐&lt;/li&gt;
 &lt;li&gt;文字就是文字，不要做成图片&lt;/li&gt;
 &lt;li&gt;冗余&lt;/li&gt;
 &lt;li&gt;避免过早优化&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;创建组件库&lt;/h3&gt;
&lt;p&gt;可重用的“乐高积木”&lt;/p&gt;
&lt;h3&gt;重用元素使得它们&lt;/h3&gt;
&lt;p&gt;性能“免费”&lt;/p&gt;
&lt;h3&gt;组件就像乐高积木&lt;/h3&gt;
&lt;p&gt;组合并匹配来创建不同的和有趣的页面&lt;/p&gt;
&lt;h3&gt;从组件库创建 HTML&lt;/h3&gt;
&lt;p&gt;新的页面一般不需要额外的 CSS&lt;/p&gt;
&lt;h4&gt;标题&lt;/h4&gt;
&lt;p&gt;根据你需要的语义来完成你想要的表现&lt;/p&gt;
&lt;p id="b-62" style="text-align:left;"&gt;
 &lt;img src="http://docs.google.com/File?id=ddrrtxb_1705ck6tz5fg_b" style="width:227px;height:242px;" /&gt;&lt;/p&gt;
&lt;h3&gt;列表&lt;/h3&gt;
&lt;p&gt;必须对页面中的所有模块可用&lt;/p&gt;
&lt;p id="jkq3" style="text-align:left;"&gt;
 &lt;img src="http://docs.google.com/File?id=ddrrtxb_1706crcfsrcx_b" style="width:426px;height:387px;" /&gt;&lt;/p&gt;
&lt;h3&gt;SIDE-WIDE LOGES&lt;/h3&gt;
&lt;ul&gt;
 &lt;li&gt;标题&lt;/li&gt;
 &lt;li&gt;列表(比如 action list, external link list, product list, 或 feature list)&lt;/li&gt;
 &lt;li&gt;模块 headers 和 footers&lt;/li&gt;
 &lt;li&gt;栅格&lt;/li&gt;
 &lt;li&gt;按钮&lt;/li&gt;
 &lt;li&gt;圆角 boxes&lt;/li&gt;
 &lt;li&gt;Tabs, Carousel, toggle blocks&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;避免重复&lt;/h3&gt;
&lt;p&gt;在不能增加价值的元件上浪费性能资源&lt;/p&gt;
&lt;h3&gt;近似相同的模块&lt;/h3&gt;
&lt;p&gt;h3 和 h5 太相似了&lt;/p&gt;
&lt;p id="wfb4" style="text-align:left;"&gt;
 &lt;img src="http://docs.google.com/File?id=ddrrtxb_1707dj2fp6c3_b" style="width:180px;height:180px;" /&gt;&lt;/p&gt;
&lt;h3&gt;经验法则：&lt;/h3&gt;
&lt;p&gt;如果一个页面中的两个模块看起来太相似，它们在一个站点中太相似，选择一个！&lt;/p&gt;
&lt;h3&gt;例子&lt;/h3&gt;
&lt;p&gt;Yahoo! 个人财经&lt;/p&gt;
&lt;p id="rtk:" style="text-align:left;"&gt;
&lt;img style="width: 363px; height: 498px;" src="http://docs.google.com/File?id=ddrrtxb_173622tnhbd8_b"&gt;&lt;/p&gt;
&lt;p id="r16c" style="text-align:left;"&gt;
 &lt;img src="http://docs.google.com/File?id=ddrrtxb_1709hgg5wgg6_b" style="width:471px;height:348px;" /&gt;&lt;/p&gt;
&lt;p&gt;2+不同的 tab 风格。能用相同的图像吗？&lt;/p&gt;
&lt;p id="nm00" style="text-align:left;"&gt;
 &lt;img src="http://docs.google.com/File?id=ddrrtxb_1710f4q2ssgb_b" style="width:480px;height:275px;" /&gt;&lt;/p&gt;
&lt;p&gt;3个元件的轮廓太相似了。选择一个。&lt;/p&gt;
&lt;p id="bm4w" style="text-align:left;"&gt;
 &lt;img src="http://docs.google.com/File?id=ddrrtxb_17113dm793d6_b" style="width:480px;height:353px;" /&gt;&lt;/p&gt;
&lt;p&gt;模块宽度、背景色或背景图片的改变是个很好的模块复用的例子。&lt;/p&gt;
&lt;h3&gt;避免位置依赖(location-dependent)的样式&lt;/h3&gt;
&lt;p&gt;沙盒比意大利面条好，不过引起了性能问题&lt;/p&gt;
&lt;h3&gt;避免什么？&lt;/h3&gt;
&lt;h3&gt;运行区域&lt;/h3&gt;
&lt;h3&gt;不时...&lt;/h3&gt;
&lt;h3&gt;返回直径&lt;/h3&gt;
&lt;h3&gt;破坏&lt;/h3&gt;
&lt;h3&gt;在 CSS 中我们一直这么做&lt;/h3&gt;
&lt;h3&gt;破坏&lt;/h3&gt;
&lt;p id="wqyw" style="text-align:left;"&gt;
 &lt;img src="http://docs.google.com/File?id=ddrrtxb_17125tfxjff4_b" style="width:402px;height:74px;" /&gt;&lt;/p&gt;
&lt;p&gt;不好的：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#weatherModule h3{color:red;}
#tabs h3{color:blue;}&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
 &lt;li&gt;h3 的全局颜色未定义，将导致 
 &lt;ul&gt;
  &lt;li&gt;在新模块中没有定义样式&lt;/li&gt;
  &lt;li&gt;开发者被迫为相同的样式写更多 CSS&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;推荐：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;h3{color:black;}
#weatherModule h3{color:red;}
#tabs h3{color:blue;}&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
 &lt;li&gt;定义了全局颜色(更好！)&lt;/li&gt;
 &lt;li&gt;Weather 和 tabs 覆盖了缺省的 h3
 &lt;ul&gt;
  &lt;li&gt;h3 的3种样式在同一模块中不能并存&lt;/li&gt;
  &lt;li&gt;缺省样式不能用在 weather 和 tabs 除非有更高的优先级&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;Weather 和 tabs 的 h3 永远不能在其他模块中使用&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;一致性&lt;/h3&gt;
&lt;p&gt;写更多规则去重写之前的疯狂规则。&lt;/p&gt;
&lt;p&gt;比如标题在任意模块的表现是可预见的。&lt;/p&gt;
&lt;h3&gt;用这个来代替&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;h1, .h1{...}
h2, .h2{...}
h3, .h3{...}
h4, .h4{...}
h5, .h5{...}
h6, .h6{...}&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
 &lt;li&gt;定义全局值&lt;/li&gt;
 &lt;li&gt;遵循语义(同时允许灵活的视觉)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;需要超过6个标题？&lt;/h3&gt;
&lt;p&gt;真的吗？没有重复？没有相似的？&lt;/p&gt;
&lt;h3&gt;仍然需要更多标题？&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;.category{...}
.section{...}
.product{...}
.prediction{...}&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
 &lt;li&gt;通过对象本身的 class 扩展标题对象&lt;/li&gt;
 &lt;li&gt;避免使用继承来改变嵌套对象的表现&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;抽象&lt;/h3&gt;
&lt;p&gt;复用代码段&lt;/p&gt;
&lt;h3&gt;重复编码&lt;/h3&gt;
&lt;p&gt;是抽象不同水准的语义失败所导致的&lt;/p&gt;
&lt;h3&gt;分离：&lt;/h3&gt;
&lt;ul&gt;
 &lt;li&gt;容器和内容&lt;/li&gt;
 &lt;li&gt;结构和皮肤&lt;/li&gt;
 &lt;li&gt;轮廓和背景&lt;/li&gt;
 &lt;li&gt;对象和混合物&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;分离容器和内容&lt;/h3&gt;
&lt;p&gt;定义每个对象的界限&lt;/p&gt;
&lt;h3&gt;开放的编辑区&lt;/h3&gt;
&lt;p&gt;图像或 flash&lt;/p&gt;
&lt;p id="l:lo" style="text-align:left;"&gt;
 &lt;img src="http://docs.google.com/File?id=ddrrtxb_1713cw88f5gw_b" style="width:395px;height:118px;" /&gt;&lt;/p&gt;
&lt;p id="udxf" style="text-align:left;"&gt;
 &lt;img src="http://docs.google.com/File?id=ddrrtxb_1714gxw7s4f4_b" style="width:400px;height:129px;" /&gt;&lt;/p&gt;
&lt;p id="cqhy" style="text-align:left;"&gt;
 &lt;img src="http://docs.google.com/File?id=ddrrtxb_1715pkxbmfcp_b" style="width:600px;height:192px;" /&gt;&lt;/p&gt;
&lt;p id="o.87" style="text-align:left;"&gt;
 &lt;img src="http://docs.google.com/File?id=ddrrtxb_1716f6w4mgf4_b" style="width:736px;height:493px;" /&gt;&lt;/p&gt;
&lt;h3&gt;混合与匹配&lt;/h3&gt;
&lt;p&gt;容器和内容对象达到高性能设计&lt;/p&gt;
&lt;h3&gt;分离轮廓和背景&lt;/h3&gt;
&lt;p&gt;内部透明！&lt;/p&gt;
&lt;h3&gt;MAKING IT LOOK FAB&lt;/h3&gt;
&lt;p&gt;需要小心选择像素&lt;/p&gt;
&lt;p id="nuzj" style="text-align:left;"&gt;
 &lt;img src="http://docs.google.com/File?id=ddrrtxb_1717cxrd6xgf_b" style="width:184px;height:564px;" /&gt;&lt;/p&gt;
&lt;p&gt;考虑 PNG8 来渐进增强&lt;/p&gt;
&lt;p&gt;&lt;img style="width: 361px; height: 260px;" src="http://docs.google.com/File?id=ddrrtxb_1735hpptpxcm_b"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img style="width: 509px; height: 440px;" src="http://docs.google.com/File?id=ddrrtxb_1737cd8862fm_b"&gt;&lt;/p&gt;
&lt;h3&gt;陷阱&lt;/h3&gt;
&lt;p&gt;可变的或渐变背景&lt;/p&gt;
&lt;p id="ftvi" style="text-align:left;"&gt;
 &lt;img src="http://docs.google.com/File?id=ddrrtxb_1718gjz63zdz_b" style="width:316px;height:159px;" /&gt;&lt;/p&gt;
&lt;p&gt;提防圆角后的可变或渐变背景&lt;/p&gt;
&lt;h3&gt;分离结构和皮肤&lt;/h3&gt;
&lt;p&gt;两个单独的 class&lt;/p&gt;
&lt;p&gt;示例：模块&lt;/p&gt;
&lt;p id="o-uf" style="text-align:left;"&gt;
 &lt;img src="http://docs.google.com/File?id=ddrrtxb_1719gqs855dg_b" style="width:545px;height:341px;" /&gt;&lt;/p&gt;
&lt;h3&gt;结构&lt;/h3&gt;
&lt;p&gt;Sloves borwser bugs, positions presentational elems, and generally does the heavy 
lifting of CSS&lt;/p&gt;
&lt;p id="ssvj" style="text-align:left;"&gt;
 &lt;img src="http://docs.google.com/File?id=ddrrtxb_1720d4hqjkgk_b" style="width:350px;height:409px;" /&gt;&lt;/p&gt;
&lt;p id="ep8j" style="text-align:left;"&gt;
 &lt;img src="http://docs.google.com/File?id=ddrrtxb_1721cfngnwgs_b" style="width:348px;height:408px;" /&gt;&lt;/p&gt;
&lt;p id="s1_x" style="text-align:left;"&gt;
 &lt;img src="http://docs.google.com/File?id=ddrrtxb_1722j3g5tzhq_b" style="width:359px;height:419px;" /&gt;&lt;/p&gt;
&lt;p id="y.xz" style="text-align:left;"&gt;
 &lt;img src="http://docs.google.com/File?id=ddrrtxb_1723gjtfmxdr_b" style="width:389px;height:454px;" /&gt;&lt;/p&gt;
&lt;h3&gt;皮肤&lt;/h3&gt;
&lt;p&gt;弄漂亮些。&lt;/p&gt;
&lt;p&gt;目标是非常明确的皮肤，复杂的被结构对象和跨网站共享所吸收(The goal is very predictable skins, complexity is 
absorbed by the structure object and shared across the site)。&lt;/p&gt;
&lt;p id="syqz" style="text-align:left;"&gt;
 &lt;img src="http://docs.google.com/File?id=ddrrtxb_1724dfd8d8dn_b" style="width:437px;height:268px;" /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/* ----- simple (extends mod) ----- */
.simple .inner{
  border:1px solid gray;
  -moz-border-radius:7px;
  -webkit-border-radius:7px;
  border-radius:7px;
}
.simple b{
  *background-image:url(skin/mod/corners.png);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p id="ddia" style="text-align:left;"&gt;
 &lt;img src="http://docs.google.com/File?id=ddrrtxb_17254wr28kcn_b" style="width:391px;height:152px;" /&gt;&lt;/p&gt;
&lt;h3&gt;什么属于皮肤？&lt;/h3&gt;
&lt;p&gt;皮肤的每个值应该是确定的，容易预测并测量。&lt;/p&gt;
&lt;ul&gt;
 &lt;li&gt;颜色&lt;/li&gt;
 &lt;li&gt;边框&lt;/li&gt;
 &lt;li&gt;图像&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;灵活性&lt;/h3&gt;
&lt;p&gt;可延长的高度和宽度&lt;/p&gt;
&lt;p id="x6u9" style="text-align:left;"&gt;
 &lt;img src="http://docs.google.com/File?id=ddrrtxb_1726g3tmkvgt_b" style="width:763px;height:562px;" /&gt;&lt;/p&gt;
&lt;p id="ix6c" style="text-align:left;"&gt;
 &lt;img src="http://docs.google.com/File?id=ddrrtxb_1727fj2cv3dt_b" style="width:767px;height:561px;" /&gt;&lt;/p&gt;
&lt;h3&gt;固定尺寸&lt;/h3&gt;
&lt;p&gt;Limit the ways in which a module can be resued&lt;/p&gt;
&lt;p id="qtpl" style="text-align:left;"&gt;
 &lt;img src="http://docs.google.com/File?id=ddrrtxb_1728gxzxm6nt_b" style="width:647px;height:222px;" /&gt;&lt;/p&gt;
&lt;h3&gt;学着爱上栅格&lt;/h3&gt;
&lt;p&gt;坚信其会很美&lt;/p&gt;
&lt;h3&gt;传授 OO CSS&lt;/h3&gt;
&lt;p&gt;给设计师和工程师&lt;/p&gt;
&lt;h3&gt;自然改进&lt;/h3&gt;
&lt;p&gt;从简单到复杂的任务&lt;/p&gt;
&lt;p id="xe:4" style="text-align:left;"&gt;
 &lt;img src="http://docs.google.com/File?id=ddrrtxb_1729g8wgtrfg_b" style="width:671px;height:187px;" /&gt;&lt;/p&gt;
&lt;h3&gt;一个真实案例&lt;/h3&gt;
&lt;p&gt;Gonzalo Cordero Yahoo! 前端开发工程师&lt;/p&gt;
&lt;p id="wxdi" style="text-align:left;"&gt;
 &lt;img src="http://docs.google.com/File?id=ddrrtxb_1730fvkdk7gd_b" style="width:690px;height:305px;" /&gt;&lt;/p&gt;
&lt;h3&gt;需要考虑的设计因素&lt;/h3&gt;
&lt;ul&gt;
 &lt;li&gt;跨浏览器兼容&lt;/li&gt;
 &lt;li&gt;多语言支持&lt;/li&gt;
 &lt;li&gt;可访问性&lt;/li&gt;
 &lt;li&gt;按时完成全部布局和功能&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;困惑&lt;/h3&gt;
&lt;p id="aqyt" style="text-align:left;"&gt;
 &lt;img src="http://docs.google.com/File?id=ddrrtxb_1731cftj8mgz_b" style="width:509px;height:538px;" /&gt;&lt;/p&gt;
&lt;h3&gt;WEB 妥协&lt;/h3&gt;
&lt;ul&gt;
 &lt;li&gt;为什么“简单的东东”变复杂？&lt;/li&gt;
 &lt;li&gt;为什么要妥协？&lt;/li&gt;
 &lt;li&gt;为什么我们不能依固定的规则和结构？像讲台上那样？&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;OOCSS SAVES THE DAY&lt;/h3&gt;
&lt;ul&gt;
 &lt;li&gt;单个简单的标签结构&lt;/li&gt;
 &lt;li&gt;跨浏览器支持(甚至 IE 5.5！)&lt;/li&gt;
 &lt;li&gt;非常少的 CSS&lt;/li&gt;
 &lt;li&gt;可剥离的，容易应用在多个设计上&lt;/li&gt;
&lt;/ul&gt;
&lt;p id="n3h7" style="text-align:left;"&gt;
 &lt;img src="http://docs.google.com/File?id=ddrrtxb_1732fsh962fz_b" style="width:577px;height:410px;" /&gt;&lt;/p&gt;
&lt;h3&gt;译注&lt;/h3&gt;
&lt;p&gt;这不仅仅是 OOCSS！&lt;/p&gt;
&lt;p&gt;本文内容来源于：&lt;/p&gt;
&lt;ul&gt;
 &lt;li&gt;&lt;a href="http://www.slideshare.net/stubbornella/object-oriented-css"&gt;Object Oriented CSS&lt;/a&gt; &lt;a href="http://us.dl1.yimg.com/download.yahoo.com/dl/ydn/nicolesullivan.m4v"&gt;高清视频下载&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.slideshare.net/stubbornella/what-is-object-oriented-css"&gt;What is Object Oriented CSS?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.slideshare.net/stubbornella/the-fast-and-the-fabulous"&gt;The Fast And The Fabulous&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.slideshare.net/stubbornella/the-cascade-grids-headings-and-selectors-from-an-oocss-perspective-ajax-experience-2009"&gt;The Cascade, Grids, Headings, and Selectors from an OOCSS Perspective, Ajax Experience 2009&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.slideshare.net/stubbornella/after-yslow-a"&gt;After YSlow "A"&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.slideshare.net/stubbornella/designing-fast-websites-presentation"&gt;Design Fast Websites&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;由 &lt;a href="http://www.99css.com"&gt;ytzong&lt;/a&gt; 翻译整理，算是把 Yahoo! 女性能工程师 Nicole Sullivan 给“榨干”了，嘿嘿。 另外，之前的《&lt;a href="http://www.99css.com/2009/10/taming-css-selectors.html"&gt;驯服CSS选择器&lt;/a&gt;》也是她的作品，富含 OOCSS 的思想。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-7103363625992465717?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/7103363625992465717/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=7103363625992465717&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/7103363625992465717'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/7103363625992465717'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/10/object-oriented-css.html' title='[翻译]Object Oriented CSS'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-3827149595199470731</id><published>2009-10-02T17:06:00.004+08:00</published><updated>2009-10-02T17:11:00.167+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='性能'/><category scheme='http://www.blogger.com/atom/ns#' term='Let&apos;s make the web faster'/><category scheme='http://www.blogger.com/atom/ns#' term='翻译'/><title type='text'>[翻译]加速 JavaScript：处理 DOM</title><content type='html'>&lt;ul&gt;
 &lt;li&gt;原文：&lt;a href="http://code.google.com/speed/articles/javascript-dom.html"&gt;Speeding up JavaScript: Working with the DOM&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;作者：KeeKim Heng, Google 页面工程师&lt;/li&gt;
 &lt;li&gt;翻译：&lt;a href="http://www.99css.com"&gt;ytzong&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;当制作 RIA(Rich Internet Application) 时，我们使用 JavaScript 来改变或增加元素。这是靠 DOM (Document 
Object Model 文档对象模型) 来完成的，这是如何影响 app 的速度呢？&lt;/p&gt;
&lt;p&gt;处理 DOM 会使浏览器 reflow (浏览器决定如何显示东东的进程)。直接操作 DOM，改变元素的 CSS 样式，改变浏览器窗口的大小会触发 reflow。访问元素的布局属性(如 
offsetHeight 和 offsetWidth) 会触发 reflow。由于每次 reflow 需要时间，所有我们能减少 reflow 越多，app 越快。&lt;/p&gt;
&lt;p&gt;处理 DOM 不仅操作页面中存在的元素还包括创建的元素。下面四个部分覆盖了 DOM 操作和 DOM generation，减少浏览器中 reflow 触发的次数。&lt;/p&gt;
&lt;h3&gt;CSS class 切换 DOM 操作&lt;/h3&gt;
&lt;p&gt;这个部分我们改变一个元素和它后代的多个样式属性，只触发一次回流。&lt;/p&gt;
&lt;h4&gt;问题&lt;/h4&gt;
&lt;p&gt;我们写一个函数来改变一个元素中的所有链接的 className 属性。可以通过简单遍历每个 a 并更新他们的 className 属性。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;function selectAnchor(element) {
  element.style.fontWeight = &amp;#39;bold&amp;#39;;
  element.style.textDecoration = &amp;#39;none&amp;#39;;
  element.style.color = &amp;#39;#000&amp;#39;;
}&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;解决方法&lt;/h4&gt;
&lt;p&gt;我们可以增加一个设置所有样式属性的 class 来解决这个问题。通过给元素增加这个class，现在我们只触发一次浏览器 reflow。同时分离了表现和行为(译注：这个在我之前的《&lt;a href="http://www.99css.com/2009/04/bodyclassgoogle-reader.html"&gt;body标签class属性的妙用(Google 
Reader前端简单分析)&lt;/a&gt;》中也有提及) &lt;/p&gt;
&lt;pre&gt;&lt;code&gt;.selectedAnchor {
  font-weight: bold;
  text-decoration: none;
  color: #000;
}

function selectAnchor(element) {
  element.className = &amp;#39;selectedAnchor&amp;#39;;
}&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Out-of-the-flow DOM 操作&lt;/h3&gt;
&lt;p&gt;这个部分我们创建多个元素并把它们插入 DOM 只触发一次 reflow。使用了叫做 DocumentFragment 的东东。我们在 DOM 外创建一个 
DocumentFragment (所以是 out-of-the-flow)。之后创建并添加进多个元素。最后，我们移动该 DocumentFragment&amp;nbsp; 
中的所有元素到 DOM，这只触发一次 reflow。&lt;/p&gt;
&lt;h4&gt;问题&lt;/h4&gt;
&lt;p&gt;让我们写一个改变一个元素中所遇链接的 className 属性的函数。通过简单的遍历每个 a 并更新他们的 href 属性。问题在于，每个 a 会触发一次 
reflow。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;function updateAllAnchors(element, anchorClass) {
  var anchors = element.getElementsByTagName(&amp;#39;a&amp;#39;);
  for (var i = 0, length = anchors.length; i &amp;lt; length; i ++) {
    anchors[i].className = anchorClass;
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;解决方法&lt;/h4&gt;
&lt;p&gt;解决这个问题，可以从 DOM 中移除元素，更新所有链接，之后插入回元素到原始位置。为此，我们写一个可复用的函数，不仅从 DOM中移除元素，并且返回一个将会插入回元素至元素位置的函数。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/**
 * Remove an element and provide a function that inserts it into its original position
 * @param element {Element} The element to be temporarily removed
 * @return {Function} A function that inserts the element into its original position
 **/
function removeToInsertLater(element) {
  var parentNode = element.parentNode;
  var nextSibling = element.nextSibling;
  parentNode.removeChild(element);
  return function() {
    if (nextSibling) {
      parentNode.insertBefore(element, nextSibling);
    } else {
      parentNode.appendChild(element);
    }
  };
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;现在我们用这个函数去更新一个元素中的所有链接，这 out-of-the-flow，并且在移除元素时和插入元素时只触发一次 reflow。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;function updateAllAnchors(element, anchorClass) {
  var insertFunction = removeToInsertLater(element);
  var anchors = element.getElementsByTagName(&amp;#39;a&amp;#39;);
  for (var i = 0, length = anchors.length; i &amp;lt; length; i ++) {
    anchors[i].className = anchorClass;
  }
  insertFunction();
}&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;单个元素的 DOM Generation&lt;/h3&gt;
&lt;p&gt;这个部分我们创建并添加一个元素至 DOM 中，仅触发一次 reflow。创建元素后，在新元素添加至 DOM 前做好所有的改变。&lt;/p&gt;
&lt;h4&gt;问题&lt;/h4&gt;
&lt;p&gt;写一个添加新a 元素至父元素的函数。这个函数让你为该链接提供 class 和 文本。我们可以创建元素，添加进 DOM，之后设置这些属性。这触发3次 reflow。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;function addAnchor(parentElement, anchorText, anchorClass) {
  var element = document.createElement(&amp;#39;a&amp;#39;);
  parentElement.appendChild(element);
  element.innerHTML = anchorText;
  element.className = anchorClass;
}&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;解决方法&lt;/h4&gt;
&lt;p&gt;最后插入这个子节点至 DOM。这触发一次 reflow。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;function addAnchor(parentElement, anchorText, anchorClass) {
  var element = document.createElement(&amp;#39;a&amp;#39;);
  element.innerHTML = anchorText;
  element.className = anchorClass;
  parentElement.appendChild(element);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;尽管如此，如果我们要添加大量的链接至一个元素时这有一些问题。通过这个方法，每添加一个链接触发一次 reflow。下一部分解决这个问题。&lt;/p&gt;
&lt;h3&gt;DocumentFragment DOM Generation&lt;/h3&gt;
&lt;p&gt;这个部分，我们创建多个元素并把它们插入 DOM 触发一次 reflow。使用了一个叫做 DocumentFragment 的东东。我们在 DOM 外创建一个 
DocumentFragment (所以是 out-of-the-flow)。之后创建并添加多个元素进来。最后，把所有 DocumentFragment 中的元素移至 
DOM 并只触发一次 reflow。&lt;/p&gt;
&lt;h4&gt;问题&lt;/h4&gt;
&lt;p&gt;写一个添加10个连接至一个元素的函数。如果只是简单的添加每个新链接至这个元素，会触发10次 reflow。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;function addAnchors(element) {
  var anchor;
  for (var i = 0; i &amp;lt; 10; i ++) {
    anchor = document.createElement(&amp;#39;a&amp;#39;);
    anchor.innerHTML = &amp;#39;test&amp;#39;;
    element.appendChild(anchor);
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;解决方法&lt;/h4&gt;
&lt;p&gt;为了解决这个问题，我们创建一个 DocumentFragment 并添加每个新链接至此。当我们使用appendChild 添加 DocumentFragment 
至元素时，所有 DocumentFragment 的子节点 实际上添加进了这个元素中。这只触发一次 reflow。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;function addAnchors(element) {
  var anchor, fragment = document.createDocumentFragment();
  for (var i = 0; i &amp;lt; 10; i ++) {
    anchor = document.createElement(&amp;#39;a&amp;#39;);
    anchor.innerHTML = &amp;#39;test&amp;#39;;
    fragment.appendChild(anchor);
  }
  element.appendChild(fragment);
}
&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-3827149595199470731?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/3827149595199470731/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=3827149595199470731&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/3827149595199470731'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/3827149595199470731'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/10/speeding-up-javascript-working-with-dom.html' title='[翻译]加速 JavaScript：处理 DOM'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-8556693832290151979</id><published>2009-10-02T15:47:00.005+08:00</published><updated>2009-10-02T16:01:15.925+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='性能'/><category scheme='http://www.blogger.com/atom/ns#' term='Let&apos;s make the web faster'/><category scheme='http://www.blogger.com/atom/ns#' term='翻译'/><title type='text'>[翻译]用Page Speed Activity捕获并分析浏览器渲染</title><content type='html'>&lt;ul&gt;
 &lt;li&gt;原文：&lt;a href="http://code.google.com/speed/articles/browser-paint-events.html"&gt;Capturing 
 and analyzing browser paint events using Page Speed Activity&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;作者：Bryan McQuade, 软件工程师&lt;/li&gt;
 &lt;li&gt;翻译：&lt;a href="http://www.99css.com"&gt;ytzong&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;安装&lt;/h3&gt;
&lt;p&gt;Page Speed 是一个 Firebug/Firefox 扩展，安装地址：&lt;a href="http://code.google.com/speed/page-speed/download.html"&gt;http://code.google.com/speed/page-speed/download.html&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;背景：逐步呈现&lt;/h3&gt;
&lt;p&gt;快速的网页逐步呈现。即随浏览器的加载而逐步显示其内容。一个逐步呈现的页面给浏览者页面在加载的视觉回馈，并尽快给给用户请求信息。&lt;a href="http://code.google.com/speed/page-speed/docs/rendering.html#PutCSSInHead"&gt;Google&lt;/a&gt; 
和 
&lt;a href="http://developer.yahoo.net/blog/archives/2007/07/high_performanc_4.html"&gt;
Yahoo&lt;/a&gt; 都建议逐步呈现页面，比如把 CSS 写在页面 head 中。&lt;/p&gt;
&lt;p&gt;对多绝大多数页面来说，有一些很好的实践来优化逐步呈现。一个快速的页面应该先给用户呈现可见的内容(译注：浏览器第一屏)，随后呈现视线外的内容(即当前滚动区域外的内容)。一个快速的页面会在加载和渲染重量级的资源(如图片和视频)之前加载和渲染轻量级的资源(如文字)。&lt;/p&gt;
&lt;p&gt;一些众所周知的技术会禁止逐步呈现。使用大量表格，甚至用来布局，在一些浏览器中会使逐步呈现失效。应用样式表在页面后方，即便这些样式表在开始的页面加载中使用不到，也会阻止逐步呈现。&lt;/p&gt;
&lt;h3&gt;用Page Speed Activity捕获浏览器渲染&lt;/h3&gt;
&lt;p&gt;很难决定一个页面是否要进行逐步呈现优化。大多数页面对肉眼来说呈现太快，以至于意识不到个别的渲染事件(尤其是在高速网络连接下)，而且看不到屏幕区域外的内容是否呈现了。&lt;/p&gt;
&lt;p&gt;幸运的是，Firefox 3.5 支持捕获浏览器渲染事件。Page Speed Activity 面板用这个功能可为页面呈现过程录制一个“幻灯片”。幻灯片的每一单元显示了哪一个屏幕区域被渲染(黄色)，哪些区域在屏幕外(灰色)用户看不到。&lt;/p&gt;
&lt;h3&gt;启用渲染快照&lt;/h3&gt;
&lt;p&gt;由于捕获渲染快照会增加一些开销并拖慢浏览器，Page Speed Activity 屏幕快照默认是禁用的。启用渲染快照，确保Activity 下拉菜单中的 
"Paint Snapshots (slow)" 被选中。&lt;/p&gt;
&lt;img style="width: 774px; height: 151px;" src="http://docs.google.com/File?id=ddrrtxb_1699dm8mjsc8_b"&gt;
&lt;h4&gt;Activity 面板中的渲染快照&lt;/h4&gt;
&lt;p&gt;一旦渲染快照启用，就开始用 Activity 面板录制。Activity 面板将在时间线上显示网络，缓存，和 JavaScript 事件。渲染快照幻灯片出在 
Activity 面板右侧。渲染快照会按捕获顺序绘制，最早的快照在顶部。拖动右侧的滚动条可看到所有的快照。&lt;/p&gt;
&lt;img style="width: 583px; height: 371px;" src="http://docs.google.com/File?id=ddrrtxb_1700hccct9dh_b"&gt;
&lt;h3&gt;快照回放示例&lt;/h3&gt;
&lt;p&gt;译注：请到&lt;a href="http://code.google.com/speed/articles/browser-paint-events.html#animimage"&gt;这里&lt;/a&gt;看演示&lt;/p&gt;
&lt;div style="width:300px;height:588px;border:thin solid #ccc;margin-right:12px;margin-top:1em;float:left;position:relative"&gt;
&lt;span style="position:absolute;background-color:orange;margin:2px;padding:2px;font-weight:bold;display:none" id="loadingbadge"&gt;&lt;/span&gt;
&lt;img id="animimage" src="http://docs.google.com/File?id=ddrrtxb_1703g5gw62hk_b" style="margin-top:0px"&gt;&lt;/img&gt;
&lt;/div&gt;
&lt;p&gt;在这个例子中，我们可以看到以渲染快照慢动作回放的 Google 搜索结果页面的逐步呈现。这些快照用 modem 连接捕获。&lt;/p&gt;
&lt;p&gt;用 Page Speed Activity 回放这个例子的渲染快照，请点击 Play Paint Events按钮。&lt;/p&gt;
&lt;p&gt;在快照中，用户可见的区域为白色，用户不看见的区域(当前浏览器滚动区域之外)用灰色遮罩。每个快照用黄色遮罩显示重绘区域。&lt;/p&gt;
&lt;p&gt;请注意，可见区域的文本内容首先呈现，之后是屏幕外的文本内容。通过先呈现屏幕内的可见区域，用户尽早获取了尽可能多的有用信息。&lt;/p&gt;
&lt;p&gt;文本内容呈现后，图像内容接着呈现。推迟图像内容呈现直到文本内容下载完成并呈现完成，这使得浏览器尽早的显示文本内容，再一次尽早给用户尽可能多的有用信息。&lt;/p&gt;
&lt;p&gt;在页面标签中给所有图像指定宽度和高度属性，浏览器不需在图像加载后 reflow 页面。尽管没有严格的与逐步呈现有关，指定图像的宽高会带来更好的用户体验，在页面加载时页面内容不会在附近移动。&lt;/p&gt;
&lt;p&gt;最后，注意图像自身的逐渐呈现。允许用户在全部图像完成加载前看到图像内容。现代浏览器在 HTML 中用 &amp;lt;img&amp;gt; 标签逐步呈现图像。相反，许多浏览器中用 
CSS 的background-image 属性不会逐步呈现。为了逐步呈现图像，用 HTML 的 &amp;lt;img&amp;gt; 标签来代替 CSS 的 background-image 
属性。&lt;/p&gt;
&lt;br style="clear:both"&gt;
&lt;h3&gt;总结&lt;/h3&gt;
&lt;p&gt;使用 Page Speed Activity 面板的渲染快照功能，我们可以清晰的观察页面的逐步呈现行为。这使得网页开发者可以为逐步呈现而优化页面，这是快速网页非常重要的特性之一。&lt;/p&gt;
&lt;h3&gt;延伸阅读&lt;/h3&gt;
&lt;ul&gt;
 &lt;li&gt;&lt;a href="http://docs.google.com/speed/page-speed/index.html"&gt;Page Speed&lt;/a&gt; - 开源的 Firefox/Firebug 
 扩展，评估页面性能并捕获屏幕快照&lt;/li&gt;
 &lt;li&gt;&lt;a href="http://docs.google.com/speed/page-speed/docs/rendering.html#PutCSSInHead"&gt;Web Performance 
 Best Practices: Put CSS in the document head&lt;/a&gt; - Google 的最佳网页优化实践讨论 CSS 放在页面 
 head 的重要性&lt;/li&gt;
 &lt;li&gt;&lt;a href="http://www.useit.com/papers/responsetime.html"&gt;Response Times: 
 The Three Important Limits&lt;/a&gt; - Jakob Nielsen 指出了一些关于响应时间的经验准则，并强调当页面加载过程中给用户持续反馈的重要性&lt;/li&gt;
 &lt;li&gt;&lt;a href="http://www.vbulletin.org/forum/showthread.php?t=161099"&gt;How Design 
 Affects Performance: Progressive Rendering&lt;/a&gt; - 做了一个非常好的并排视觉对比来说明逐步呈现的好处，讨论了HTML 
 表格对逐步呈现的影响&lt;/li&gt;
 &lt;li&gt;
 &lt;a href="http://books.google.com/books?id=jRVlgNDOr60C&amp;amp;lpg=PA37&amp;amp;pg=PA37#v=onepage&amp;amp;q=&amp;amp;f=false"&gt;
 High Performance Web Sites: Put Stylesheets at the Top&lt;/a&gt; - Steve Souders 的第一本网页性能的书介绍了如何加载样式表可以禁止逐步呈现&lt;/li&gt;
 &lt;li&gt;&lt;a href="http://www.charlesproxy.com"&gt;Charles Web Debugging Proxy&lt;/a&gt; - 
 Charles 允许网页开发者调节他们的网络连接，去模拟低速用户的页面加载&lt;/li&gt;
&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-8556693832290151979?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/8556693832290151979/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=8556693832290151979&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/8556693832290151979'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/8556693832290151979'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/10/capturing-and-analyzing-browser-paint.html' title='[翻译]用Page Speed Activity捕获并分析浏览器渲染'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-8140769798267388111</id><published>2009-10-02T13:25:00.002+08:00</published><updated>2009-10-02T13:29:12.267+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='性能'/><category scheme='http://www.blogger.com/atom/ns#' term='Let&apos;s make the web faster'/><category scheme='http://www.blogger.com/atom/ns#' term='翻译'/><title type='text'>用 HTML 5 来提升性能</title><content type='html'>&lt;p&gt;Google 网站管理员 Jens Meiert 发表了一篇《&lt;a href="http://code.google.com/intl/zh-CN/speed/articles/html5-performance.html"&gt;Using 
HTML 5 for performance improvements&lt;/a&gt;》，大部分内容在《&lt;a href="http://code.google.com/intl/zh-CN/speed/articles/optimizing-html.html"&gt;Reducing 
the file size of HTML documents&lt;/a&gt;》(&lt;a href="http://www.99css.com/2009/06/reducing-file-size-of-html-documents.html"&gt;中文版&lt;/a&gt;)中都有提及，新增的部分为&lt;code&gt;async&lt;/code&gt; 
(和 &lt;code&gt;defer&lt;/code&gt;)，以下为该段的翻译：&lt;/p&gt;
&lt;blockquote&gt;
 &lt;p&gt;&lt;code&gt;async&lt;/code&gt; 和 &lt;code&gt;defer&lt;/code&gt; 使用在 &lt;code&gt;script&lt;/code&gt; 元素上。&lt;/p&gt;
 &lt;p&gt;要解释为什么这些属性会提升性能，最好是看一下未使用时发生了什么 -- 各自的脚本在用户代理(浏览器，下同)继续解析页面前将被提取并直接执行，有时这个行为是我们想要的，有时不是。&lt;/p&gt;
 &lt;p&gt;新的 &lt;code&gt;async&lt;/code&gt; 属性允许各自的脚本在可用时异步执行。HTML 4 中已经包含 &lt;code&gt;defer&lt;/code&gt; 属性，指出 &lt;code&gt;defer&lt;/code&gt; “对用户代理提供一个暗示：脚本不产生任何文档内容(比如，在 
 Javascript 中没有 &lt;code&gt;document.write&lt;/code&gt; )，这样，用户代理会继续解析并渲染”。&lt;/p&gt;
 &lt;p&gt;如果不使用 &lt;code&gt;async&lt;/code&gt; 属性而只使用 &lt;code&gt;defer&lt;/code&gt;，脚本在页面解析完成时已经执行。即使指定了 &lt;code&gt;async&lt;/code&gt; 属性，也可同时指定&lt;code&gt;defer&lt;/code&gt; 属性。这使得那些旧的只理解 
 &lt;code&gt;defer&lt;/code&gt; 的浏览器来回退 &lt;code&gt;defer&lt;/code&gt; 行为而非默认的同步阻塞行为。&lt;/p&gt;
&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-8140769798267388111?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/8140769798267388111/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=8140769798267388111&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/8140769798267388111'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/8140769798267388111'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/10/using-html-5-for-performance.html' title='用 HTML 5 来提升性能'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-8487598630785407016</id><published>2009-10-01T01:09:00.008+08:00</published><updated>2009-10-18T22:54:00.642+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='性能'/><category scheme='http://www.blogger.com/atom/ns#' term='oocss'/><category scheme='http://www.blogger.com/atom/ns#' term='翻译'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>[翻译]驯服CSS选择器--健壮我们的样式表</title><content type='html'>&lt;ul&gt;
 &lt;li&gt;PPT:&lt;a href="http://www.slideshare.net/stubbornella/taming-css-selectors"&gt;Taming 
 CSS Selectors&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;作者：Nicole Sullivan&lt;/li&gt;
 &lt;li&gt;翻译：&lt;a href="http://www.99css.com"&gt;ytzong&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;CSS 文件的大小和所引起的 HTTP 的请求数&lt;/h3&gt;
&lt;p&gt;是 CSS 性能的最关键因素&lt;/p&gt;
&lt;h3&gt;回流(reflow)和渲染时间&lt;/h3&gt;
&lt;p&gt;(非常！)没那么重要&lt;/p&gt;
&lt;h3&gt;副本(duplication)比陈旧的规则(stale rules)更糟糕&lt;/h3&gt;
&lt;p&gt;因为我们有工具处理后者&lt;/p&gt;
&lt;h3&gt;定义缺省值&lt;/h3&gt;
&lt;p&gt;不要在每处都重复编码&lt;/p&gt;
&lt;p&gt;不好的：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#weatherModule h3{color:red;}
#tabs h3{color:blue;}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;推荐：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;h1, .h1{...}
h2, .h2{...}
h3, .h3{...}
h4, .h4{...}
h5, .h5{...}
h6, .h6{...}&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;用单独的 class 来定义结构&lt;/h3&gt;
&lt;p&gt;不要在每处都重复编码&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://docs.google.com/File?id=ddrrtxb_1692dgzx6hff_b" style="width:592px;height:171px;" /&gt;&lt;/p&gt;
&lt;h3&gt;使用 class&lt;/h3&gt;
&lt;p&gt;而不是元素选择器&lt;/p&gt;
&lt;p&gt;不好的：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;div.error{...}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;推荐：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;.error{绝大多数代码写在这里}
div.error{单独定义}
p.error{单独定义}
em.error{单独定义}&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;避免使用元素选择器&lt;/h3&gt;
&lt;p&gt;初始化除外&lt;/p&gt;
&lt;p&gt;不好的：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;div{...}
ul{...}
p{...}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;推荐：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;.error{...}
.section{...}
.products{...}&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;给规则同样的权重&lt;/h3&gt;
&lt;p&gt;使用级联去重写先前的规则&lt;/p&gt;
&lt;p&gt;不好的：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;.myModule .inner b{...}
.myModule2 b{...}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;推荐：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;.myModule b{...}
.myModule2 b{...}&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;保守的使用 hack&lt;/h3&gt;
&lt;p&gt;不好的：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;.mod .hd{...}
.ie .mod .hd{...}
.weatherMod .hd{...}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;推荐：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;.mod .hd{color:red;_zoom:1;}
.weatherMod .hd{...}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;译注：此点来自&lt;a href="http://www.slideshare.net/stubbornella/the-cascade-grids-headings-and-selectors-from-an-oocss-perspective-ajax-experience-2009"&gt;The Cascade, Grids, Headings, and Selectors from an OOCSS Perspective, Ajax Experience 2009&lt;/a&gt;第96P，为作者在 Ajax Experience 2009 上所做的补充。&lt;/p&gt;
&lt;h3&gt;避免指定位置&lt;/h3&gt;
&lt;p&gt;应用 class 在你想要改变的对象上&lt;/p&gt;
&lt;p&gt;不好的：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;.sidebar ul{...}
.header ul{...}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;推荐：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;.mainNav{...}
.subNav{...}&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;避免太过特别的 class&lt;/h3&gt;
&lt;p&gt;它们是都有语义的，而且有限制&lt;/p&gt;
&lt;p&gt;不好的：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;.ducatiMonster620{...}
.nicolesDucatiMonster620{...}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;推荐：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;.vehicle{...}
.motorcycle{...}&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;避免单独的定义&lt;/h3&gt;
&lt;p&gt;id 在每个页面只能使用一次&lt;/p&gt;
&lt;p&gt;不好的：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#myUniqueIdentifier{...}
#myUniqueIdentifier2{...}&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;混合使用&lt;/h3&gt;
&lt;p&gt;避免重复编码&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://docs.google.com/File?id=ddrrtxb_1693fc4vzhdf_b" style="width:448px;height:111px;" /&gt;&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://docs.google.com/File?id=ddrrtxb_1694fdq9mthd_b" style="width:450px;height:115px;" /&gt;&lt;/p&gt;
&lt;h3&gt;封装&lt;/h3&gt;
&lt;p&gt;不要直接访问对象的子节点&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://docs.google.com/File?id=ddrrtxb_1696g3tdd7jd_b" style="width:346px;height:168px;" /&gt;&lt;/p&gt;
&lt;p&gt;不好的：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;.inner{...}
.tr{...}
.bl{...}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;推荐：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;.weatherMod .inner{...}
.weatherMod .tr{...}
.weatherMod .bl{...}&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-8487598630785407016?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/8487598630785407016/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=8487598630785407016&amp;isPopup=true' title='3 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/8487598630785407016'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/8487598630785407016'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/10/taming-css-selectors.html' title='[翻译]驯服CSS选择器--健壮我们的样式表'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-1507194396631005561</id><published>2009-09-27T15:01:00.005+08:00</published><updated>2009-10-24T13:26:42.498+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='浏览器bug'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>IE6 绝对定位元素的 1px 间距 bug</title><content type='html'>&lt;p&gt;IE6- 有一个非常讨厌的 bug，当绝对定位元素的父元素高或宽为奇数时，bottom 和 right 会获取错误。&lt;/p&gt;
&lt;p&gt;&lt;b&gt;HTML&lt;/b&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;div class="outer height199"&amp;gt;
 &amp;lt;p&amp;gt;This container has a height of 199px and width of 199px&amp;lt;/p&amp;gt;
 &amp;lt;div class="inner"&amp;gt;img&amp;lt;/div&amp;gt;
 &amp;lt;div class="inner2"&amp;gt;img&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class="outer height200"&amp;gt;
 &amp;lt;p&amp;gt;This container has a height of 200px and width of 200px&amp;lt;/p&amp;gt;
 &amp;lt;div class="inner"&amp;gt;img&amp;lt;/div&amp;gt;
 &amp;lt;div class="inner2"&amp;gt;img&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;CSS&lt;/b&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;.outer{
 width:200px;
 background:red;
 margin:10px;
 position:relative;
 float:left;
    display:inline;/* ie double margin fix*/
}
.height199{height:199px;width:199px;}
.height200{height:200px;width:200px}
.height201{height:201px;width:201px;}
.height202{height:202px;width:202px;}
.height203{height:203px;width:203px;}
.height204{height:204px;width:204px;}
.height205{height:205px;width:205px}

.inner,.inner2{
 width:30px;
 height:30px;
 position:absolute;
 background:blue;
}
.inner{
 bottom:0;
 left:0;
}
.inner2{
 top:0;
 right:0;

}
p{clear:both;margin:0 40px 1em 5px}&lt;/code&gt;&lt;/pre&gt;
&lt;img style="width: 840px; height: 483px;" src="http://docs.google.com/File?id=ddrrtxb_1689c3pf3vcs_b"&gt;
&lt;p&gt;可以看出在奇数容器下出现了1px 间距，而在偶数容器下正常。&lt;/p&gt;
&lt;p&gt;&lt;b&gt;不完美的解决方法：改变结构并使用浮动&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;HTML&lt;/b&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;div class="fix"&amp;gt;
 &amp;lt;div class="outer height199"&amp;gt;
  &amp;lt;div class="inner2"&amp;gt;img&amp;lt;/div&amp;gt;
  &amp;lt;p&amp;gt;This container has a height of 199px&amp;lt;/p&amp;gt;
 &amp;lt;/div&amp;gt;
 &amp;lt;div class="inner"&amp;gt;img&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div class="fix"&amp;gt;
 &amp;lt;div class="outer height200"&amp;gt;
  &amp;lt;div class="inner2"&amp;gt;img&amp;lt;/div&amp;gt;
  &amp;lt;p&amp;gt;This container has a height of 200px&amp;lt;/p&amp;gt;
 &amp;lt;/div&amp;gt;
 &amp;lt;div class="inner"&amp;gt;img&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;CSS&lt;/b&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;.fix {
 width:200px;
 margin:10px;
 position:relative;
 float:left;
    display:inline;/* ie double margin fix*/
}
.fix .outer{margin:0}
.fix .inner{
 clear:both;
 margin-top:-30px;
 position:relative;
 float:left;
}
.fix .inner2{float:right;position:static}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href="http://www.99css.com"&gt;ytzong&lt;/a&gt; 简译自《&lt;a href="http://www.pmob.co.uk/temp/onepxgap.htm"&gt;IE6 1px gap on absolute elements&lt;/a&gt;》&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-1507194396631005561?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/1507194396631005561/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=1507194396631005561&amp;isPopup=true' title='2 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/1507194396631005561'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/1507194396631005561'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/09/ie6-1px-gap-on-absolute-elements.html' title='IE6 绝对定位元素的 1px 间距 bug'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-7785171985487312403</id><published>2009-09-24T00:13:00.007+08:00</published><updated>2009-10-03T19:08:56.391+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='用户体验'/><category scheme='http://www.blogger.com/atom/ns#' term='翻译'/><title type='text'>[翻译]重(zhòng)载下的动态 UI 设计技巧</title><content type='html'>&lt;p&gt;TechTarget 主办的 Ajax Experience 2009 大会9月14日至16日在波士顿举行，业内大牛纷纷向 Web2.0 世界发起挑战，探讨一些诸如用户体验、高性能与可维护性、架构等伟大主题，放出的 PPT &lt;a href="http://www.slideshare.net/ajaxexperience2009/presentations"&gt;在此&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;下面是 Patrick Lightbody 
分享的后半段总结翻译(前半段为演示)：&lt;/p&gt;
&lt;ul&gt;
 &lt;li&gt;PPT：&lt;a href="http://www.slideshare.net/ajaxexperience2009/patrick-lightbody-presentation-tae-slides"&gt;Design Tips for Dynamic UIs Under Heavy Load&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;作者：Patrick Lightbody&lt;/li&gt;
 &lt;li&gt;翻译：&lt;a href="http://www.99css.com"&gt;ytzong&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;为失败而设计&lt;/h3&gt;
&lt;ul&gt;
 &lt;li&gt;不要忘记 AJAX 仍为网络应用 
 &lt;ul&gt;
  &lt;li&gt;网络会由于各种原因失败&lt;/li&gt;
  &lt;li&gt;网络不可预知&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;为 AJAX 请求意外添加 Hook
 &lt;ul&gt;
  &lt;li&gt;为存储请求状态及重试而编码&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;为失败而测试&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;谨慎对待 DOM&lt;/h3&gt;
&lt;ul&gt;
 &lt;li&gt;非必要时不要改变 DOM 状态 
 &lt;ul&gt;
  &lt;li&gt;Avoid aggressive “synchronization” common in some AJAX toolkits&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
 &lt;li&gt;合并数据而非替换 
 &lt;ul&gt;
  &lt;li&gt;页面局部加载(div.innerHtml=...)也不是很好&lt;/li&gt;
  &lt;li&gt;会带来更多工作，但是运行不畅时会有更好的体验&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;锁住 UI&lt;/h3&gt;
&lt;ul&gt;
 &lt;li&gt;不要给用户机会去改变那些可能由你来改变的事情 
 &lt;ul&gt;
  &lt;li&gt;比如提交后禁用按钮&lt;/li&gt;
  &lt;li&gt;如有必要，使用模拟的对话框来锁住整个 UI&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;请记住：要有恢复措施！&lt;ul&gt;
  &lt;li&gt;为失败而测试并确保发生意外时 UI 解锁&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;告知用户&lt;/h3&gt;
&lt;ul&gt;
 &lt;li&gt;始终让用户知道正在发生什么&lt;/li&gt;
 &lt;li&gt;当发生糟糕的错误时给他们一个完美的“逃生舱”
 &lt;ul&gt;
  &lt;li&gt;为逃生舱设置入口&lt;/li&gt;
  &lt;li&gt;Gmail 是个很好的案例&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;至少，有个简单的"loading"指示器&lt;/li&gt;
&lt;/ul&gt;
&lt;img style="width: 511px; height: 241px;" src="http://docs.google.com/File?id=ddrrtxb_1687dx7w5s9g_b"&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-7785171985487312403?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/7785171985487312403/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=7785171985487312403&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/7785171985487312403'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/7785171985487312403'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/09/design-tips-for-dynamic-uis-under-heavy.html' title='[翻译]重(zhòng)载下的动态 UI 设计技巧'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-8053015907038517796</id><published>2009-09-23T22:22:00.002+08:00</published><updated>2009-09-23T22:23:59.041+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='看图不说话'/><title type='text'>最好的前端工作流程？</title><content type='html'>&lt;img style="width: 516px; height: 595px;" src="http://docs.google.com/File?id=ddrrtxb_1686fz59qpcm_b"&gt;
&lt;p&gt;from &lt;a href="http://www.position-absolute.com/articles/best-front-end-work-flow/"&gt;Best front-end workflow within a production team?&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-8053015907038517796?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/8053015907038517796/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=8053015907038517796&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/8053015907038517796'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/8053015907038517796'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/09/best-front-end-workflow-within.html' title='最好的前端工作流程？'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-5426039469598154149</id><published>2009-09-08T17:23:00.004+08:00</published><updated>2009-10-24T13:26:42.499+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='浏览器bug'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>使用 background:url(#) 解决 IE6&amp;7 bug</title><content type='html'>&lt;p&gt;通过设置&lt;code&gt;selector{background:url(#)}&lt;/code&gt;可以解决一些IE6&amp;amp;7 bug：&lt;/p&gt;

&lt;ol&gt;
 &lt;li&gt;&lt;a href="http://www.99css.com/2009/04/ie-67-bug.html"&gt;鼠标滚轮失效bug&lt;/a&gt;，&lt;a href="http://fabdevelop.com/blog/fileadmin/filemanager/bug.html"&gt;demo&lt;/a&gt;。当时用的是添加背景色的方法： 
 &lt;pre&gt;&lt;code&gt;#works{background:#fff}&lt;/code&gt;&lt;/pre&gt;
 &lt;p&gt;也可通过下面方法解决：&lt;/p&gt;
 &lt;pre&gt;&lt;code&gt;#works{background:url(#)}&lt;/code&gt;&lt;/pre&gt;
 &lt;/li&gt;
 &lt;li&gt;a 标签为了 png-24 图片透明而使用透明滤镜后导致 a 链接不可点击，&lt;a href="http://haslayout.net/demos/no-transparency-click-bug-demo.html"&gt;demo&lt;/a&gt;

 &lt;pre&gt;&lt;code&gt;a{background:none}&lt;/code&gt;&lt;/pre&gt;
 &lt;p&gt;解决方法(&lt;a href="http://haslayout.net/demos/no-transparency-click-bug-demo-fixed.html"&gt;demo&lt;/a&gt;)：&lt;/p&gt;
 &lt;pre&gt;&lt;code&gt;a{background:url(#);/*或指向透明的gif*/}&lt;/code&gt;&lt;/pre&gt;
 &lt;p&gt;详见 &lt;a href="http://haslayout.net/css/No-Transparency-Click-Bug"&gt;No Transparency 
 Click Bug&lt;/a&gt;&lt;/p&gt;
 &lt;/li&gt;

 &lt;li&gt;a 局部点击bug，&lt;a href="http://haslayout.net/demos/partial-click-v2-demo.html"&gt;demo&lt;/a&gt;。 
 解决方法(&lt;a href="http://haslayout.net/demos/partial-click-v2-demo-fixed.html"&gt;demo&lt;/a&gt;)： 
 &lt;pre&gt;&lt;code&gt;a{background:url(#)}&lt;/code&gt;&lt;/pre&gt;
 &lt;p&gt;或：&lt;/p&gt;
 &lt;pre&gt;&lt;code&gt;a{background: #fff}&lt;/code&gt;&lt;/pre&gt;
 &lt;p&gt;详见：&lt;a href="http://haslayout.net/css/Partial-Click-Bug-v2"&gt;Partial Click 
 Bug v2&lt;/a&gt;&lt;/p&gt;

 &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;延伸阅读：&lt;/p&gt;
&lt;ul&gt;
 &lt;li&gt;&lt;a href="http://haslayout.net/css/"&gt;Internet Explorer CSS Bugs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-5426039469598154149?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/5426039469598154149/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=5426039469598154149&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/5426039469598154149'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/5426039469598154149'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/09/fixed-few-ie6-7-bugs-with-backgroundurl.html' title='使用 background:url(#) 解决 IE6&amp;7 bug'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-157330498994726296</id><published>2009-09-01T14:53:00.001+08:00</published><updated>2009-09-01T14:55:04.205+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='性能'/><category scheme='http://www.blogger.com/atom/ns#' term='CssOptimizer'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>CssOptimizer1.0 发布</title><content type='html'>&lt;p&gt;抽空将刚到公司时写的 CSS 压缩工具由 web 版移植为了离线版(这也是我的第一个 WinForm 程序)，操作同 &lt;a href="http://psydk.org/PngOptimizer.php"&gt;PngOptimizer&lt;/a&gt;(也许要翻墙) 类似，将要压缩的 
CSS 文件拖拽至程序窗口即可，之后会生成压缩后的文件并建立副本。&lt;/p&gt;
&lt;img style="width: 407px; height: 333px;" src="http://docs.google.com/File?id=ddrrtxb_1681fpkxxbf9_b"&gt;

&lt;p&gt;压缩原理如下：&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;删除换行符&lt;/li&gt;
	&lt;li&gt;删除}前的分号&lt;/li&gt;
	&lt;li&gt;删除注释&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;最好配合 Microsoft Expression Web 使用：&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;EW进行如下设置：进入工具菜单 - 网页编辑器选项 - 代码格式选项卡，将 CSS 
	下拉框中所有项的格式都设置为“行前：0”，“行后：0”，“空格后：0”
&lt;img style="width: 381px; height: 90px;" src="http://docs.google.com/File?id=ddrrtxb_1682hg876chq_b"&gt;
&lt;/li&gt;
	&lt;li&gt;用 EW 编辑 CSS 时，右键“重设 CSS 格式”即可对代码进行格式化，之后保存&lt;/li&gt;
	&lt;li&gt;用本工具压缩&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;注：本程序只能在 Windows 下使用并须安装 .NET framework (EW 自带 3.0)&lt;/p&gt;
&lt;p&gt;下载地址：&lt;a href="http://www.brsbox.com/filebox/down/fc/922b69797c5cf1a062b7a2415594bd46"&gt;http://www.brsbox.com/filebox/down/fc/922b69797c5cf1a062b7a2415594bd46&lt;/a&gt;，下载后解压到任意目录即可&lt;/p&gt;
&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-157330498994726296?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/157330498994726296/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=157330498994726296&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/157330498994726296'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/157330498994726296'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/09/cssoptimizer10.html' title='CssOptimizer1.0 发布'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-9068680112624667088</id><published>2009-08-27T16:29:00.001+08:00</published><updated>2009-08-27T16:30:59.872+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='看图不说话'/><category scheme='http://www.blogger.com/atom/ns#' term='性能'/><title type='text'>YSlow 规则权重</title><content type='html'>&lt;p&gt;&lt;img style="width: 620px; height: 460px;" src="http://docs.google.com/File?id=ddrrtxb_1677hqgkwgcw_b"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img style="width: 620px; height: 600px;" src="http://docs.google.com/File?id=ddrrtxb_1678d5c757g4_b"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img style="width: 620px; height: 560px;" src="http://docs.google.com/File?id=ddrrtxb_1679gndtjbhm_b"&gt;&lt;/p&gt;
&lt;p&gt;from &lt;a href="http://www.slideshare.net/stoyan/dont-make-me-wait-or-building-highperformance-web-applications"&gt;Don't make me wait! or Building High-Performance Web Applications&lt;/a&gt;
&lt;br&gt;
&lt;/p&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-9068680112624667088?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/9068680112624667088/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=9068680112624667088&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/9068680112624667088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/9068680112624667088'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/08/yslow-rule-weights_8754.html' title='YSlow 规则权重'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-762534980835465248</id><published>2009-08-27T16:18:00.001+08:00</published><updated>2009-08-27T16:23:10.231+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='看图不说话'/><category scheme='http://www.blogger.com/atom/ns#' term='性能'/><title type='text'>IE8 CPU 耗费情况</title><content type='html'>&lt;p&gt;&lt;img style="width: 600px; height: 450px;" src="http://docs.google.com/File?id=ddrrtxb_1226p48jrkpq_b"&gt;&lt;/p&gt;
&lt;p&gt;from &lt;a href="http://videos.visitmix.com/MIX09/T52F"&gt;A Lap around Windows Internet Explorer 8&lt;/a&gt;&lt;/p&gt;
&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-762534980835465248?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/762534980835465248/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=762534980835465248&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/762534980835465248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/762534980835465248'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/08/ie8-cpu-cycles-consumed-by-sites.html' title='IE8 CPU 耗费情况'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-8762904756086112875</id><published>2009-08-17T16:55:00.006+08:00</published><updated>2009-08-17T17:16:06.937+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='随笔'/><title type='text'>webrebuild.ORG第三周年座谈会</title><content type='html'>&lt;p&gt;一个深圳地区的WEB标准聚会，详情：&lt;a href="http://bbs.blueidea.com/thread-2944698-1-1.html"&gt;http://bbs.blueidea.com/thread-2944698-1-1.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;各位宅男宅女，出洞吧~&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-8762904756086112875?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/8762904756086112875/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=8762904756086112875&amp;isPopup=true' title='2 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/8762904756086112875'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/8762904756086112875'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/08/webrebuildorg.html' title='webrebuild.ORG第三周年座谈会'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-2381417847816978448</id><published>2009-08-04T17:38:00.003+08:00</published><updated>2009-08-27T16:13:39.225+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='性能'/><category scheme='http://www.blogger.com/atom/ns#' term='翻译'/><title type='text'>IE 团队的前端性能优化建议</title><content type='html'>&lt;p&gt;2009-3-18 ~ 2009-3-20，微软面向 Web 开发和 Web 设计人员的 MIX 09 年度大会在拉斯维加斯举行，本届大会的主题是&amp;quot;The Next Web Now&amp;quot;，关于开发技术和设计怎么更加有效结合起来，服务未来互联网的发展趋势。120多场精彩的课程，3000多来自各国的专家参会。&lt;/p&gt;
&lt;p&gt;视频及PPT&lt;a href="http://videos.visitmix.com/MIX09/All"&gt;在此&lt;/a&gt;下载，虽然其中多数是微软的产品宣讲，不过也有一些很有价值的分享，比如：&lt;/p&gt;
&lt;ul&gt;
 &lt;li&gt;C23F
 &lt;a href="http://videos.visitmix.com/MIX09/C23F" title="Windows Internet Explorer 8 in the Real World: How Is Internet Explorer 8 Used"&gt;
 Windows Internet Explorer 8 in the Real World: How Is Internet Explorer 8 Used&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;C24F
 &lt;a href="http://videos.visitmix.com/MIX09/C24F" title="Measuring Social Media Marketing"&gt;
 Measuring Social Media Marketing&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;C26F
 &lt;a href="http://videos.visitmix.com/MIX09/C26F" title="Designing the Windows 7 Desktop Experience"&gt;
 Designing the Windows 7 Desktop Experience&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;T25F
 &lt;a href="http://videos.visitmix.com/MIX09/T25F" title="Web Development Using Microsoft Visual Studio: Now and in the Future"&gt;
 Web Development Using Microsoft Visual Studio: Now and in the Future&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;今天主要介绍的是 IE 团队给出的前端性能优化建议，下面是摘要翻译，有兴趣的话可以看下&lt;a href="http://mschannel9.vo.msecnd.net/o9/mix/09/pptx/t53f.pptx"&gt;原 
PPT&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
 &lt;li&gt;出处：&lt;a href="http://videos.visitmix.com/MIX09/T53F" title="Building High Performance Web Applications and Sites"&gt;Building 
 High Performance Web Applications and Sites&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;演讲人：John Hrvatin，Internet 
 Explorer 项目经理&lt;/li&gt;
 &lt;li&gt;翻译整理：&lt;a href="http://www.99css.com"&gt;ytzong&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;中心思想：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
 &lt;li&gt;适用于所有浏览器&lt;/li&gt;
 &lt;li&gt;没有魔术般的解决方案&lt;/li&gt;
 &lt;li&gt;考虑可维护性&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Top 100 sites IE8 CPU 使用情况：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
 &lt;li&gt;84% - 布局，渲染，格式化...&lt;/li&gt;
 &lt;li&gt;16% - JScript &amp;amp; DOM&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Top AJAX sites IE8 CPU 使用情况：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
 &lt;li&gt;67% - 布局，渲染，格式化...&lt;/li&gt;
 &lt;li&gt;33% - JScript &amp;amp; DOM&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;从以下4个方面来进行优化：&lt;/p&gt;
&lt;ol&gt;
 &lt;li&gt;&lt;strong&gt;CSS 性能：&lt;/strong&gt;
 &lt;ul&gt;
  &lt;li&gt;尽量减少样式 
  &lt;ul&gt;
   &lt;li&gt;未用到的样式增加了下载量&lt;/li&gt;
   &lt;li&gt;浏览器必须解析并匹配所有选择器 
   &lt;ul&gt;
    &lt;li&gt;失败代价很高！&lt;/li&gt;
   &lt;/ul&gt;
   &lt;/li&gt;
  &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;简化选择器&lt;ul&gt;
   &lt;li&gt;复合的元素选择器会慢&lt;/li&gt;
   &lt;li&gt;尽可能&lt;ul&gt;
    &lt;li&gt;使用 class 或 ID 选择器&lt;/li&gt;
    &lt;li&gt;元素选择器尽可能简单&lt;/li&gt;
    &lt;li&gt;使用子(child)选择器代替后代(descendent)选择器&lt;/li&gt;
    &lt;li&gt;不要混用 RTL 和 LTR&lt;/li&gt;
   &lt;/ul&gt;
   &lt;/li&gt;
   &lt;li&gt;减少样式使这一切变得简单&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p&gt;DEMO：&lt;/p&gt;
  &lt;p&gt;差：&lt;/p&gt;
  &lt;pre&gt;&lt;code&gt;table tr td ul li {color: green;}&lt;/code&gt;&lt;/pre&gt;
  &lt;p&gt;好：&lt;/p&gt;
  &lt;pre&gt;&lt;code&gt;li#pass {color: green;}&lt;/code&gt;&lt;/pre&gt;
  &lt;p&gt;差：&lt;/p&gt;
  &lt;pre&gt;&lt;code&gt;ul li {color: purple;}&lt;/code&gt;&lt;/pre&gt;
  &lt;p&gt;好：&lt;/p&gt;
  &lt;pre&gt;&lt;code&gt;ul &amp;gt; li {color: purple;}&lt;/code&gt;&lt;/pre&gt;
  &lt;/li&gt;
  &lt;li&gt;不要使用 expressions
  &lt;ul&gt;
   &lt;li&gt;慢 - 通常被这样评价&lt;/li&gt;
   &lt;li&gt;IE8 标准模式不支持&lt;/li&gt;
  &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;尽量减少页面重新布局 
  &lt;ul&gt;
   &lt;li&gt;移动内容体验不好&lt;/li&gt;
   &lt;li&gt;浏览器执行不必要的任务&lt;/li&gt;
  &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;简化!&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;strong&gt;优化符号解析(Symbol Resolution)&lt;/strong&gt;(译注：原文更详细)
 &lt;ul&gt;
  &lt;li&gt;Watch for expensive name lookups&lt;/li&gt;
  &lt;li&gt;缓存多次查找的为本地变量&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;当需要时才优化&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;考虑可维护性&lt;/strong&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;strong&gt;JavaScript 代码低效&lt;/strong&gt;(译注：原文更详细)
 &lt;ul&gt;
  &lt;li&gt;Use the native JSON object&lt;/li&gt;
  &lt;li&gt;Turn large switch statements into lookups&lt;/li&gt;
  &lt;li&gt;Avoid property access methods&lt;/li&gt;
  &lt;li&gt;Minimize DOM interaction&lt;/li&gt;
  &lt;li&gt;Use querySelectorAll for groups&lt;/li&gt;
 &lt;/ul&gt;
 &lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;当需要时才优化&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;考虑可维护性&lt;/strong&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;strong&gt;HTTP 性能：&lt;/strong&gt;
 &lt;p&gt;典型的访问&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;从服务端/缓存请求&lt;ul&gt;
   &lt;li&gt;JS&lt;/li&gt;
   &lt;li&gt;CSS&lt;/li&gt;
   &lt;li&gt;图片&lt;/li&gt;
   &lt;li&gt;HTML&lt;/li&gt;
  &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;浏览器&lt;ul&gt;
   &lt;li&gt;布局&lt;/li&gt;
   &lt;li&gt;执行脚本&lt;/li&gt;
   &lt;li&gt;更多下载&lt;/li&gt;
  &lt;/ul&gt;
  &lt;/li&gt;
 &lt;/ul&gt;
 &lt;p&gt;针对此的优化：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;不要拉伸图片&lt;/li&gt;
  &lt;li&gt;分别合并JS/CSS&lt;/li&gt;
  &lt;li&gt;合并图片(sprites)&lt;/li&gt;
 &lt;/ul&gt;
 &lt;p&gt;重复访问&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;有条件的 HTTP 请求 
  &lt;ul&gt;
   &lt;li&gt;简单的 HTTP 请求 
   &lt;pre&gt;&lt;code&gt;Pragma:  no-cache&lt;/code&gt;&lt;/pre&gt;
   &lt;/li&gt;
   &lt;li&gt;时间条件&lt;pre&gt;&lt;code&gt;If-modified-since:  date,time&lt;/code&gt;&lt;/pre&gt;
   &lt;/li&gt;
  &lt;/ul&gt;
  &lt;p&gt;请求&lt;/p&gt;
  &lt;pre&gt;&lt;code&gt;GET /images/banner.jpg HTTP/1.1
Host:  www.microsoft.com
If-Modified-Since:
 Wed, 22 Feb 2006 04:15:54 GMT
&lt;/code&gt;&lt;/pre&gt;
  &lt;p&gt;响应&lt;/p&gt;
  &lt;pre&gt;&lt;code&gt;HTTP/1.1 304 Not Modified
Content-Type:  image/jpeg
Last-Modified: 
 Wed, 22 Feb 2006 04:15:54 GMT
&lt;/code&gt;&lt;/pre&gt;
  &lt;/li&gt;
  &lt;li&gt;提供缓存内容 
  &lt;ul&gt;
   &lt;li&gt;时间条件 
   &lt;pre&gt;&lt;code&gt;Expires:  date,time&lt;/code&gt;&lt;/pre&gt;
   &lt;pre&gt;&lt;code&gt;Max-age:  #seconds&lt;/code&gt;&lt;/pre&gt;
   &lt;/li&gt;
  &lt;/ul&gt;
  &lt;p&gt;请求&lt;/p&gt;
  &lt;pre&gt;&lt;code&gt;GET /images/banner.jpg HTTP/1.1
Host: www.microsoft.com
&lt;/code&gt;&lt;/pre&gt;
  &lt;p&gt;响应&lt;/p&gt;
  &lt;pre&gt;&lt;code&gt;HTTP/1.1 200 OK
Content-Type: image/jpeg
Expires:  Fri, 12 Jun 2009 02:50:50 GMT
&lt;/code&gt;&lt;/pre&gt;
  &lt;p&gt;请求&lt;/p&gt;
  &lt;pre&gt;&lt;code&gt;GET /images/banner.jpg HTTP/1.1
&lt;/code&gt;&lt;/pre&gt;
  &lt;p&gt;响应&lt;/p&gt;
  &lt;pre&gt;&lt;code&gt;无响应：从缓存请求服务&lt;/code&gt;&lt;/pre&gt;
  &lt;/li&gt;
 &lt;/ul&gt;
 &lt;p&gt;要点&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;减少请求数&lt;ul&gt;
   &lt;li&gt;外联JS/CSS/图片&lt;/li&gt;
   &lt;li&gt;使用缓存&lt;/li&gt;
  &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;减小请求量&lt;ul&gt;
   &lt;li&gt;使用 HTTP 压缩&lt;/li&gt;
   &lt;li&gt;使用条件请求 &lt;/li&gt;
   &lt;li&gt;避免阻塞因素 
   &lt;ul&gt;
    &lt;li&gt;将 JS 放在 HTML 底部&lt;/li&gt;
   &lt;/ul&gt;
   &lt;/li&gt;
  &lt;/ul&gt;
  &lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-2381417847816978448?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/2381417847816978448/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=2381417847816978448&amp;isPopup=true' title='5 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/2381417847816978448'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/2381417847816978448'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/08/building-high-performance-web.html' title='IE 团队的前端性能优化建议'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-7676527067662692919</id><published>2009-07-31T22:58:00.002+08:00</published><updated>2009-08-01T02:16:24.691+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='stylish'/><title type='text'>Firefox 的 Expression Web 3 黑色主题</title><content type='html'>&lt;p&gt;折腾了一个 Expression Web 3 主题，如图：&lt;/p&gt;
&lt;div id="d42s" style="text-align: left;"&gt;&lt;a href="http://docs.google.com/File?id=ddrrtxb_1035hbpn94w4_b" target="_blank"&gt;&lt;img style="width: 600px; height: 450px;" src="http://docs.google.com/File?id=ddrrtxb_1035hbpn94w4_b"&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;安装方法：&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;安装 Office 2007 Black主题：&lt;a href="https://addons.mozilla.org/zh-CN/firefox/addon/8076"&gt;https://addons.mozilla.org/zh-CN/firefox/addon/8076&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;安装 sylish 扩展并重启 firefox：&lt;a href="https://addons.mozilla.org/zh-CN/firefox/addon/2108"&gt;https://addons.mozilla.org/zh-CN/firefox/addon/2108&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;安装 stylish 脚本：&lt;a href="http://userstyles.org/styles/17793"&gt;http://userstyles.org/styles/17793&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-7676527067662692919?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/7676527067662692919/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=7676527067662692919&amp;isPopup=true' title='2 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/7676527067662692919'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/7676527067662692919'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/07/firefox-expression-web-3.html' title='Firefox 的 Expression Web 3 黑色主题'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-177759664238923710</id><published>2009-07-28T13:38:00.009+08:00</published><updated>2009-10-24T13:26:42.499+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='浏览器bug'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>标准模式中的 IE 6&amp;7 width 100% bug</title><content type='html'>&lt;p&gt;在 web app 项目中经常遇到这个 bug，国外称之为 
&lt;a href="http://www.web-zonez.com/screen/100/index.html"&gt;100% ≠ 100% bug&lt;/a&gt;，又分为两种：&lt;/p&gt;
&lt;ol&gt;
 &lt;li&gt;&lt;strong&gt;div 的宽度 100% ≠ 100% (IE 6&amp;amp;7)&lt;/strong&gt;
 &lt;p&gt;需求：&lt;/p&gt;
 &lt;ol&gt;
  &lt;li&gt;标准模式&lt;/li&gt;
  &lt;li&gt;#container 局部滚动&lt;/li&gt;
  &lt;li&gt;#asie 固定宽度&lt;/li&gt;
  &lt;li&gt;#content 自适应宽度&lt;/li&gt;
 &lt;/ol&gt;
 &lt;p&gt;再复杂一点还会要求两列等高，可参考 &lt;a href="http://www.99css.com/2009/07/equal-height-columns-with-cross-browser.html"&gt;http://www.99css.com/2009/07/equal-height-columns-with-cross-browser.html&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;HTML&lt;/p&gt;
 &lt;pre&gt;&lt;code&gt;&amp;lt;div id=&amp;quot;container&amp;quot;&amp;gt;
    &amp;lt;div id=&amp;quot;wrapper&amp;quot;&amp;gt;
        &amp;lt;div id=&amp;quot;content&amp;quot;&amp;gt;
            &amp;lt;h2&amp;gt;Content&amp;lt;/h2&amp;gt;
        &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;div id=&amp;quot;aside&amp;quot;&amp;gt;
        &amp;lt;h2&amp;gt;Aside&amp;lt;/h2&amp;gt;
    &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p&gt;当然，别忘了 DTD 声明，因为这个只存在于标准模式&lt;/p&gt;
 &lt;pre&gt;&lt;code&gt;&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;quot; &amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&amp;gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p&gt;用之前介绍的 
 &lt;a href="http://www.99css.com/2009/06/reducing-file-size-of-html-documents.html"&gt;
 HTML5 写法&lt;/a&gt;亦可：&lt;/p&gt;
 &lt;pre&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p&gt;CSS&lt;/p&gt;
 &lt;pre&gt;&lt;code&gt;/*简单重置*/
body, div, h2{margin:0;padding:0;}
/*设置颜色，方便区分*/
#container{background:yellow;}
#content{background:#FF8539;}
#aside{background:#B9CAFF;}
/*去除html默认滚动条*/
html{overflow-y:hidden;}
/*关键布局代码*/
#container{height:300px;overflow:auto;}
#wrapper{float:left;width:100%;margin-left:-200px;}
#content{margin-left:200px;}
#aside{float:right;width:200px;}&lt;/code&gt;&lt;/pre&gt;
 &lt;p&gt;当&lt;code&gt;#content, #aside{height:200px;}&lt;/code&gt;时，即高度未超出&lt;code&gt;#container&lt;/code&gt;时一切正常&lt;/p&gt;&lt;img  src="https://docs.google.com/File?id=ddrrtxb_951g3scw9ht_b" /&gt;
 &lt;p&gt;当&lt;code&gt;#content, #aside{height:400px;}&lt;/code&gt;时，出现纵向滚动条&lt;/p&gt;
 &lt;p&gt;正常显示效果如下：&lt;/p&gt;
&lt;img style="width: 480px; height: 311px;" src="https://docs.google.com/File?id=ddrrtxb_952fnpts6c5_b"&gt;
 &lt;p&gt;IE 6&amp;amp;7 中 bug 出现：&lt;/p&gt;
&lt;img style="width: 479px; height: 312px;" src="https://docs.google.com/File?id=ddrrtxb_953cptcjwd9_b"&gt;
 &lt;p&gt;原因：IE 6&amp;amp;7 滚动条的宽度未算在 100% 中，理想的状况是：#container 的宽度(100%) + #container 滚动条的宽度 
 = body 的 100%，&lt;a href="http://www.w3.org/TR/CSS21/visufx.html#overflow"&gt;W3C&lt;/a&gt; 
 对此的定义：&lt;/p&gt;
 &lt;blockquote&gt;
  &lt;p&gt;In the case of a scrollbar being placed on an edge of the element&amp;#39;s box, 
  it should be inserted between the inner border edge and the outer padding 
  edge. Any space taken up by the scrollbars should be taken out of (subtracted 
  from the dimensions of) the containing block formed by the element with 
  the scrollbars. &lt;/p&gt;
 &lt;/blockquote&gt;
 &lt;p&gt;《&lt;a href="http://adamsentz.com/internet-explorer-100-width-bug/"&gt;
 Internet Explorer 100% Width Bug&lt;/a&gt;》中给出了思路：&lt;/p&gt;
 &lt;pre&gt;&lt;code&gt;element_selector {
width: expression(this.parentNode.offsetHeight &amp;gt;
this.parentNode.scrollHeight ? &amp;#39;100%&amp;#39; :
parseInt(this.parentNode.offsetWidth - XX) + &amp;#39;px&amp;#39;);
}&lt;/code&gt;&lt;/pre&gt;
 &lt;p&gt;其中 XX 是滚动条的宽度，在 Windows XP 主题下是 17px，Windows 经典主题下稍微小一点，在其他第三方系统主题下有可能是不确定宽度。&lt;/p&gt;
 &lt;p&gt;根据下图，简单改进一下即可&lt;/p&gt;
&lt;img style="width: 609px; height: 602px;" src="https://docs.google.com/File?id=ddrrtxb_954z5tpmxfz_b"&gt;
 &lt;p&gt;&lt;strong&gt;解决方法&lt;/strong&gt;&lt;/p&gt;
 &lt;pre&gt;&lt;code&gt;#wrapper{#width:expression(this.parentNode.offsetHeight &amp;gt; this.parentNode.scrollHeight ? &amp;#39;100%&amp;#39; : parseInt(this.parentNode.clientWidth) + &amp;#39;px&amp;#39;);}&lt;/code&gt;&lt;/pre&gt;
 &lt;p&gt;当然，写在 js 中亦可，不过要注意不要漏掉 window 的 riseze 事件，另外，window 的 resize 事件在 IE 中有执行多次的 
 bug&lt;/p&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;strong&gt;body 的宽度 100% ≠ 100% (仅 IE6)&lt;/strong&gt;
 &lt;p&gt;通常表现为 iframe 出现纵向滚动条时同时出现横向滚动条，简单粗暴的使用&lt;code&gt;body{overflow-x:hidden;}&lt;/code&gt;是不负责任的，有时会截断要显示的内容&lt;/p&gt;
 &lt;p&gt;第一个页面(父页面)&lt;/p&gt;
 &lt;pre&gt;&lt;code&gt;&amp;lt;iframe frameborder=&amp;quot;0&amp;quot; height=&amp;quot;300&amp;quot; scrolling=&amp;quot;auto&amp;quot; src=&amp;quot;iframe.html&amp;quot; width=&amp;quot;500&amp;quot;&amp;gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p&gt;第二个页面(iframe)&lt;/p&gt;
 &lt;p&gt;HTML&lt;/p&gt;
 &lt;pre&gt;&lt;code&gt;&amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;p&gt;CSS&lt;/p&gt;
 &lt;pre&gt;&lt;code&gt;body, div{margin:0;padding:0;}
div{background-color:yellow;height:500px;}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;正常效果&lt;/p&gt;
&lt;img style="width: 511px; height: 310px;" src="https://docs.google.com/File?id=ddrrtxb_949z564sqv5_b"&gt;
&lt;p&gt;IE6&lt;/p&gt;
&lt;img style="width: 510px; height: 312px;" src="https://docs.google.com/File?id=ddrrtxb_950dfd8bc3h_b"&gt;
 &lt;p&gt;解决方法(原理同上)&lt;/p&gt;
 &lt;pre&gt;&lt;code&gt;body{_width:expression(this.parentNode.offsetHeight &amp;gt; this.parentNode.scrollHeight ? &amp;#39;100%&amp;#39; : parseInt(this.parentNode.clientWidth) + &amp;#39;px&amp;#39;);}&lt;/code&gt;&lt;/pre&gt;
 &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;折腾了这么久，哥累了，哥真的希望 IE 只是个传说&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-177759664238923710?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/177759664238923710/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=177759664238923710&amp;isPopup=true' title='2 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/177759664238923710'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/177759664238923710'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/07/ie-6-width-100-bug.html' title='标准模式中的 IE 6&amp;amp;7 width 100% bug'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-8718615387016217531</id><published>2009-07-24T13:22:00.008+08:00</published><updated>2009-08-27T16:13:39.225+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='性能'/><category scheme='http://www.blogger.com/atom/ns#' term='Let&apos;s make the web faster'/><category scheme='http://www.blogger.com/atom/ns#' term='翻译'/><title type='text'>[翻译] gzip 压缩原理</title><content type='html'>&lt;p&gt;译注：本打算翻译这篇文章的，搜了一下已经有人翻译过了，不过网站失效，通过快照获取了部分内容，在此基础之上进行了一些修改，感谢 &lt;a href="http://www.bloglei.com"&gt;bloglei&lt;/a&gt;。&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;原文：&lt;a href="http://code.google.com/intl/zh-CN/speed/articles/gzip.html"&gt;How 
	gzip compression works&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;作者：Kevin Khaw &amp;amp; Eric Higgins，Google 网站管理员&lt;/li&gt;
	&lt;li&gt;翻译：&lt;a href="http://www.bloglei.com"&gt;bloglei&lt;/a&gt; &amp;amp;
	&lt;a href="http://www.99css.com"&gt;ytzong&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;object height="340" width="560"&gt;
	&lt;param name="movie" value="http://www.youtube.com/v/Mjab_aZsdxw&amp;hl=en&amp;fs=1&amp;"&gt;
	&lt;param name="allowFullScreen" value="true"&gt;
	&lt;param name="allowscriptaccess" value="always"&gt;
	&lt;embed allowfullscreen="true" allowscriptaccess="always" height="340" src="http://www.youtube.com/v/Mjab_aZsdxw&amp;hl=en&amp;fs=1&amp;" type="application/x-shockwave-flash" width="560"&gt;	
&lt;/object&gt;
&lt;p&gt;译注：以上是 youtube 视频，请翻墙观看（文中图片调用自 picasa，若显示不了也要翻墙）&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;浏览器请求有无 gzip 压缩的高级预览&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;服务器未 gzip：&lt;/strong&gt;&lt;/p&gt;
&lt;img style="width: 630px; height: 196px;" src="https://docs.google.com/File?id=ddrrtxb_956gf3vjvd3_b"&gt;
&lt;p&gt;&lt;strong&gt;浏览器：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;连接服务器并请求页面。&lt;/li&gt;
	&lt;li&gt;通知服务器，浏览器支持 gzip “Accept-Encoding: gzip”。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;服务器：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;不支持 gzip。忽略 gzip 请求。发送未压缩的页面。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;浏览器：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;接收页面。&lt;/li&gt;
	&lt;li&gt;显示页面。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;服务器 gzip：&lt;/strong&gt;&lt;/p&gt;
&lt;img style="width: 630px; height: 196px;" src="https://docs.google.com/File?id=ddrrtxb_957f9dt9xf8_b"&gt;
&lt;p&gt;&lt;strong&gt;浏览器：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;连接服务器。&lt;/li&gt;
	&lt;li&gt;通知服务器，浏览器支持 gzip “Accept-Encoding: gzip”。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;服务器：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;收到 gzip 支持通知。&lt;/li&gt;
	&lt;li&gt;发送 gzip 编码过的页面，并设置响应头“Content-Encoding: gzip”。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;浏览器：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;接收页面。&lt;/li&gt;
	&lt;li&gt;根据响应头“Content-Encoding: gzip” 解码 gzip 编码过的页面。&lt;/li&gt;
	&lt;li&gt;显示页面。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;如何进行 gzip 压缩&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;简单的说，gzip 压缩是在一个文本文件中找出类似的字符串，并临时替换他们，使整个文件变小。这种形式的压缩对 web 来说特别适合，因为 HTML 和 CSS 
文件通常包含大量的重复字符串，例如空格，标签，及样式定义。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;例子&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在这个例子中，我将用一小段代码演示 gzip 压缩中用相同的标签跟不同的标签的对比。&lt;/p&gt;
&lt;p&gt;在第一段代码中，我用了5个标题标签。&lt;/p&gt;
&lt;p&gt;未压缩: 69 bytes&lt;/p&gt;
&lt;p&gt;压缩后: 85 bytes (译注：某天&lt;a href="http://blog.gulu77.com"&gt;77&lt;/a&gt;问我怎么压缩后比压缩前还大？我回来后看了下原文并测试了一下，事实如此，并非翻译错)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;h1&amp;gt;One&amp;lt;/h1&amp;gt;&lt;br /&gt;&amp;lt;h2&amp;gt;Two&amp;lt;/h2&amp;gt;&lt;br /&gt;&amp;lt;h3&amp;gt;Three&amp;lt;/h3&amp;gt;&lt;br /&gt;&amp;lt;h4&amp;gt;Four&amp;lt;/h4&amp;gt;&lt;br /&gt;&amp;lt;h5&amp;gt;Five&amp;lt;/h5&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;把标题标签改为相同的 div 标签，源代码增大了 10 bytes，但是压缩后，它缩小到 66 bytes，比先前的源代码片段还小！&lt;/p&gt;
&lt;p&gt;未压缩: 79字节&lt;/p&gt;
&lt;p&gt;压缩后: 66 字节&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;div&amp;gt;One&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;div&amp;gt;Two&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;div&amp;gt;Three&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;div&amp;gt;Four&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;div&amp;gt;Five&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;许多开发者可能依此只使用 div 和 span 标签而使页面更大程度的压缩。在多数情况下当然无可非议，但必须注意到正确的语义化标记对可访问性（accessibility）来说非常重要，而且使页面更容易阅读。即便如此，可以使用此方法做一些优化，这取决于你，开发者来决定哪些是合适的。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;延伸阅读&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;
	&lt;a href="http://code.google.com/speed/page-speed/docs/payload.html#GzipCompression"&gt;
	Page Speed – Enable gzip compression&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-8718615387016217531?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/8718615387016217531/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=8718615387016217531&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/8718615387016217531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/8718615387016217531'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/07/how-gzip-compression-works.html' title='[翻译] gzip 压缩原理'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-8208369991835848155</id><published>2009-07-14T11:35:00.001+08:00</published><updated>2009-07-14T11:37:26.434+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='沈玉琳'/><title type='text'>沈语录</title><content type='html'>&lt;p&gt;俗话说呢 没有知识 就要有常识 没有常识要看电视 那万一连电视也没的看的时候呢 请多听我开释&lt;/p&gt;
&lt;p&gt;勾魂择魄是电眼 趋吉避凶要开天眼 清理肠胃得要有屁眼 带我走过春夏秋冬 看破是非黑白 是你的眼&lt;/p&gt;
&lt;p&gt;拍马屁不是病 但拍不好就要人命 在这个人际关系非常讲究的年代里面 我们宁可拍马屁 都不要说坏话 放狗屁&lt;/p&gt;
&lt;p&gt;所谓人鬼殊途 而男女呢是有别 女人要ㄋㄞ 男人要man 那男人如果要是不man呢 就只能把到小甜甜 &lt;/p&gt;
&lt;p&gt;虽然人家说美就是心中有爱 但是告诉你 不美是绝对不会有爱的 今天的故事告诉我们 小时候丑不是丑 只要你能够用心减肥精心打扮 那么恐龙也能边孔雀 丑小鸭也能变天鹅&lt;/p&gt;
&lt;p&gt;好男要配好媳 美女就要配好腿 而带我走过春夏秋冬看破是非黑白 你是我的腿&lt;/p&gt;
&lt;p&gt;不管是大脸还是小脸 就是不要摆臭脸 不管是左脸还是右脸 就是不要不要脸 眼前的黑不是黑 你说的白是什么白 因为你是我的脸&lt;/p&gt;
&lt;p&gt;整人者人恒整之 若要人不整 除非己莫整 整到最高点 心中有整整&lt;/p&gt;
&lt;p&gt;天有外太空 人有内子宫 台上一分钟 台下他却是要十年功 没有三两三 怎能上梁山呢 奉劝大家没本事 那也总得要有一招半式 没有个一招半式 你只能期待别人出事&lt;/p&gt;
&lt;p&gt;若要人温柔 除非己温柔 温柔可以化解寒冬 温柔让你我的心紧紧相依&lt;/p&gt;
&lt;p&gt;可爱之人必有可怜之处 若要人幼稚 除非己幼稚 幼到最高点 心中有幼幼&lt;/p&gt;
&lt;p&gt;人要会说 就像狗要会喝 会说话 让小鸭变天鹅 会说话 让你成仙成佛 会说话 让你进天国&lt;/p&gt;
&lt;p&gt;大鱼大肉也要青菜配 那红花呢 也要绿叶来配 人在演 天在看 大家都在看 你健康我健康 大家都健康&lt;/p&gt;
&lt;p&gt;男女呢要和平相处 如果男女不能和平相处呢 那就是白目 如果白目的话呢 就不如去喝三鹿 三鹿三鹿真恐怖 喝了三鹿让你安心上路&lt;/p&gt;
&lt;p&gt;美丽的脚指头 让你人生走的更宽阔 不美丽的脚指头 让你人不如狗 美丽的脚指头 让你人生走的更有把握 不美丽的脚指头 让你像枯萎的花朵 同时像鸟屎一坨&lt;/p&gt;
&lt;p&gt;跨界有理无理其实都无所谓 也没有意义 重点是呢 大家活在这个舞台上面呢 大家都能成为快乐的大家庭&lt;/p&gt;
&lt;p&gt;男谐星也是人 他们也会为情所困 他们也需要温柔的滋润 请保护男谐星 关怀男谐星 给他们爱情丰富他们的生命&lt;/p&gt;
&lt;p&gt;助理助理 没有助理 就像没有阳光没有小雨 没有助理 让我们失去快乐失去活力 所以请关怀助理 让他们有生存下去的勇气&lt;/p&gt;
&lt;p&gt;大有大的好 但小也有小的妙 唐代诗人白居易 曾经有一首词 就是在讲解这种状况 这首词叫做是 大胸嘈嘈如急雨 小胸切切如私语 嘈嘈切切错杂弹 大奶小奶落玉盘 
&lt;/p&gt;
&lt;p&gt;要有美丽的素颜 必须要有充足的睡眠 没有充足的睡眠 那就要敢花钱 如果没有充足的睡眠 又不敢花钱 那在家被人嫌 出门被人扁 到最后弄的自己 苦海无边&lt;/p&gt;
&lt;p&gt;爱是什么 爱一个人是支持 而不是支配 爱一个人是慰问 而不是质问 爱一个人是倾诉 而不是控诉 爱一个人是善意 而不是得了疝气 爱一个人是甜蜜 千万不要动了胎气&lt;/p&gt;
&lt;p&gt;睡衣以诱惑男人为目的 一定要性感才有魅力 千万不能老气 不能俗气 更不能过气 这样男人才会更爱你 就像老鼠爱大米&lt;/p&gt;
&lt;p&gt;大嫂大嫂 没有你们演艺圈会很无聊 大嫂大嫂 你是台湾的国宝 &lt;/p&gt;
&lt;p&gt;景气好的时候 大家就忙着投资 景气不好的时候 大家就忙着投胎 投胎失败 欲哭无人知 投资失败 赶羚羊XXX 赶羚羊老悲哀&lt;/p&gt;
&lt;p&gt;完美不完美 我们多虚伪 你让我的爱变成一种罪 &lt;/p&gt;
&lt;p&gt;受欢迎不分美与丑 就像白雲云蔡頭 只要心中有真爱 他日比能修成正果&lt;/p&gt;
&lt;p&gt;所谓合理的要求是考验 那不合理的要求呢他就是磨练 那艺人被欺负呢别埋怨 不管是大眼还是小眼 终究你是我的眼&lt;/p&gt;
&lt;p&gt;救火队最可贵 救活队他不会流泪 救火队他不会喝醉 救活队他半夜不睡 救活队他抢救节目不排队 &lt;/p&gt;
&lt;p&gt;宁可早到也不要迟到 那宁可迟到也不要不到 那宁可不到也不能连人都找不到 那如果连人都找不到 那就是你的死期已到&lt;/p&gt;
&lt;p&gt;人没有十全十美 就好比月有阴晴圆缺 人没有十全十美 就像狗有白花黄黑 人与人之间只要真心相待 即便不完美 我们还是要向他说声谢谢 &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-8208369991835848155?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/8208369991835848155/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=8208369991835848155&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/8208369991835848155'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/8208369991835848155'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/07/blog-post_14.html' title='沈语录'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-6498434778391389269</id><published>2009-07-13T17:46:00.013+08:00</published><updated>2009-08-07T15:05:25.603+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='翻译'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>[翻译]纯 CSS 无 Hack 跨浏览器的多列等高</title><content type='html'>&lt;ul&gt;
    &lt;li&gt;原文：&lt;a href="http://matthewjamestaylor.com/blog/equal-height-columns-cross-browser-css-no-hacks"&gt;Equal 
    Height Columns with Cross-Browser CSS and No Hacks&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;作者：&lt;a href="http://matthewjamestaylor.com/about"&gt;Matthew James Taylor&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;翻译：&lt;a href="http://www.99css.com"&gt;ytzong&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;纯 CSS 打造多列等高并不像想象中那么容易。本文着重讲述多列布局出现的问题，之后提供一个在所有浏览器都正常工作的简单解决方案。这个方法 100% 无 CSS 
hack，无图片，无 javascript，甚至可以用在最严格编码的网站上。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;多列等高的问题&lt;/strong&gt;&lt;/p&gt;
&lt;img style="width: 450px; height: 250px;" src="https://docs.google.com/File?id=ddrrtxb_959gfg92hf6_b"&gt;
&lt;p&gt;上例中有包含不同内容的 3 列，可以看出存在的问题是列的背景色随着其包含内容的高度而自适应展开。这是我们要解决的问题。如何使所有的列等高？或具体的说，如何使所有列的高度等于最高列的高度？这很棘手，因为我们不清楚每列将会多高，哪一列是最高的。不能简单的给所有列一个固定的高度，如果内容很少将会导致页面底部有大片空白；如果内容太多则会在文字显示完全前关闭。两种情形都不妥。实际上，内容的长度是动态的，所以每列的高度也是动态的。必须意识到 
Web 上没有固定的东东，乡民们有不同的屏幕分辨率，浏览器中的文字也可能被设置为任意大小，所有这些都会影响内容的高度。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;分离列内容与其背景色&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;解决等高问题的第一步是把能分离的破开。方法是每列用两个 div 替代原来的一个。第一个 div 用来放内容，另一个用来作背景色。分离使我们可以单独控制这些额外的元素，之后用更有效的方法把它们放在一起。答案呼之欲出。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;浮动的容器的高度始终取决于其浮动的内容（高度）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这是本文多列等高方法的核心。 使一个 div 的高度等于最高列高度的唯一方法是这个 div 包含所有的列。换句话说，通过把所有的列放在一个容器中，容器的高度就是最高列的高度。这是个非常有用的结构。&lt;/p&gt;
&lt;img style="width: 300px; height: 194px;" src="https://docs.google.com/File?id=ddrrtxb_960g9xr5kc5_b"&gt;
&lt;p&gt;&lt;strong&gt;3列 HTML div 结构&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;上例中 3 个内容列在一个 div 容器中。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;div id=&amp;quot;container1&amp;quot;&amp;gt;
    &amp;lt;div id=&amp;quot;col1&amp;quot;&amp;gt;Column 1&amp;lt;/div&amp;gt;
    &amp;lt;div id=&amp;quot;col2&amp;quot;&amp;gt;Column 2&amp;lt;/div&amp;gt;
    &amp;lt;div id=&amp;quot;col3&amp;quot;&amp;gt;Column 3&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;3 列 CSS&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;下面是使 div 容器等高于最高列的 CSS。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#container1 {
    float:left;
    width:100%;
}
#col1 {
    float:left;
    width:30%;
    background:red;
}
#col2 {
    float:left;
    width:40%;
    background:yellow;
}
#col3 {
    float:left;
    width:30%;
    background:green;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;为了让这一结构在所有浏览器中正确工作，容器 div 必须浮动（左或右），同时每一个内容列的 div 也要浮动，哪种方式并不重要。浮动内容 div 的进程使它们在页面中排列在一条水平线上。浮动容器使其自适应到最高列的高度。如果不浮动容器，内容 
div 将会从容器底部溢出，容器不会拥有正确的高度。事实上在此例中，容器不浮动的话其最终高度为0。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;增加额外嵌套的容器&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;下一步是增加额外的容器，它们彼此嵌套。我们需要容器的数量等于列的数量：3。这 3 个容器用作各列的背景。请注意，我们去除了原始列的背景色，并将其加至容器上。&lt;/p&gt;
&lt;img style="width: 350px; height: 205px;" src="https://docs.google.com/File?id=ddrrtxb_961f4gqg7cn_b"&gt;
&lt;p&gt;&lt;strong&gt;3列 HTML div 结构&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;两个额外的容器加至下面的 HTML 中。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;strong&gt;&amp;lt;div id=&amp;quot;container3&amp;quot;&amp;gt;
    &amp;lt;div id=&amp;quot;container2&amp;quot;&amp;gt;&lt;/strong&gt;
        &amp;lt;div id=&amp;quot;container1&amp;quot;&amp;gt;
            &amp;lt;div id=&amp;quot;col1&amp;quot;&amp;gt;Column 1&amp;lt;/div&amp;gt;
            &amp;lt;div id=&amp;quot;col2&amp;quot;&amp;gt;Column 2&amp;lt;/div&amp;gt;
            &amp;lt;div id=&amp;quot;col3&amp;quot;&amp;gt;Column 3&amp;lt;/div&amp;gt;
        &amp;lt;/div&amp;gt;
    &lt;strong&gt;&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/strong&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;3 列 CSS&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;所有元素左浮动，容器宽度设为100%，使他们占满页面的宽度。背景色从内容 div 移除并加至容器上。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;strong&gt;#container3 {
    float:left;
    width:100%;
    background:green;
}
#container2 {
    float:left;
    width:100%;
    background:yellow;
}&lt;/strong&gt;
#container1 {
    float:left;
    width:100%;
    &lt;strong&gt;background:red;&lt;/strong&gt;
}
#col1 {
    float:left;
    width:30%;
}
#col2 {
    float:left;
    width:40%;
}
#col3 {
    float:left;
    width:30%;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;用相对定位移动容器&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;现在用相对定位把容器移至新的位置。移动后 div 如下图所示。即等高列背景容器的层叠和位置。为了显示右侧的绿色列 container2 向左移了30%，为了显示中间的黄色列 
container1 向左移动了40%，与此同时红色部分依然可见作为左侧列。&lt;/p&gt;
&lt;img style="width: 497px; height: 632px;" src="https://docs.google.com/File?id=ddrrtxb_962gpsnksfq_b"&gt;
&lt;p&gt;&lt;strong&gt;相对定位的 CSS&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;下面是添加了相对定位的CSS。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#container3 {
    float:left;
    width:100%;
    background:green;
}
#container2 {
    float:left;
    width:100%;
    background:yellow;
    &lt;strong&gt;position:relative;
    right:30%;&lt;/strong&gt;
}
#container1 {
    float:left;
    width:100%;
    background:red;
    &lt;strong&gt;position:relative;
    right:40%;&lt;/strong&gt;
}
#col1 {
    float:left;
    width:30%;
}
#col2 {
    float:left;
    width:40%;
}
#col3 {
    float:left;
    width:30%;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;将每列的内容移回&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;下一步是把每列的内容移回到页面上，使之排列在下面的背景色上。再次使用简单的相对定位来完成它。&lt;/p&gt;
&lt;img style="width: 351px; height: 193px;" src="https://docs.google.com/File?id=ddrrtxb_963fx95wsq2_b"&gt;
&lt;p&gt;最后在最外面的容器 container3 上添加&lt;code&gt;overflow:hidden&lt;/code&gt;，砍去超出容器的部分。&lt;/p&gt;
&lt;img style="width: 204px; height: 193px;" src="https://docs.google.com/File?id=ddrrtxb_964gw75pwff_b"&gt;
&lt;p&gt;&lt;strong&gt;相对定位的 CSS&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;下面是增加了相对定位和溢出的 CSS 规则。请注意 container3 上额外的&lt;code&gt;position:relative&lt;/code&gt;; 这是为了解决一个 
IE bug ，阻止&lt;code&gt;overflow:hidden;&lt;/code&gt;工作。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#container3 {
    float:left;
    width:100%;
    background:green;
    &lt;strong&gt;overflow:hidden;
    position:relative;&lt;/strong&gt;
}
#container2 {
    float:left;
    width:100%;
    background:yellow;
    position:relative;
    right:30%;
}
#container1 {
    float:left;
    width:100%;
    background:red;
    position:relative;
    right:40%;
}
#col1 {
    float:left;
    width:30%;
    &lt;strong&gt;position:relative;
    left:70%;&lt;/strong&gt;
}
#col2 {
    float:left;
    width:40%;
    &lt;strong&gt;position:relative;
    left:70%;&lt;/strong&gt;
}
#col3 {
    float:left;
    width:30%;
    &lt;strong&gt;position:relative;
    left:70%;&lt;/strong&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;对列增加 padding&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;最后还需对列增加 padding，这样每列边缘的文字不至于显得拥挤。如果我们增加 padding，一些浏览器中可能正常显示，但不是所有。IE 错误的盒模型，导致其估算拥有 
padding 的元素宽度异常。一个 200px 宽 20px padding 的 box 在 IE 中被视为 200px 宽，在其他浏览器中则为正确的 240px。padding 
应该加在元素的宽度上。凸微软！&lt;/p&gt;
&lt;p&gt;不过不用担心...我们可以用完全不依赖于 padding 的方法来解决这个问题。相反，我们把列弄窄一点（列宽减去两侧的 padding），之后用相对定位把它们移至正确的位置。在我们的例子中我们用了 
2% 的 padding，则 30% 的列将减至 26%，40% 的列减至 36%。用相对定位移回列时需谨记，现在列变窄了，所以当它们一起像最初那样左浮动时，每一个需要比上一个移动更远的距离。&lt;/p&gt;
&lt;img style="width: 500px; height: 580px;" src="https://docs.google.com/File?id=ddrrtxb_965d2223pfg_b"&gt;
&lt;p&gt;&lt;strong&gt;完整的CSS&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;为了使布局保持在小宽度我在每个内容列增加了&lt;code&gt;overflow:hidden&lt;/code&gt;; 这将切去超出列宽的东东，并阻止其干扰其他布局。重申一下，这只是 
IE 的问题，其他所有浏览器会保持正确的布局，不管列内是虾米。如果你真想这样做，可以用 IE 条件注释只对 IE 写规则。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#container3 {
    float:left;
    width:100%;
    background:green;
    overflow:hidden;
    position:relative;
}
#container2 {
    float:left;
    width:100%;
    background:yellow;
    position:relative;
    right:30%;
}
#container1 {
    float:left;
    width:100%;
    background:red;
    position:relative;
    right:40%;
}
#col1 {
    float:left;
    &lt;strong&gt;width:26%;
    position:relative;
    left:72%;
    overflow:hidden;&lt;/strong&gt;
}
#col2 {
    float:left;
    &lt;strong&gt;width:36%;
    position:relative;
    left:76%;
    overflow:hidden;&lt;/strong&gt;
}
#col3 {
    float:left;
    &lt;strong&gt;width:26%;
    position:relative;
    left:80%;
    overflow:hidden;&lt;/strong&gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;好了，就是这样。我希望这篇文章对你有用。可以自己弄一下 CSS 看一下它是如何工作的。你可以搞很多列，只要容器和内容列的数目相等。不要忘记看看我的 demo：&lt;a href="http://matthewjamestaylor.com/blog/equal-height-columns-2-column.htm"&gt;2 
列 &lt;/a&gt;， 
&lt;a href="http://matthewjamestaylor.com/blog/equal-height-columns-3-column.htm"&gt;3 
列&lt;/a&gt;， 
&lt;a href="http://matthewjamestaylor.com/blog/equal-height-columns-4-column.htm"&gt;4 
列&lt;/a&gt;，以及 
&lt;a href="http://matthewjamestaylor.com/blog/equal-height-columns-5-column.htm"&gt;5 
列&lt;/a&gt;。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-6498434778391389269?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/6498434778391389269/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=6498434778391389269&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/6498434778391389269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/6498434778391389269'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/07/equal-height-columns-with-cross-browser.html' title='[翻译]纯 CSS 无 Hack 跨浏览器的多列等高'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-6715832020253982266</id><published>2009-06-30T14:50:00.010+08:00</published><updated>2009-08-07T15:05:05.075+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='用户体验'/><category scheme='http://www.blogger.com/atom/ns#' term='Let&apos;s make the web faster'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='翻译'/><title type='text'>[翻译]界面提示与感知延迟</title><content type='html'>&lt;ul&gt;
    &lt;li&gt;原文：&lt;a href="http://code.google.com/speed/articles/usability-latency.html"&gt;UI 
    messaging and perceived latency&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;作者：Roma Shah，用户体验研究员&lt;/li&gt;
    &lt;li&gt;翻译：&lt;a href="http://www.99css.com"&gt;ytzong&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对一般的用户而言，&lt;em&gt;速度&lt;/em&gt;并不意味着&lt;em&gt;性能&lt;/em&gt;。用户对网站速度的感知很大程度上取决于其整体感受，包括他们如何高效的从网站获取所需，以及网站反映出来的易响应性。&lt;/p&gt;
&lt;p&gt;当设计 Web 站点或 Web 应用时，谨记用户来你的网站是有目的的。他们能越快（越容易）达到他们的访问目的越好。如果用户在获取内容时遇到了许多困难，他们将会离开你的网站，而去能让他们更快达成目标的其他网站。&lt;/p&gt;
&lt;p&gt;节省用户时间，让他们感觉没那么慢有很多工作可以做，本文只涉及提示信息。&lt;/p&gt;
&lt;p&gt;提示信息，要考虑三点：&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;&lt;strong&gt;网站是否足够简单和直观，首次访问者是否可以很容易上手？&lt;/strong&gt;
    &lt;p&gt;如果不是，花些时间去设计首次运行经验（first-run-experience）提示。&lt;/p&gt;
    &lt;p&gt;比方说，你的网站是一个拥有数项功能的强大的 Web 应用。鉴于为此类型的应用程序设计一套直观的“开箱即用”（out-of-the-box ）体验并不是一项容易的事情，用户可能需要一个入门帮助。&lt;/p&gt;
    &lt;p&gt;首次运行经验简单的为用户说明产品是什么以及/或如何使用其亮点。从长远上看，花一点点时间让用户提前了解产品的一些关键点会给他们节省大量时间。&lt;/p&gt;
    &lt;p&gt;提示：不要过头！不要阻止用户获取实际内容，这会令首次运行经验变成额外的一步（a cumbersome multi-step process）。&lt;/p&gt;
&lt;img style="width: 591px; height: 424px;" src="https://docs.google.com/File?id=ddrrtxb_967f9789vgg_b"&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;提示信息是否会中断或增加用户操作？&lt;/strong&gt;
    &lt;p&gt;仔细考虑如何显示信息会增加用户的操作流程。在不影响用户操作的情况下可能有更合适的方式去显示提示信息。&lt;/p&gt;
    &lt;p&gt;想象一个场景，用户完成一个动作，你认为很完美的。你认为需要二次确认（double-checking）的，为了防止用户意外出错。所以你弹出一个提示“你确定这样做吗？”，这阻止了用户的一个大的错误操作，但对于确定要执行这个动作的用户来说，你增加了一个额外的操作。作为替代，你可以运行操作立即执行，同时在操作后增加一个撤消的功能。&lt;/p&gt;
&lt;img style="width: 873px; height: 203px;" src="https://docs.google.com/File?id=ddrrtxb_968hdfjbkdq_b"&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;等待时如何让用户静心（reassure）&lt;/strong&gt;
    &lt;p&gt;面对现实吧，有些时候用户不得不等待。然而，你可以做一些工作使不可避免的等待时间变得比较好度过（bearable）。&lt;/p&gt;
    &lt;p&gt;如果用户等待的时间较长，使用进度条。进度条不只表明必须等待，同时粗略的显示要等多久。如果要更详细一点，甚至可以显示已经完成的数据（例如 40kb 
    of 64kb）。尽量避免估算完成时间，因为连接速度波动时，没有什么比看到完成时间一直在增长更郁闷的了。&lt;/p&gt;
&lt;img style="width: 786px; height: 403px;" src="https://docs.google.com/File?id=ddrrtxb_969hbzf5hdz_b"&gt;
    &lt;p&gt;当用户等待的时间较短时，可以用 loading 指示器。loading 指示器通常是一个旋转变化的小东东（a spinning doo-dad of 
    sorts），但也可以是很简单的文字&amp;quot;loading&amp;quot;。&lt;/p&gt;
&lt;img style="width: 1020px; height: 182px;" src="https://docs.google.com/File?id=ddrrtxb_970cxsdjrdf_b"&gt;
    &lt;p&gt;你也许会问，为什么极短的时间也要显示这些？loading 指示器是给用户的反馈：用户的操作已经通过，网站正在执行。没有指示器的话，用户不确定是否执行，从而可能企图再次尝试。&lt;/p&gt;
    &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;延伸阅读&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这些建议只是为用户设计时需铭记的事项中的冰山一角。下面是一些可以让你入门（get you started）的关于交互设计和 Web 设计原则的资料：&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;
    &lt;a href="http://books.google.com/books?id=9F7gaZKd2rYC&amp;amp;printsec=frontcover&amp;amp;source=gbs_navlinks_s"&gt;
    About Face&lt;/a&gt; by Cooper, Reimann, Cronin&lt;/li&gt;
    &lt;li&gt;
    &lt;a href="http://books.google.com/books?id=9qabAQAACAAJ&amp;amp;dq=Bulletproof+Web+Design%09Dan+Cederholm&amp;amp;ei=lV07SujKE5SMkQT08JS6BQ"&gt;
    Bulletproof Web Design&lt;/a&gt; by Dan Cederholm&lt;/li&gt;
    &lt;li&gt;
    &lt;a href="http://books.google.com/books?id=sVKuMvaFzjQC&amp;amp;printsec=frontcover&amp;amp;dq=Contextual+Design+by+Beyer+and+Holtzblatt&amp;amp;ei=yV07SpGZLpeSkASq9JG6BQ"&gt;
    Contextual Design&lt;/a&gt; by Beyer and Holtzblatt&lt;/li&gt;
    &lt;li&gt;
    &lt;a href="http://books.google.com/books?id=O3rGKAAACAAJ&amp;amp;dq=Designing+the+User+Interface+by+Ben+Schneiderman+and+Catherine+Plaisant&amp;amp;ei=8V07StXYAYjQkASgjZW6BQ"&gt;
    Designing the User Interface&lt;/a&gt; by Ben Schneiderman and Catherine Plaisant&lt;/li&gt;
    &lt;li&gt;
    &lt;a href="http://books.google.com/books?id=0bIwkFeeWF0C&amp;amp;printsec=frontcover&amp;amp;source=gbs_navlinks_s"&gt;
    Interaction Design&lt;/a&gt; by Jenny Preece, et al&lt;/li&gt;
    &lt;li&gt;
    &lt;a href="http://books.google.com/books?id=6bPTRJ7xkFkC&amp;amp;q=The+Elements+of+User+Experience%09Jesse+James+Garrett&amp;amp;dq=The+Elements+of+User+Experience%09Jesse+James+Garrett&amp;amp;ei=6147Sv39DJTOkwTi0Zm6BQ&amp;amp;pgis=1"&gt;
    The Elements of User Experience&lt;/a&gt; by Jesse James Garrett&lt;/li&gt;
&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-6715832020253982266?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/6715832020253982266/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=6715832020253982266&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/6715832020253982266'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/6715832020253982266'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/06/ui-messaging-and-perceived-latency.html' title='[翻译]界面提示与感知延迟'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-6893355361855925320</id><published>2009-06-29T18:19:00.005+08:00</published><updated>2009-08-27T16:13:39.225+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='性能'/><category scheme='http://www.blogger.com/atom/ns#' term='Let&apos;s make the web faster'/><category scheme='http://www.blogger.com/atom/ns#' term='翻译'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>[翻译]减少 reflow</title><content type='html'>&lt;ul&gt;
    &lt;li&gt;原文：&lt;a href="http://code.google.com/speed/articles/reflow.html"&gt;Minimizing 
    browser reflow&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;作者：Author: Lindsey Simon&lt;/li&gt;
    &lt;li&gt;翻译：&lt;a href="http://www.99css.com"&gt;ytzong&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;浏览器为了重新渲染部分或整个页面，重新计算页面元素位置和几何结构（geometries）的进程叫做 reflow。由于 reflow 是一种浏览器中的用户拦截（user-blocking）操作，所以了解如何减少 
reflow 次数，及不同的文档属性（DOM 层级（DOM depth），CSS 效率，不用类型的 style 变化）对 reflow 次数的影响对开发者来说非常必要。有时 
reflow 页面中的一个元素会 reflow 它的父元素（译注：这里是复数）以及所有子元素。&lt;/p&gt;
&lt;p&gt;有多种用户操作和 DHTML 变化可能会触发 reflow。调整浏览器窗口的大小，用 javascript 计算样式（&lt;a href="http://www.w3.org/TR/1998/REC-CSS2-19980512/cascade.html#computed-value"&gt;computed 
styles&lt;/a&gt;），在 DOM 中创建删除元素，改变元素的 class 都会触发 reflow。值得注意的是，有些操作会多次触发 reflow，超出你的想象。下图源自 
Steve Souders 的演讲 &amp;quot;&lt;a href="http://code.google.com/events/io/sessions/EvenFasterWebsites.html"&gt;Even 
Faster Web Sites&lt;/a&gt;&amp;quot;：&lt;/p&gt;
&lt;img style="width: 400px; height: 300px;" src="https://docs.google.com/File?id=ddrrtxb_972hfqtxwcp_b"&gt;
&lt;p&gt;从上表可以很明显的看出，在所有浏览器中并非所有 javascript 控制的样式都触发 reflow，即使触发了触发的次数也不尽相同。同时可以看出现代浏览器在控制 
reflow 次数方面做的越来越好。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;在 Google，我们通过多种方式对我们的页面及 Web 应用测速，同时 reflow 是我们增加 UI 时考虑的一个关键因素。我们致力于传达轻快的（lively），交互性强的（interactive）和令人愉悦的（delightful）的用户体验。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;原则&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;下面是一些减小 reflow 的原则：&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;减少不必要的 DOM 层级（DOM depth）。改变 DOM 树中的一级会导致所有层级的改变，上至根部，下至被改变节点的子节点。这导致大量时间耗费在执行 
    reflow 上面。&lt;/li&gt;
    &lt;li&gt;尽量减少 CSS 规则，去除未用到的 CSS。&lt;/li&gt;
    &lt;li&gt;如果做复杂的表现变化，如动画，让它脱离文档流。用绝对定位或 fixed 定位来完成。&lt;/li&gt;
    &lt;li&gt;避免不必要的复杂的 CSS 选择器，尤其是后代选择器（descendant selectors），因为为了匹配选择器将耗费更多的 CPU。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;在下面的视频中（译注：引用自 youtube，请翻墙），Lindsey 介绍了一些减少 reflow 的方法。&lt;/p&gt;
&lt;object height="340" width="560"&gt;
    &lt;param name="movie" value="http://www.youtube.com/v/ZHxbs5WEQzE&amp;hl=en&amp;fs=1&amp;"&gt;
    &lt;/param&gt;
    &lt;param name="allowFullScreen" value="true"&gt;
    &lt;/param&gt;
    &lt;param name="allowscriptaccess" value="always"&gt;
    &lt;/param&gt;
    &lt;embed allowfullscreen="true" allowscriptaccess="always" height="340" src="http://www.youtube.com/v/ZHxbs5WEQzE&amp;hl=en&amp;fs=1&amp;" type="application/x-shockwave-flash" width="560"&gt;
    
    &lt;/embed&gt;
&lt;/object&gt;
&lt;p&gt;&lt;strong&gt;延伸阅读&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href="http://www.mozilla.org/newlayout/doc/reflow.html"&gt;Mozilla 关于 HTML 
    reflow 的记录（Mozilla&amp;#39;s Notes on HTML reflow）&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;
    &lt;a href="http://dev.opera.com/articles/view/efficient-javascript/?page=3"&gt;Opera 
    的重绘和 reflow（Opera&amp;#39;s Repaints and reflows）&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;Satoshi Ueyama 在 Firefox 中调试 reflow 的例子（Satoshi Ueyama&amp;#39;s debug-Firefox reflow 
    demos）:
    &lt;ul&gt;
        &lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=nJtBUHyNBxs"&gt;google.co.jp reflow&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=ZTnIxIA5KGw"&gt;mozilla.org reflow&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=dndeRnzkJDU"&gt;ja.wikipedia.org 
        reflow&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;
    &lt;a href="http://www.stubbornella.org/content/2009/03/27/reflows-repaints-css-performance-making-your-javascript-slow/"&gt;
    Nicole Sullivan 的关于 reflow 和 重绘（Nicole Sullivan on Reflows and Repaints）&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-6893355361855925320?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/6893355361855925320/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=6893355361855925320&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/6893355361855925320'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/6893355361855925320'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/06/minimizing-browser-reflow.html' title='[翻译]减少 reflow'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-1739466911702256619</id><published>2009-06-29T13:48:00.007+08:00</published><updated>2009-08-27T16:13:39.226+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='性能'/><category scheme='http://www.blogger.com/atom/ns#' term='Let&apos;s make the web faster'/><category scheme='http://www.blogger.com/atom/ns#' term='翻译'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>[翻译]减小 HTML 文件</title><content type='html'>&lt;ul&gt;
   &lt;li&gt;原文：&lt;a href="http://code.google.com/intl/zh-CN/speed/articles/optimizing-html.html"&gt;Reducing
   the file size of HTML documents&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;作者：Jens Meiert &amp;amp; Kevin Khaw， Google 网站管理员&lt;/li&gt;
   &lt;li&gt;翻译：&lt;a href="http://www.99css.com"&gt;ytzong&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;改善网站速度的一个很明显的方法是减小 HTML 文件的大小。有一些方法，比如：硬压缩（rigid compression），acupuncture-like
ID 及改变 class 名（译注：这一句不是很确定，原文：There are several ways to do this, from rigid compression
to acupuncture-like ID and class name changes）。下面是一些我们总结的使 HTML 标记更精简的方法。&lt;/p&gt;
&lt;object height="340" width="560"&gt;
   &lt;param name="movie" value="http://www.youtube.com/v/ZSJxhm26lH4&amp;amp;hl=en&amp;amp;fs=1&amp;amp;"&gt;
  
   &lt;param name="allowFullScreen" value="true"&gt;
  
   &lt;param name="allowscriptaccess" value="always"&gt;
  
   &lt;embed allowfullscreen="true" allowscriptaccess="always" src="http://www.youtube.com/v/ZSJxhm26lH4&amp;amp;hl=en&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" height="340" width="560"&gt;&lt;/embed&gt;
  
  
&lt;/object&gt;
&lt;p&gt;译注：上面是引用 youtube 的视频，请翻墙观看。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;HTML 4&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;HTML （非XHTML），MIME type 为 text/html ，允许省略一些标签。通过
&lt;a href="http://www.w3.org/TR/html4/sgml/dtd.html"&gt;HTML 4 DTD&lt;/a&gt;，你可以省略以下标签（那些所谓可避免的元素，这里用删除线加以标记（感谢一楼的翻译））&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;del&gt;&amp;lt;/area&amp;gt;&lt;/del&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;&lt;del&gt;&amp;lt;/base&amp;gt;&lt;/del&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;body&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;/body&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;&lt;del&gt;&amp;lt;/br&amp;gt;&lt;/del&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;&lt;del&gt;&amp;lt;/col&amp;gt;&lt;/del&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;/colgroup&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;/dd&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;/dt&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;/head&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;&lt;del&gt;&amp;lt;/hr&amp;gt;&lt;/del&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;&lt;del&gt;&amp;lt;/img&amp;gt;&lt;/del&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;&lt;del&gt;&amp;lt;/input&amp;gt;&lt;/del&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;/li&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;&lt;del&gt;&amp;lt;/link&amp;gt;&lt;/del&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;&lt;del&gt;&amp;lt;/meta&amp;gt;&lt;/del&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;/option&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;/p&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;&lt;del&gt;&amp;lt;/param&amp;gt;&lt;/del&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;tbody&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;/tbody&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;/td&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;/tfoot&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;/th&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;/thead&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;/tr&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;比如，你的代码是&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;li&amp;gt;List item&amp;lt;/li&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;可以写为&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;li&amp;gt;List item&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;又比如段落要以&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;/p&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;结尾，你可以只写&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;p&amp;gt;My paragraph&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;甚至可以去掉 html，head，body（把这作为你的编码规范之前请确保这会令你舒服）。&lt;/p&gt;
&lt;p&gt;省略标签后 HTML 依然有效，同时减小了文件大小。对一般的页面来说，可以节省 5-20%。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;HTML 5&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;正在发展中的 &lt;a href="http://www.w3.org/TR/html5/"&gt;HTML 5&lt;/a&gt; 提供了一些减小文件大小的方法。&lt;/p&gt;
&lt;p&gt;比如，页面文档类型声明&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;对比&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;很显然 HTML 5 的 DTD 更短。&lt;/p&gt;
&lt;p&gt;当为页面指定编码时，HTML 5 很易用而且更短：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;meta charset="utf-8"&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;代替&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;meta http-equiv="content-type" content="text/html; charset=utf-8"&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;通常情况下，浏览器会正确处理 HTML。&lt;/p&gt;
&lt;p&gt;另外，在今天的 HTML 5 中，你可以去除声明 MIME 类型的 type 属性，比如&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;type="text/css"&lt;/code&gt;&lt;/pre&gt;
或
&lt;pre&gt;&lt;code&gt;type="text/javascript"&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;你可以用&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
替代
&lt;pre&gt;&lt;code&gt;&amp;lt;script type="text/javascript"&amp;gt;&lt;/code&gt;&lt;/pre&gt;
用&lt;pre&gt;&lt;code&gt;&amp;lt;style&amp;gt;&lt;/code&gt;&lt;/pre&gt;
替代
&lt;pre&gt;&lt;code&gt;&amp;lt;style type="text/css"&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在所有类型的页面中（甚至是 XHTHML）你可以省略&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;type="text/css"&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;HTML 5 使这一切变得更简单。&lt;/p&gt;
&lt;p&gt;同时使用上面所有的方法会使文件节省 10%-20%（甚至更多），这取决于你的编码风格和页面中的文本内容数量。代码将更干净，访问者会更快的获取网站内容。在&lt;a href="http://www.google.com/intl/en/privacy.html"&gt;隐私中心&lt;/a&gt;项目中我们采用很多这类技术，节省了原始文件大小的
20%。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-1739466911702256619?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/1739466911702256619/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=1739466911702256619&amp;isPopup=true' title='2 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/1739466911702256619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/1739466911702256619'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/06/reducing-file-size-of-html-documents.html' title='[翻译]减小 HTML 文件'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-1735010143737337477</id><published>2009-06-28T15:37:00.007+08:00</published><updated>2009-08-27T16:13:39.226+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='性能'/><category scheme='http://www.blogger.com/atom/ns#' term='翻译'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>[翻译]谨慎使用 Iframe</title><content type='html'>&lt;ul&gt;
 &lt;li&gt;原文：&lt;a href="http://www.stevesouders.com/blog/2009/06/03/using-iframes-sparingly/"&gt;Using 
 Iframes Sparingly&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;原作者：&lt;a href="http://stevesouders.com/bio.php"&gt;Steve Souders&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;翻译：&lt;a href="http://www.99css.com"&gt;ytzong&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;使用 iframe 可以轻易的调用其他网站的页面，但应谨慎使用。它比创建其他 DOM 元素（包括 style 和 script）多耗费数十甚至数百倍的性能。增加100个不同元素的时间对比显示 
iframe 是多么耗费性能：&lt;/p&gt;
&lt;img style="width: 308px; height: 384px;" src="https://docs.google.com/File?id=ddrrtxb_974cqch2vfw_b"&gt;
&lt;p&gt;使用 iframe 的页面通常没有这么多 iframe，所以创建 DOM 的时间不用多虑。更值得关心的是 onload 事件和连接池。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;iframe 阻塞 onload&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;window 的 onload 事件尽快执行非常重要。这会让浏览器的载入进度指示器完成，用户依据此判断页面是否已经加载完。而 onload 事件延迟，会让用户感觉页面变慢。&lt;/p&gt;
&lt;p&gt;window 的 onload 事件直到它所包含的所有 iframe，以及所有 iframe 中的资源完全加载完成后才会触发。在 Safari 和 Chrome 
中，用 javascritpt 动态的给 iframe 的 src 赋值可以避免这种阻塞行为。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;一个连接池&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;对每个 web 服务器来说，浏览器只打开极少的几个连接数。老的浏览器，包括 IE 6/7 和 Firefox 2，每个主机只有2个连接。在新的浏览器中，连接数增加鸟。Safari 
3+ 和 Opera 9+ 增至4个，Chrome 1+ 、IE 8 及 Firefox 3 增至6个。对比表格详见《&lt;a href="http://www.stevesouders.com/blog/2008/03/20/roundup-on-parallel-connections/"&gt;并行连接数总结&lt;/a&gt;》。&lt;/p&gt;
&lt;p&gt;人们可能期望每个 iframe 有单独的连接池，但并非如此。在大多数浏览器中，连接被主页面和它的 iframe 所共享，这意味着有可能 iframe 中的资源占用了可用连接而阻塞了主页面的资源加载。如果 
iframe 中的内容同等重要，或比主页面更重要，这很好。然而在通常情况下 iframe 中的内容对页面来说不太重要，iframe 占用连接数是不可取的。一个解决方案是在优先级更高的资源下载完成后再动态的给 
iframe 的 src 赋值。&lt;/p&gt;
&lt;p&gt;美国的10大网站中有5个使用了 iframe。它们多数用来加载广告。这不是很合适，但可以理解，这是一个简便的在内容中插入广告的途径。在很多情况下，使用 iframe 
是合理的。但要意识到这对你的页面的性能影响。非必要时，请谨慎使用。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-1735010143737337477?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/1735010143737337477/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=1735010143737337477&amp;isPopup=true' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/1735010143737337477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/1735010143737337477'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/06/using-iframes-sparingly.html' title='[翻译]谨慎使用 Iframe'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-3012685751353536136</id><published>2009-06-23T13:31:00.008+08:00</published><updated>2009-08-27T16:13:39.226+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='性能'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>谨慎使用 CSS Sprites</title><content type='html'>&lt;p&gt;CSS sprites 是网站速度的优化很重要的一环，但也有其对性能的不利之处。&lt;/p&gt;
&lt;p&gt;Vladimir Vukićević 的博文《&lt;a href="http://blog.vlad1.com/2009/06/22/to-sprite-or-not-to-sprite/"&gt;To
Sprite Or Not To Sprite&lt;/a&gt;》提到：&lt;/p&gt;
&lt;blockquote&gt;
 &lt;p&gt;CSS sprites 的最大问题是内存占用。非精确构造的 sprite 图片会占用意想不到的内存空间。以 WHIT TV 网站为例，&lt;a href="http://www.wthitv.com/images/bg_module.png"&gt;这里&lt;/a&gt;是一张
 sprite 图片，1299x15,000 的png，已经经过很好的压缩，实际下载大小只有26K左右，但是浏览器不会转换压缩的图像数据。当图片下载并解压，将耗费&lt;em&gt;75MB&lt;/em&gt;内存(1299
 * 15000 * 4)。如果图片没有阿尔法透明，可能会减小到1299 * 15000 * 3，可往往还是牺牲了渲染速度。即便如此，我们占用了55MB内存。这张图片绝大部分是空白的，什么都没有，没有什么有用的内容。仅仅因为这张图片，当浏览器只加载&lt;a href="http://www.wthitv.com/"&gt;WHIT
 主页&lt;/a&gt;时会增加75+MB内存。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="http://blog.mozilla.com/webdev/"&gt;Mozilla Web Development Blog&lt;/a&gt; 在《&lt;a href="http://blog.mozilla.com/webdev/2009/06/22/use-sprites-wisely/"&gt;
Use Sprites Wisely&lt;/a&gt;》中总结道：&lt;/p&gt;
&lt;blockquote&gt;
 &lt;p&gt;简而言之，即使是很小的 sprite 图片也有可能吃掉大量的系统内存 -- 每个页面50M甚至100M或者更多。速度虽然至关重要，但要意识到 sprite
 及其他 hacks 同样会影响用户体验。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;现在再回过头看之前的《&lt;a href="http://www.99css.com/2009/03/yahoogmailcss-sprites.html"&gt;Yahoo与Gmail的CSS Sprites对比&lt;/a&gt;》，综合性能方面 Gmail 无疑占了上风。当然，这些只是前端层面的优化，从根源上来看，设计师用最少的图片来实现最优的效果才是王道。&lt;/p&gt;
&lt;p&gt;正如雅虎女工程师 Nicole Sullivan 在 Velocity 2009 大会演讲 PPT 《&lt;a href="http://www.slideshare.net/stubbornella/the-fast-and-the-fabulous"&gt;The
Fast And The Fabulous&lt;/a&gt;》所提到的：&lt;/p&gt;
&lt;blockquote&gt;
 &lt;p&gt;consistent design = clean code = fast site（一致的设计 = 更干净的代码 = 更快的网站）&lt;/p&gt;
&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-3012685751353536136?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/3012685751353536136/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=3012685751353536136&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/3012685751353536136'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/3012685751353536136'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/06/css-sprites.html' title='谨慎使用 CSS Sprites'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-7258603932734319741</id><published>2009-06-19T16:08:00.009+08:00</published><updated>2009-08-27T16:13:39.227+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='性能'/><category scheme='http://www.blogger.com/atom/ns#' term='翻译'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>[翻译]简化CSS选择器</title><content type='html'>&lt;ul&gt;
   &lt;li&gt;原文：&lt;a href="http://www.stevesouders.com/blog/2009/06/18/simplifying-css-selectors/"&gt;Simplifying
   CSS Selectors&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;原作者：&lt;a href="http://stevesouders.com/bio.php"&gt;Steve Souders&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;翻译：&lt;a href="http://www.99css.com"&gt;ytzong&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;本文是《&lt;a href="http://www.amazon.com/gp/product/0596522304?ie=UTF8&amp;amp;tag=stevsoud-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0596522304"&gt;Even
Faster Web Sites: Performance Best Practices for Web Developers (Paperback)&lt;/a&gt;》的最后一章。上篇帖子《&lt;a href="http://www.stevesouders.com/blog/2009/03/10/performance-impact-of-css-selectors/"&gt;Performance
Impact of CSS Selectors&lt;/a&gt;》（&lt;a href="http://www.99css.com/2009/06/performance-impact-of-css-selectors.html"&gt;中文版&lt;/a&gt;）最后提出了一段假设：&lt;/p&gt;
&lt;blockquote&gt;
   &lt;p&gt;对大多数网站而言，优化CSS选择器活得的性能提升很小，不值得去计较。有些配合Javascript交互的CSS规则会明显的拖慢页面。这是应该关注的焦点。所以我开始关注现实中影响页面性能的CSS样式相关的小问题。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;我收到了很多反馈。David Hyatt的文章《&lt;a href="https://developer.mozilla.org/en/Writing_Efficient_CSS"&gt;Writing
Efficient CSS for use in the Mozilla UI&lt;/a&gt;》披露：&lt;/p&gt;
&lt;blockquote&gt;
   &lt;p&gt;样式系统渲染一条规则是从最右边开始之后依次向左移动。在你的小子树(subtree)持续检测的时候，样式系统将继续向左侧移动直到它不匹配CSS规则或匹配错误。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;由此得出，我们优化工作的重点应该是：匹配大量页面元素的最右侧的CSS选择器。我上篇博文测试的CSS选择器看起来很费性能，但是按这条新观点审视，我们发觉这其实不值得担心，比如：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;DIV DIV DIV P A.class0007 {}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这个选择器有5层，看起来很复杂，但是我们来看最右侧的选择器 A.class0007 ，我们发现，在整个页面中需要浏览器逆向匹配的只有一个元素。&lt;/p&gt;
&lt;p&gt;优化CSS选择器的关键点在于最右侧的选择器，也叫做&lt;em&gt;key selector &lt;/em&gt;(巧合？)。有一个更昂贵的选择器&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;A.class0007 * {}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;尽管这个选择器看起来更简单，但对浏览器匹配而言更昂贵。因为浏览器要从右至左，开始后要检查匹配 * 的所有元素。这意味着浏览器会尝试匹配页面中的所有元素。下图为&lt;a href="http://stevesouders.com/efws/css-selectors/universal.php"&gt;普通选择器&lt;/a&gt;与先前的&lt;a href="http://stevesouders.com/efws/css-selectors/descendant.php"&gt;后代选择器&lt;/a&gt;加载时间的对比：&lt;/p&gt;
&lt;img style="width: 321px; height: 337px;" src="https://docs.google.com/File?id=ddrrtxb_976dzfnjbfc_b"&gt;
&lt;p&gt;它清晰的反映出一个匹配很多元素的key selector会严重的拖慢页面。其他可能会大量增加浏览器工作的key selector包括：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;A.class0007 DIV {}
#id0007 &amp;gt; A {}
.class0007 [href] {}
DIV:first-child {}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;不是所有的CSS选择器伤害性能，尽管看起来如此。CSS选择器的关键点在于泛匹配的key selector。这对于含有大量DOM元素、CSS规则，更高 reflow 的Web
2.0应用更加重要。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-7258603932734319741?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/7258603932734319741/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=7258603932734319741&amp;isPopup=true' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/7258603932734319741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/7258603932734319741'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/06/simplifying-css-selectors.html' title='[翻译]简化CSS选择器'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-3698964834539824898</id><published>2009-06-19T14:39:00.009+08:00</published><updated>2009-08-27T16:13:39.227+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='性能'/><category scheme='http://www.blogger.com/atom/ns#' term='翻译'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>[翻译]CSS选择器的性能影响</title><content type='html'>&lt;ul&gt;
   &lt;li&gt;原文：&lt;a href="http://www.stevesouders.com/blog/2009/03/10/performance-impact-of-css-selectors/"&gt;Performance Impact of CSS Selectors&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;原作者：&lt;a href="http://stevesouders.com/bio.php"&gt;Steve Souders&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;翻译：&lt;a href="http://www.99css.com"&gt;ytzong&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一些关于CSS选择器性能的讨论引起了我的兴趣。&lt;/p&gt;
&lt;p&gt;第一个是Shaun Inman写的《&lt;a href="http://www.shauninman.com/archive/2008/05/05/css_qualified_selectors"&gt;合格的CSS选择器（CSS
Qualified Selectors）&lt;/a&gt;》，实际上这篇博文并没有提到CSS性能，不过有一个来自&lt;a href="http://webkit.org/blog/"&gt;David
Hyatt&lt;/a&gt;(Safari 和 WebKit 的架构师,同时为 Mozilla, Camino, Firefox 工作)的评论：&lt;/p&gt;
&lt;blockquote&gt;
   &lt;p&gt;如果你非常在意页面的性能那千万别使用CSS3选择器。实际上，在所有浏览器中，用 class 和 id 来渲染，比那些使用同胞，后代选择器，子选择器（sibling,
   descendant and child selectors）对页面性能的改善更值得关注。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;接下来的一篇博文很神奇。Jon Sykes做了一个系列的文章来测试CSS性能：&lt;a href="http://blog.archive.jpsykes.com/151/testing-css-performance/"&gt;第一部分&lt;/a&gt;,
&lt;a href="http://blog.archive.jpsykes.com/152/testing-css-performance-pt-2/"&gt;第二部分&lt;/a&gt;,
&lt;a href="http://blog.archive.jpsykes.com/153/more-css-performance-testing-pt-3/"&gt;
第三部分&lt;/a&gt;，其中&lt;a href="http://blog.archive.jpsykes.com/153/more-css-performance-testing-pt-3/"&gt;
第三部分&lt;/a&gt;非常值得一读。这使我确信优化CSS选择器是页面性能优化的一个关键步骤。&lt;/p&gt;
&lt;p&gt;但是，有两件事一直困扰着我。首先，大量的DOM元素和CSS规则。页面包含60000个DOM元素和20000条CSS规则。这使浏览器非正常的运行（下面将证明这点）。下面的统计表格为美国10大网站的比较：&lt;/p&gt;
&lt;table cellspacing="0"&gt;
   &lt;tbody&gt;&lt;tr&gt;
       &lt;th&gt;网站名称&lt;/th&gt;
       &lt;th&gt;CSS规则&lt;/th&gt;
       &lt;th&gt;DOM元素&lt;/th&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
       &lt;td&gt;AOL&lt;/td&gt;
       &lt;td&gt;2289&lt;/td&gt;
       &lt;td&gt;1628&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
       &lt;td&gt;eBay&lt;/td&gt;
       &lt;td&gt;305&lt;/td&gt;
       &lt;td&gt;588&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
       &lt;td&gt;Facebook&lt;/td&gt;
       &lt;td&gt;2882&lt;/td&gt;
       &lt;td&gt;1966&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
       &lt;td&gt;Google&lt;/td&gt;
       &lt;td&gt;92&lt;/td&gt;
       &lt;td&gt;552&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
       &lt;td&gt;Live Search&lt;/td&gt;
       &lt;td&gt;376&lt;/td&gt;
       &lt;td&gt;449&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
       &lt;td&gt;MSN&lt;/td&gt;
       &lt;td&gt;1038&lt;/td&gt;
       &lt;td&gt;886&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
       &lt;td&gt;MySpace&lt;/td&gt;
       &lt;td&gt;932&lt;/td&gt;
       &lt;td&gt;444&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
       &lt;td&gt;Wikipedia&lt;/td&gt;
       &lt;td&gt;795&lt;/td&gt;
       &lt;td&gt;1333&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
       &lt;td&gt;Yahoo!&lt;/td&gt;
       &lt;td&gt;800&lt;/td&gt;
       &lt;td&gt;564&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
       &lt;td&gt;YouTube&lt;/td&gt;
       &lt;td&gt;821&lt;/td&gt;
       &lt;td&gt;817&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
       &lt;td&gt;平均值&lt;/td&gt;
       &lt;td&gt;&lt;strong&gt;1033&lt;/strong&gt;&lt;/td&gt;
       &lt;td&gt;&lt;strong&gt;923&lt;/strong&gt;&lt;/td&gt;
   &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;第二件困扰我的事情是测试以多大页面为基准？我想解决的问题是：无效率的CSS选择器会拖慢页面吗？所有测试的5个页面包含20000个a元素（嵌套在P, DIV,
DIV, DIV内部）（译注：使用同样的HTML页面），不同的是CSS：基准（没有CSS）（译注：下图中的baseline），标签选择器（tag selector )（a标签有一条CSS规则）（译注：下图中的tag），20000个class选择器（class
selectors）（译注：下图中的class），20000个子选择器（child selectors）（译注：下图中的child），20000个后代选择器（descendant
selectors）（译注：下图中的descendant）。后面3个页面的大小都超过了3M，而基准及标签选择器的页面则只有1.8M。&lt;/p&gt;
&lt;p&gt;接下来调整为：&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;2000个a标签和2000条CSS规则（原先是20000），这实际上有6000个左右的DOM元素，因为a嵌套在P, DIV, DIV, DIV内部&lt;/li&gt;
   &lt;li&gt;基准页面和标签选择器页面像其他页面一样有2000条CSS规则，不过只有简单的class规则生效，不会影响其他含有class属性的标签&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;我在12个浏览器上进行了测试 。页面呈现时间是用嵌在头部和底部的脚本来测量（所有测试在本地运行）。测试结果如下图（我没有测试Oprea 9.63，你可以下载&lt;a href="http://stevesouders.com/tests/css-selectors-my-2000-tests-data.csv"&gt;csv格式的数据&lt;/a&gt;，
&lt;a href="http://stevesouders.com/tests/css-selectors/index.html"&gt;这里是测试页面&lt;/a&gt;）：&lt;/p&gt;
&lt;img style="width: 513px; height: 497px;" src="https://docs.google.com/File?id=ddrrtxb_978d45vjs88_b"&gt;
&lt;p&gt;性能随浏览器而改变；&lt;del&gt;奇怪的是，两个新浏览器IE 8 和 Firefox 3.1反而是最慢的&lt;/del&gt; 所有测试是在同一台PC机的不同浏览器，不同PC机的不同浏览器可能有不同的性能特点。这个测试的目的不是比较各浏览器的性能，而是为了测试浏览器如何处理逐渐复杂的CSS选择器。&lt;/p&gt;
&lt;p&gt;【修订：更深入的比较Firefox 3.0和3.1，我发现这台PC上的Firefox 3.1和IE 8逊于其他PC机。即使再进行测试，也会由于不同PC的硬件差异导致不同的结果，所以，不要用这些数据来比较浏览器。】&lt;/p&gt;
&lt;p&gt;毫不意外，越复杂的页面（子选择器和后代选择器）通常性能越差。最大的意外在于第四个页面居然是最差的。所有的浏览器平均慢了50毫秒，观察最大的(IE 6&amp;amp;7,
FF3)平均只有20毫秒。对现在70%+的用户来说，改进CSS选择器只能提高20毫秒。&lt;/p&gt;
&lt;p&gt;请记住，这些测试接近最坏的情况。20个a标签嵌在P, DIV, DIV, DIV导致总共有6000个DOM元素，这是10大站点中最复杂两个网站（见表一）的两倍大。另外，测试的页面含有2000个极端无效的CSS规则，一般的网站大约有三分之一（译注：网站本身的CSS规则）的子选择器及后代选择器。以Fackbook为例，2882个CSS规则里只有750个极端无效的规则。&lt;/p&gt;
&lt;p&gt;为什么我的测试结果和之前其他人的有些不同？一个不同来自于这极其极端。它成倍的放大于我们通常所用的页面。在这种情况下，浏览器面对3M的页面，60000个DOM元素及20000条CSS规则会有不同的表现。我注意到，我的测试结果在IE6&amp;amp;7中非常不同。我想知道IE在处理CSS选择器时是否某个规则。为此我测试了子选择器和后代选择器页面，从1000至20000逐渐增加a标签和CSS规则的数量，结果如下图所示，IE在18000条CSS规则时陡增。但是IE
6&amp;amp;7 渲染页面更接近实际，因为在我的测试中，他们的性能竟然是最高的。&lt;/p&gt;
&lt;img style="width: 459px; height: 330px;" src="https://docs.google.com/File?id=ddrrtxb_979pncsgggb_b"&gt;
&lt;p&gt;基于这些测试我有以下假设：对大多数网站而言，优化CSS选择器活得的性能提升很小，不值得去计较。有些配合Javascript交互的CSS规则会明显的拖慢页面。这是应该关注的焦点。所以我开始关注现实中影响页面性能的CSS样式相关的小问题（offsetWidth,
:hover）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;译注：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;这是本人的处女翻&lt;/li&gt;
   &lt;li&gt;并非一字一句的直翻，原则是尽量保留有用的内容&lt;/li&gt;
   &lt;li&gt;水平有限，难免糟蹋了大师的作品，有疑问请自行到原文查阅&lt;/li&gt;
&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-3698964834539824898?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/3698964834539824898/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=3698964834539824898&amp;isPopup=true' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/3698964834539824898'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/3698964834539824898'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/06/performance-impact-of-css-selectors.html' title='[翻译]CSS选择器的性能影响'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-3119814144583867120</id><published>2009-06-13T01:01:00.021+08:00</published><updated>2009-09-28T17:53:01.509+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='互联网'/><title type='text'>RSS全文Feed集中贴(2009-9-27更新)</title><content type='html'>&lt;p&gt;2009-9-28&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;19楼UED &lt;a href="http://feeds2.feedburner.com/19lou"&gt;http://feeds2.feedburner.com/19lou&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;2009-9-27&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;职场99% &lt;a href="http://feeds2.feedburner.com/zhichang99"&gt;http://feeds2.feedburner.com/zhichang99&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;2009-7-23&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;The Big Picture &lt;a href="http://feeds2.feedburner.com/the-big-picture"&gt;http://feeds2.feedburner.com/the-big-picture&lt;/a&gt; 由于原始页面中有内联css，导致图片之间有巨大的间隔，请用快捷键空格翻页（知道内联CSS的缺点了吧 *^__^*）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;2009-7-15&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Alisoft UED &lt;a href="http://feeds2.feedburner.com/alisoftued"&gt;http://feeds2.feedburner.com/alisoftued&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;2009-7-14&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;阿里巴巴（中文站）用户体验设计部：&lt;a href="http://feeds2.feedburner.com/aliued-full"&gt;http://feeds2.feedburner.com/aliued-full&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;Blueidea Web标准化：&lt;a href="http://feeds2.feedburner.com/blueidea-web"&gt;http://feeds2.feedburner.com/blueidea-web&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;CSS Globe：&lt;a href="http://feeds2.feedburner.com/css-globe"&gt;http://feeds2.feedburner.com/css-globe&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;ChinaZ阿飞：&lt;a href="http://feeds2.feedburner.com/1982y"&gt;http://feeds2.feedburner.com/1982y&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;之前的：&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;网易科技每日一站：&lt;a href="http://feeds2.feedburner.com/1site1day"&gt;http://feeds2.feedburner.com/1site1day&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;Google 关于网站提速的教程《Let&amp;#39;s make the web faster》：&lt;a href="http://feeds2.feedburner.com/google-speed"&gt;http://feeds2.feedburner.com/google-speed&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;派代网 - 最受关注帖子：&lt;a href="http://feeds2.feedburner.com/paidai"&gt;http://feeds2.feedburner.com/paidai&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;cnbeta全文版（图片防盗链，Firefox 用户配合 
    &lt;a href="https://addons.mozilla.org/zh-CN/firefox/addon/953"&gt;RefControl&lt;/a&gt; 
    扩展伪装可完美解决）：&lt;a href="http://feeds2.feedburner.com/cnbeta-full"&gt;http://feeds2.feedburner.com/cnbeta-full&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;Admin5全文版：&lt;a href="http://feeds2.feedburner.com/admin5-full"&gt;http://feeds2.feedburner.com/admin5-full&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;COMSHARP CMS：&lt;a href="http://feeds2.feedburner.com/comsharp"&gt;http://feeds2.feedburner.com/comsharp&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;念嘬娱乐全文版(只提取第一页)：&lt;a href="http://feeds2.feedburner.com/nianzuo-full"&gt;http://feeds2.feedburner.com/nianzuo-full&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;煎蛋大图版：&lt;a href="http://feeds2.feedburner.com/jandan-full"&gt;http://feeds2.feedburner.com/jandan-full&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以后发布的feed集中在此帖更新（删除的话也在写在这里）。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-3119814144583867120?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/3119814144583867120/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=3119814144583867120&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/3119814144583867120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/3119814144583867120'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/06/rss-full-feed.html' title='RSS全文Feed集中贴(2009-9-27更新)'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-4936425615180861573</id><published>2009-06-04T17:18:00.005+08:00</published><updated>2009-07-31T13:44:36.217+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>Google Reader的新功能？</title><content type='html'>&lt;p&gt;像往常一样使用GR，不过有时会莫名其妙多出一个搜索框，如图：&lt;/p&gt;
&lt;img style="width: 540px; height: 60px;" src="https://docs.google.com/File?id=ddrrtxb_981dhfbdxd3_b"&gt;
&lt;p&gt;不过这个表单还用不了，让我们拭目以待！&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-4936425615180861573?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/4936425615180861573/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=4936425615180861573&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/4936425615180861573'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/4936425615180861573'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/06/google-reader.html' title='Google Reader的新功能？'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-2453759189340497141</id><published>2009-06-04T10:50:00.004+08:00</published><updated>2009-06-04T11:35:19.073+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='随笔'/><title type='text'>给博客套了个域名</title><content type='html'>&lt;p&gt;Blogger被墙，为了照顾不会翻墙的众粉丝，特套上一闲置已久的域名99css.com(缘自某著名H站99**s)。图片已改为pisaca上的链接，墙内粉丝也可以访问，评论页面目前也很正常。&lt;/p&gt;
&lt;p&gt;订阅地址依然是：&lt;a href="http://feeds2.feedburner.com/ytzong"&gt;http://feeds2.feedburner.com/ytzong&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;已订阅blogspot的话不用更改，blogspot会自动转向&lt;/p&gt;
&lt;p&gt;目前还是用Blogger来写，前两天试了下，可以很轻松的将文章及评论转到wordpress，不过习惯股沟的产品了，暂时不会转。&lt;/p&gt;
&lt;p&gt;再强调一下：是昨天晚上套的域名，不是今天&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-2453759189340497141?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/2453759189340497141/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=2453759189340497141&amp;isPopup=true' title='2 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/2453759189340497141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/2453759189340497141'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/06/blog-post.html' title='给博客套了个域名'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-2456352079173547225</id><published>2009-06-01T12:29:00.005+08:00</published><updated>2009-06-03T13:53:46.735+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='greasemonkey'/><category scheme='http://www.blogger.com/atom/ns#' term='chrome'/><title type='text'>折腾下 Chrome</title><content type='html'>&lt;p&gt;&lt;strong&gt;前言&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Chrome 2 开始支持Greasemonkey，Chrome 3 开始支持扩展...离我们换浏览器越来越近了。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;自定义用户数据目录&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;以XP为例，下同&lt;/p&gt;
&lt;p&gt;默认位置 C:\Documents and Settings\Administrator\Local Settings\Application Data\Google\Chrome\User 
Data&lt;/p&gt;
&lt;p&gt;要更换到 E:\Chrome 的话：&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;在快捷方式上点右键，选属性，切换到快捷方式选项卡，在目标一项中加上 --user-data-dir=e:chrome&lt;/li&gt;
    &lt;li&gt;形如 &amp;quot;C:\Documents and Settings\Administrator\Local Settings\Application Data\Google\Chrome\Application\chrome.exe&amp;quot; 
    --user-data-dir=e:chrome&lt;/li&gt;
    &lt;li&gt;点击确定&lt;/li&gt;
    &lt;li&gt;重启Chrome后 E:\Chrome 文件夹中会自动生成相关数据。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;自定义升级版本&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;下载并运行 &lt;a href="http://chromium.googlecode.com/files/chromechannel-2.0.exe"&gt;Google 
Chrome Channel Changer&lt;/a&gt; ，有3个选项可供选择： &lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;stable，稳定版，推荐追求稳定的普通用户使用，更新最慢。&lt;/li&gt;
    &lt;li&gt;beta，测试版，有一定新功能，但是可能会存在不稳定情况，适合喜欢尝鲜的朋友使用，更新速度一般。&lt;/li&gt;
    &lt;li&gt;dev，开发版，更新最快，新功能最多，但是可能非常不稳定，适合开发人员使用。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Chrome 2+ 开启Greasemonkey&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;在快捷方式上点右键，选属性，切换到快捷方式选项卡，在目标一项中加上 --enable-user-scripts&lt;/li&gt;
    &lt;li&gt;形如 &amp;quot;C:\Documents and Settings\Administrator\Local Settings\Application Data\Google\Chrome\Application\chrome.exe&amp;quot; 
    --user-data-dir=e:chrome --enable-user-scripts&lt;/li&gt;
    &lt;li&gt;点击确定&lt;/li&gt;
    &lt;li&gt;将你想要的脚步拷到 E:\Chrome\Default\User Scripts 中&lt;/li&gt;
    &lt;li&gt;重启 Chrome&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;获取 Greasemonkey 请到 &lt;a href="http://userscripts.org/"&gt;http://userscripts.org/&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;另外一部分 stylish 也提供用户脚本，比如我写的这个Gmail去广告stylish：&lt;a href="http://userstyles.org/styles/15631"&gt;http://userstyles.org/styles/15631&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Chrome 3+ 开启扩展&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;在快捷方式上点右键，选属性，切换到快捷方式选项卡，在目标一项中加上 --enable-extensions&lt;/li&gt;
    &lt;li&gt;形如 &amp;quot;C:\Documents and Settings\Administrator\Local Settings\Application Data\Google\Chrome\Application\chrome.exe&amp;quot; 
    --user-data-dir=e:chrome --enable-user-scripts --enable-extensions&lt;/li&gt;
    &lt;li&gt;点击确定&lt;/li&gt;
    &lt;li&gt;重启 Chrome&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;开启后用Chrome打开以下站点，点击安装即可(类似 Firefox) 目前有几下扩展可用：&lt;/p&gt; 
&lt;ul&gt;
    &lt;li&gt;Gmail Checker：该扩展可以显示你Gmail 里有多少封新邮件 
    &lt;a href="http://dev.chromium.org/developers/design-documents/extensions/samples/gmail.crx?attredirects=0"&gt;
    点此安装&lt;/a&gt;（可能需翻墙）&lt;/li&gt;
    &lt;li&gt;Subscribe in Google Reader：该扩展可以帮助你订阅站点的RSS 到Google Reader, 已经订阅的站点会显示打勾状态 
    &lt;a href="http://dev.chromium.org/developers/design-documents/extensions/samples/subscribe.crx?attredirects=0"&gt;
    点此安装&lt;/a&gt;（可能需翻墙）&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.adsweep.org/"&gt;AdSweep&lt;/a&gt; 一个类似AdBlock的扩展，可以隐藏页面上的广告。它通过JavaScript调整页面的CSS，也可以当做一个用户脚本 
    &lt;a href="http://www.adsweep.org/AdSweep.crx"&gt;点此安装&lt;/a&gt; &lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.vasanth.in/software/page-rank-for-chrome/"&gt;Page Rank 
    for Chrome&lt;/a&gt; 显示当前页面的PR值 
    &lt;a href="http://www.vasanth.in/wp-content/plugins/download-monitor/download.php?id=3"&gt;
    点此安装&lt;/a&gt; &lt;/li&gt;
    &lt;li&gt;&lt;a href="http://blog.cleeki.com/?p=70"&gt;Cleeki&lt;/a&gt; 类似IE8的加速器 
    &lt;a href="http://www.cleeki.com/php/download.php?pi=chrome"&gt;点此安装&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;参考文献：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href="http://google.org.cn/2009/05/23/chrome-channel-changer/"&gt;Chrome的Stable/Beta/Dev版本说明和切换方法&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.cnbeta.com/articles/84911.htm"&gt;让Chrome远离C盘:图文详解便携版Chrome制作方法&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.cnbeta.com/articles/84167.htm"&gt;Chrome 的两个Sample 扩展&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.yeeyan.com/articles/view/pestwave/43736"&gt;首批Google Chrome扩展：拦截广告、检查PR、IE8加速器&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-2456352079173547225?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/2456352079173547225/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=2456352079173547225&amp;isPopup=true' title='2 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/2456352079173547225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/2456352079173547225'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/06/chrome-enable-greasemonkey-user-scripts.html' title='折腾下 Chrome'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-981145151735822707</id><published>2009-05-30T14:29:00.007+08:00</published><updated>2009-07-31T13:49:37.407+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>伪清除浮动一法</title><content type='html'>&lt;p&gt;&lt;strong&gt;前言：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;彪叔一个多月前总结了《&lt;a href="http://www.twinsenliang.net/skill/20090413.html"&gt;清理浮动的全家&lt;/a&gt;》,当时看了之后没什么新鲜的东西也就忽略了，今天偶然又翻到那篇文章，想到了另外一个的方法(N久前在书店翻到的)，在网上没看到有人提起过，写出来大家一起讨论下。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;HTML：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;ul&amp;gt;
&amp;lt;li&amp;gt;无序列表&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;无序列表&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;无序列表&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;
&amp;lt;p&amp;gt;段落&amp;lt;/p&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;CSS：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ul, li{margin:0;padding:0;}
ul{background-color:yellow;}
li{float:left;list-style-type:none;}
p{clear:both;background-color:red;}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Firefox下效果：&lt;/strong&gt;&lt;/p&gt;
&lt;img style="width: 400px; height: 50px;" src="https://docs.google.com/File?id=ddrrtxb_983dxch83gz_b"&gt;
&lt;p&gt;可见，ul的黄色背景并没有显示出来。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;重点来了：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在CSS理加上如下代码&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ul{float:left;}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;效果如下：&lt;/p&gt;
&lt;img style="width: 400px; height: 50px;" src="https://docs.google.com/File?id=ddrrtxb_984cghzqkf6_b"&gt;
&lt;p&gt;&lt;strong&gt;缺点：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;浮动算是清除成功了，但是宽度没有像display:block那样撑开，需要指定一个宽度：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ul{width:100%;}&lt;/code&gt;&lt;/pre&gt;
&lt;img style="width: 400px; height: 50px;" src="https://docs.google.com/File?id=ddrrtxb_985q5bq3mf6_b"&gt;
&lt;p&gt;&lt;strong&gt;总结：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;浮动带来的一个问题就是清除浮动，虽然有很多方法来解决，但最根本的解决方法还是不要滥用浮动，比如有些情况下完全可以用&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;selector{display:inline;}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;或&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;selector{display:inline-block;}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;来实现。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-981145151735822707?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/981145151735822707/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=981145151735822707&amp;isPopup=true' title='2 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/981145151735822707'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/981145151735822707'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/05/blog-post.html' title='伪清除浮动一法'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-835241863957061612</id><published>2009-05-10T21:38:00.005+08:00</published><updated>2009-06-13T01:19:33.380+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='互联网'/><title type='text'>Admin5 RSS 全文 Feed</title><content type='html'>&lt;p&gt;&lt;strong&gt;前言：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;作为曾经的站长，im286、chinaz、admin5是经常光顾的网站，3者都有rss（都是摘要，够抠门的），不过admin5的rss更新太慢，很久之前跟图王反映过，当时图王答应弄一弄，等到如今还是没动静（MJJ）。
&lt;/p&gt;
&lt;p&gt;╮(╯▽╰)╭，求人不如求己，索性自己搞。 &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Feed地址：&lt;/strong&gt;http://feeds2.feedburner.com/admin5-full&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-835241863957061612?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/835241863957061612/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=835241863957061612&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/835241863957061612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/835241863957061612'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/05/admin5-rss-feed.html' title='Admin5 RSS 全文 Feed'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-1663743369350992516</id><published>2009-05-04T23:50:00.004+08:00</published><updated>2009-06-03T13:56:33.301+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='互联网'/><title type='text'>cnbeta Rss feed 全文输出</title><content type='html'>&lt;p&gt;&lt;strong&gt;前言：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;小众曾介绍过《&lt;a href="http://www.appinn.com/full-rss-feed/" rel="bookmark" title="Permanent Link: RSS feed 摘要输出轻松全文"&gt;RSS 
feed 摘要输出轻松全文&lt;/a&gt;》，其中提到的cnbeta全文feed不是很稳定，经常有的文章只有标题没有正文，于是小弟五一抽空做了这个feed。 &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;简介：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;该feed目前30分钟更新一次，不适合抢沙发。 &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;已知问题：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;CB启用了防盗链，图片无法正常显示（Firefox用户配合&lt;a href="https://addons.mozilla.org/zh-CN/firefox/addon/953"&gt;RefControl&lt;/a&gt;扩展伪装可完美解决） 
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;地址：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feeds2.feedburner.com/cnbeta-full"&gt;http://feeds2.feedburner.com/cnbeta-full&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-1663743369350992516?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/1663743369350992516/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=1663743369350992516&amp;isPopup=true' title='3 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/1663743369350992516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/1663743369350992516'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/05/cnbeta-rss-feed.html' title='cnbeta Rss feed 全文输出'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-5013598855596625107</id><published>2009-04-25T21:31:00.008+08:00</published><updated>2009-07-31T13:51:04.819+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><title type='text'>Firefox3的IE8主题</title><content type='html'>&lt;p&gt;今天逛了下&lt;a href="http://www.mozilla.com/zh-CN/"&gt;谋智&lt;/a&gt;，找到几个IE8主题：&lt;/p&gt;
&lt;ol&gt;
   &lt;li&gt;&lt;a href="https://addons.mozilla.org/zh-CN/firefox/addon/4988"&gt;Vista-aero&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;&lt;a href="https://addons.mozilla.org/zh-CN/firefox/addon/4129"&gt;myFireFox&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;&lt;a href="https://addons.mozilla.org/zh-CN/firefox/addon/10270"&gt;Ie8fox&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;最大的亮点是侧栏书签可以像IE7/8一样悬浮：&lt;/p&gt;
&lt;img style="width: 620px; height: 380px;" src="https://docs.google.com/File?id=ddrrtxb_987f8gxw9ck_b"&gt;
&lt;p&gt;三者之间有微小差异：&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;1与2的区别在于2的工具栏背景较深（貌似同一人开发）&lt;/li&gt;
   &lt;li&gt;3与1、2的区别在于3状态栏较朴素，且3不支持标签组颜色&lt;/li&gt;
&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-5013598855596625107?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/5013598855596625107/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=5013598855596625107&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/5013598855596625107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/5013598855596625107'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/04/firefox3ie8.html' title='Firefox3的IE8主题'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-6919866250554498747</id><published>2009-04-23T11:24:00.003+08:00</published><updated>2009-10-24T13:27:33.843+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='浏览器bug'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>IE 6/7 鼠标滚轮失效Bug</title><content type='html'>&lt;p&gt;&lt;strong&gt;前言：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;万恶的IE总是带给我们“惊喜”，比如滚轮失效。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解决方法：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;你可以尝试用以下方法解决：&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;去除以下代码（IE7下遇到过一次）&lt;pre&gt;&lt;code&gt;html{overflow-x:hidden;}&lt;/code&gt;&lt;/pre&gt;
    &lt;/li&gt;
    &lt;li&gt;在滚动区域加上如下代码（IE6下遇过一次）&lt;pre&gt;&lt;code&gt;selcetor{background-color:white;}&lt;/code&gt;&lt;/pre&gt;
    &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;延伸阅读：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://fabdevelop.com/blog/index.php?id=8&amp;amp;no_cache=1&amp;amp;tx_ttnews%5Btt_news%5D=21&amp;amp;tx_ttnews%5Byear%5D=2007&amp;amp;tx_ttnews%5Bmonth%5D=06&amp;amp;tx_ttnews%5Bday%5D=14"&gt;
Internet Explorer bug: Broken mouse wheel scrolling&lt;/a&gt;
&lt;a href="http://fabdevelop.com/blog/fileadmin/filemanager/bug.html"&gt;Demo&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-6919866250554498747?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/6919866250554498747/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=6919866250554498747&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/6919866250554498747'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/6919866250554498747'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/04/ie-67-bug.html' title='IE 6/7 鼠标滚轮失效Bug'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-5123554896958351636</id><published>2009-04-16T16:44:00.021+08:00</published><updated>2009-10-24T13:27:33.843+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='浏览器bug'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>说说display:inline-block</title><content type='html'>&lt;p&gt;&lt;strong&gt;前言：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Firefox 3发布后，我开始肆无忌惮的使用inline-blcok...&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;基本用法：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;inline元素的inline-block：&lt;pre&gt;&lt;code&gt;span{displsy:inline-blcok;}&lt;/code&gt;&lt;/pre&gt;
    &lt;/li&gt;
    &lt;li&gt;
    &lt;p&gt;block元素的inline-block：&lt;/p&gt;
    &lt;pre&gt;&lt;code&gt;div{displsy:inline-blcok;#displsy:inline;#zoom:1;}&lt;/code&gt;&lt;/pre&gt;
    &lt;p&gt;#开头的为针对IE6/7的hack，多数人用*，用*的话我使用的格式化工具会出错。&lt;/p&gt;
    &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;遇到的几个问题：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;代码&lt;/strong&gt;&lt;/p&gt;
    &lt;p&gt;&lt;strong&gt;格式化对间距的影响：&lt;/strong&gt;&lt;/p&gt;
    &lt;p&gt;HTML：&lt;/p&gt;
    &lt;pre&gt;&lt;code&gt;&amp;lt;ul&amp;gt;
    &amp;lt;li class=&amp;quot;current&amp;quot;&amp;gt;1&amp;lt;/li&amp;gt;
    &amp;lt;li&amp;gt;2&amp;lt;/li&amp;gt;
    &amp;lt;li&amp;gt;3&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;&lt;/code&gt;&lt;/pre&gt;
    &lt;p&gt;注意代码的缩进为4个空格&lt;/p&gt;
    &lt;p&gt;CSS：&lt;/p&gt;
    &lt;pre&gt;&lt;code&gt;/*请自行引入YUI reset*/
body{margin:10px;font-size:12px;font-family:Tahoma, Arial, Helvetica, sans-serif;}
li{display:inline-block;#display:inline;#zoom:1;padding:1px 5px;border:1px #ccc solid;background-color:black;cursor:pointer;color:white;}
li.current{background-color:#c31909;}&lt;/code&gt;&lt;/pre&gt;
    &lt;p&gt;以下为IE 6/7/8显示效果（Firefox 3/Safari 4/Chrome 2同IE8）：&lt;/p&gt;
&lt;img style="width: 400px; height: 150px;" src="https://docs.google.com/File?id=ddrrtxb_989cc2gpvc2_b"&gt;
    &lt;p&gt;可见除IE6/7外的浏览器的li之间有4px的间隔。&lt;/p&gt;
    &lt;p&gt;HTML将缩进去除则正常：&lt;/p&gt;
    &lt;pre&gt;&lt;code&gt;&amp;lt;ul&amp;gt;
&amp;lt;li class=&amp;quot;current&amp;quot;&amp;gt;1&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;2&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;3&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;&lt;/code&gt;&lt;/pre&gt;
    &lt;p&gt;以下为IE 6/7/8显示效果（Firefox 3/Safari 4/Chrome 2同IE8）：&lt;/p&gt;
&lt;img style="width: 400px; height: 150px;" src="https://docs.google.com/File?id=ddrrtxb_990hc72fwdr_b"&gt;
    &lt;p&gt;由此分析，这4px可理解为一个空格。&lt;/p&gt;
    &lt;p&gt;当然，我们的HTML代码是给人看的，加上编辑器有格式化代码工具，缩进不能去除，而且在实际应用中li之间往往有一定的间距，所以我的做法是顺水推舟，仅对IE 
    6/7 hack：&lt;/p&gt;
    &lt;pre&gt;&lt;code&gt;li{#margin-right:4px;}&lt;/code&gt;&lt;/pre&gt;
    &lt;/li&gt;
    &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;overflow引起Firefox 3 bug：&lt;/strong&gt;&lt;/p&gt;
    &lt;p&gt;HTML：&lt;/p&gt;
    &lt;pre&gt;&lt;code&gt;&amp;lt;a href=&amp;quot;#&amp;quot;&amp;gt;订阅&amp;lt;/a&amp;gt;&lt;/code&gt;&lt;/pre&gt;
    &lt;p&gt;CSS：&lt;/p&gt;
    &lt;pre&gt;&lt;code&gt;/*请自行引入YUI reset*/
body{margin:10px;font-size:12px;font-family:Tahoma, Arial, Helvetica, sans-serif;}
a{display:inline-block;width:3.5em;padding:3px 0;background-color:red;font-weight:bold;text-decoration:none;text-align:center;color:white;}
a:hover{color:black;}&lt;/code&gt;&lt;/pre&gt;
    &lt;p&gt;以下为IE 6/7/8显示效果（Firefox 3/Safari 4/Chrome 2同IE&lt;strong&gt;6&lt;/strong&gt;）：&lt;/p&gt;
&lt;img style="width: 400px; height: 150px;" src="https://docs.google.com/File?id=ddrrtxb_991gkk34khj_b"&gt;
    &lt;p&gt;IE 7/8 的padding有点小问题，不过基本可以忽略。&lt;/p&gt;
    &lt;p&gt;如果给a加上overflow:hidden（此处的overflow:hidden没有必要，仅为演示使用）&lt;/p&gt;
    &lt;pre&gt;&lt;code&gt;/*请自行引入YUI reset*/
body{margin:10px;font-size:12px;font-family:Tahoma, Arial, Helvetica, sans-serif;}
a{display:inline-block;width:3.5em;&lt;strong&gt;overflow:hidden;&lt;/strong&gt;padding:3px 0;background-color:red;font-weight:bold;text-decoration:none;text-align:center;color:white;}
a:hover{color:black;}&lt;/code&gt;&lt;/pre&gt;
    &lt;p&gt;Firefox 3显示效果：&lt;/p&gt;
&lt;img style="width: 200px; height: 130px;" src="https://docs.google.com/File?id=ddrrtxb_992kkphc4cf_b"&gt;
    &lt;p&gt;text-align:center失效！其余浏览器皆正常（这里有点小插曲，开始我误以为是td中的inline-block元素不能居中，后来发现是overflow:hidden的问题），经测试overflow:auto也会出现此问题，不过这个更少用到。&lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;IE 6的line-height失效：&lt;/strong&gt;&lt;/p&gt;
    &lt;p&gt;HTML：&lt;/p&gt;
    &lt;pre&gt;&lt;code&gt;&amp;lt;p&amp;gt;欢迎使用&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;飞信&amp;lt;/p&amp;gt;&lt;/code&gt;&lt;/pre&gt;
    &lt;p&gt;CSS：&lt;/p&gt;
    &lt;pre&gt;&lt;code&gt;/*请自行引入YUI reset*/
body{margin:10px;font-size:12px;font-family:Tahoma, Arial, Helvetica, sans-serif;}
p{background-color:yellow;line-height:5;}
span{display:inline-block;width:16px;height:16px;background-image:url(&amp;#39;http://images.n20svrg.139.com/simple2008/coremail/images/simple_icons.png&amp;#39;);background-repeat:no-repeat;background-position:-500px -50px;vertical-align:middle;}&lt;/code&gt;&lt;/pre&gt;
    &lt;p&gt;以下为IE 6/7/8显示效果（Firefox 3/Safari 4/Chrome 2同IE8）：&lt;/p&gt;
&lt;img style="width: 450px; height: 200px;" src="https://docs.google.com/File?id=ddrrtxb_993fv7sw4gm_b"&gt;
    &lt;p&gt;未找到根治方法，可变通一下用padding解决：&lt;/p&gt;
    &lt;pre&gt;&lt;code&gt;p{background-color:yellow;padding:2em 0;}&lt;/code&gt;&lt;/pre&gt;
    &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;总结：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;即便如此，我还是会继续使用下去-:P&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-5123554896958351636?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/5123554896958351636/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=5123554896958351636&amp;isPopup=true' title='6 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/5123554896958351636'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/5123554896958351636'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/04/displayinline-block.html' title='说说display:inline-block'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-7402614862580079120</id><published>2009-04-13T23:36:00.006+08:00</published><updated>2009-07-14T11:35:23.865+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='沈玉琳'/><title type='text'>[视频]荒谬大师--沈玉琳</title><content type='html'>&lt;p&gt;这是存在我硬盘有段时间的一段视频，本想传到YouTube的，不过现在被河蟹了，o(╯□╰)o&lt;/p&gt;
&lt;embed align="middle" allowscriptaccess="sameDomain" height="400" quality="high" src="http://player.youku.com/player.php/sid/XODQ1MTc4ODg=/v.swf" type="application/x-shockwave-flash" width="480"&gt;&lt;/embed&gt;
&lt;p&gt;如果你不知道谁是沈玉琳，请看：&lt;a href="http://zh.wikipedia.org/w/index.php?title=%E6%B2%88%E7%8E%89%E7%90%B3&amp;amp;variant=zh-hans"&gt;维基百科 
- 沈玉琳&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-7402614862580079120?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/7402614862580079120/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=7402614862580079120&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/7402614862580079120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/7402614862580079120'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/04/blog-post_13.html' title='[视频]荒谬大师--沈玉琳'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-3533285042064176849</id><published>2009-04-11T00:16:00.007+08:00</published><updated>2009-08-01T02:17:06.629+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='stylish'/><title type='text'>Firefox的IE7风格主题</title><content type='html'>&lt;p&gt;使用&lt;a href="http://ytzong.blogspot.com/2009/03/firefoxchrome.html"&gt;Chrome主题&lt;/a&gt;没多久就腻了，于是乎又整了个IE7风格主题：&lt;/p&gt;
&lt;img style="width: 500px; height: 360px;" src="https://docs.google.com/File?id=ddrrtxb_995dvx4gp2h_b"&gt;
&lt;p&gt;参考了一些现成的脚本，比如&lt;a href="http://userstyles.org/styles/5171"&gt;[Fx3.*] IE style tabs 
(untested)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;配合以下扩展使用：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href="http://addons.sociz.com/firefox/54/"&gt;Tab Mix Lite CE&lt;/a&gt;（调整标签宽度）&lt;/li&gt;
    &lt;li&gt;&lt;a href="https://addons.mozilla.org/zh-CN/firefox/addon/7390/"&gt;Strata Aero&lt;/a&gt;（蓝色主题）&lt;/li&gt;
    &lt;li&gt;&lt;a href="https://addons.mozilla.org/zh-CN/firefox/addon/3895/"&gt;Personal 
    Menu&lt;/a&gt;（Chrome式菜单）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;安装地址：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://userstyles.org/styles/16661"&gt;http://userstyles.org/styles/16661&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-3533285042064176849?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/3533285042064176849/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=3533285042064176849&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/3533285042064176849'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/3533285042064176849'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/04/firefoxie7.html' title='Firefox的IE7风格主题'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-7187397183140626715</id><published>2009-04-08T23:24:00.004+08:00</published><updated>2009-06-03T14:10:29.860+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='互联网'/><title type='text'>裸奔啦~\(≧▽≦)/~</title><content type='html'>&lt;p&gt;CSS Naked Day，博客去皮裸奔！&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;来历：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;CSS Naked Day，也称CSS裸奔节或CSS裸奔日，这天，参加裸奔的Blog 将会去除页面上所有的 CSS 和广告裸奔一天，借此来表明CSS的重要性。当然如果你的网站是用table来布局的话这个节日对你来说并不是很合适。&lt;/p&gt;
&lt;p&gt;2006年有将近800个国际知名网站参与此节日。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;目的：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;推动Web标准、提倡简洁为美、使用正确的HTML标记、体现良好的页面结构。暂时把页面设计抛弃，直接展示内容！&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;历届时间：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;2006年4月5日&lt;/li&gt;
    &lt;li&gt;2007年4月5日&lt;/li&gt;
    &lt;li&gt;2008年4月9日&lt;/li&gt;
    &lt;li&gt;2009年4月9日&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;延伸阅读：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://naked.dustindiaz.com/"&gt;CSS Naked Day&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-7187397183140626715?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/7187397183140626715/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=7187397183140626715&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/7187397183140626715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/7187397183140626715'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/04/blog-post.html' title='裸奔啦~\(≧▽≦)/~'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-4577382128487751521</id><published>2009-04-03T14:10:00.011+08:00</published><updated>2009-10-16T01:22:18.130+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jquery'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>body标签class属性的妙用(Google Reader前端简单分析)</title><content type='html'>&lt;p&gt;身为greader的重度用户，之前写过&lt;a href="http://ytzong.blogspot.com/2009/02/stylishgoogle-reader.html"&gt;stylish&lt;/a&gt;，今天来简单分析下其中关于body的一点小技巧。&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;&lt;strong&gt;区分不同浏览器&lt;/strong&gt;
&lt;img style="width: 225px; height: 675px;" src="https://docs.google.com/File?id=ddrrtxb_997mtfp4pgg_b"&gt;
    &lt;p&gt;IE6：&lt;/p&gt;
    &lt;pre&gt;&lt;code&gt;&amp;lt;body class=&amp;quot;&lt;strong&gt;ie ie6&lt;/strong&gt; loaded&amp;quot;&amp;gt;&lt;/code&gt;&lt;/pre&gt;
    &lt;p&gt;IE7：&lt;/p&gt;
    &lt;pre&gt;&lt;code&gt;&amp;lt;body class=&amp;quot;&lt;strong&gt;ie ie7&lt;/strong&gt; loaded&amp;quot;&amp;gt;&lt;/code&gt;&lt;/pre&gt;
    &lt;p&gt;IE8：&lt;/p&gt;
    &lt;pre&gt;&lt;code&gt;&amp;lt;body class=&amp;quot;&lt;strong&gt;ie ie8&lt;/strong&gt; loaded&amp;quot;&amp;gt;&lt;/code&gt;&lt;/pre&gt;
    &lt;p&gt;GECKO内核（firefox/flock等）：&lt;/p&gt;
    &lt;pre&gt;&lt;code&gt;&amp;lt;body class=&amp;quot;&lt;strong&gt;gecko&lt;/strong&gt; loaded&amp;quot;&amp;gt;&lt;/code&gt;&lt;/pre&gt;
    &lt;p&gt;WEBKIT内核（safari/chrome等）：&lt;/p&gt;
    &lt;pre&gt;&lt;code&gt;&amp;lt;body class=&amp;quot;&lt;strong&gt;webkit&lt;/strong&gt; loaded&amp;quot;&amp;gt;&lt;/code&gt;&lt;/pre&gt;
    &lt;p&gt;以上值通过JS判断当前浏览器后给body的class赋值。&lt;/p&gt;
    &lt;p&gt;当然，并不是每种浏览器都利用到了相应的class，部分是预留的，CSS中只用到了以下部分：&lt;/p&gt;
    &lt;pre&gt;&lt;code&gt;.gecko .goog-inline-block{display:-moz-inline-box;}
.gecko .goog-inline-block{display:inline-block;}
.ie6 .goog-inline-block{display:inline;}
.ie7 .goog-inline-block{display:inline;}&lt;/code&gt;&lt;/pre&gt;
    &lt;p&gt;这段代码是为了实现跨浏览器的display:inline-block，其中只用到了gecko/ie6/ie7这三个class&lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;布局切换&lt;/strong&gt;
    &lt;p&gt;当界面隐藏侧边栏时（以firefox为例）：&lt;/p&gt;
    &lt;pre&gt;&lt;code&gt;&amp;lt;body class=&amp;quot;gecko loaded &lt;strong&gt;lhn-hidden&lt;/strong&gt;&amp;quot;&amp;gt;&lt;/code&gt;&lt;/pre&gt;
    &lt;p&gt;body增加了lhn-hidden的class：&lt;/p&gt;
    &lt;pre&gt;&lt;code&gt;.lhn-hidden #chrome-lhn-toggle-icon{border-color:#ebeff9 #ebeff9 #ebeff9 #68e;border-width:5px 0 5px 5px;}
.lhn-hidden #chrome-lhn-toggle:hover #chrome-lhn-toggle-icon{border-left-color:#fff;}
.lhn-hidden #nav{display:none;}
.lhn-hidden #chrome{margin-left:0;}
.lhn-hidden #chrome-title{display:inline;}
.lhn-hidden #entries .entry-body{max-width:100%!important;}&lt;/code&gt;&lt;/pre&gt;
    &lt;p&gt;通过给body添加/删除class=&amp;quot;lhn-hidden&amp;quot;来实现侧边栏的显示隐藏，实现了结构、表现、行为的高度分离！&lt;/p&gt;
    &lt;p&gt;用jquery的话则变得更加简单，JS只需以下几句：&lt;/p&gt;
    &lt;pre&gt;&lt;code&gt;$(&amp;#39;#chrome-lhn-toggle&amp;#39;).click(function(){
    $(&amp;#39;body&amp;#39;).toggleClass(&amp;#39;lhn-hidden&amp;#39;);
})&lt;/code&gt;&lt;/pre&gt;
    &lt;p&gt;这样书写及维护起来非常方便。&lt;/p&gt;
&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;换肤&lt;/strong&gt;
    &lt;p&gt;众所周知的GR彩蛋:上上下下左右左右BA，就是通过给 body 增加 class 实现的&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;body class=&amp;quot;&lt;strong&gt;konami&lt;/strong&gt;&amp;quot;&amp;gt;&lt;/code&gt;&lt;/pre&gt;
    &lt;p&gt;konami 的 css 如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;.konami #sub-tree{background:#006f89 url(/reader/ui/1466947354-ninja-sidebar.gif) repeat-y left 0;}
.konami .lhn-section{background-color:#006f89;}
.konami .scroll-tree li{background:transparent;}
.konami .entry .entry-actions .star, .konami .entry .entry-actions .like, .konami .entry .entry-actions .read-state, .konami .entry .entry-actions .broadcast, .konami .entry .entry-actions .broadcast-with-note, .konami .entry .entry-actions .email, .konami .entry .entry-actions .item-link, .konami .entry .entry-actions .tag, .konami .entry .entry-icons .star, .konami .entry-likers-n .number-of-likers{background-image:url(/reader/ui/3207170781-konami-action-icons.png);}
.konami-like-image{position:absolute;}
&lt;/code&gt;&lt;/pre&gt;
    &lt;/li&gt;
&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-4577382128487751521?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/4577382128487751521/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=4577382128487751521&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/4577382128487751521'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/4577382128487751521'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/04/bodyclassgoogle-reader.html' title='body标签class属性的妙用(Google Reader前端简单分析)'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-1131027752209913302</id><published>2009-04-03T11:03:00.011+08:00</published><updated>2009-10-24T13:27:33.844+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='浏览器bug'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>Firefox 3 Bug：Iframe页面被带入Quirks Mode</title><content type='html'>&lt;p&gt;&lt;strong&gt;前言：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在B/S系统中经常用到iframe，iframe中的数据用表格填充。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;BUG:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;标准模式时：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;quot;
&amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;进入iframe页面时th及td的字体不继承body的样式（偶尔出现）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;分析：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;用firebug查看某一单元格（先在选项中选中显示浏览器默认样式），如下图：&lt;/p&gt;
&lt;img style="width: 340px; height: 270px;" src="https://docs.google.com/File?id=ddrrtxb_999fsnwhdfz_b"&gt;
&lt;p&gt;其中style.css是我写的CSS，quirk.css为firefox在Quirks Mode时的默认样式，位于安装目录下的res文件夹中（各标签默认样式的html.css也在其中）。&lt;/p&gt;
&lt;p&gt;可见firefox进入了Quirks Mode。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解决方法：&lt;/strong&gt;&lt;/p&gt;
&lt;del&gt;设置字体时，th/td和body写在一起：&lt;/del&gt;
&lt;pre&gt;&lt;code&gt;&lt;del&gt;body, th, td{font-size:12px;font-family:Tahoma, Verdana, Arial, Helvetica, sans-serif;}&lt;/del&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;&lt;del&gt;另外：&lt;/del&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;del&gt;因该bug偶然出现，未测试以下是方法否可以解决，有兴趣的童鞋可以试下并留言：&lt;/del&gt;
&lt;pre&gt;&lt;code&gt;&lt;del&gt;th, td{font-size:inherit;font-family:inherit;}&lt;/del&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;2009-4-14更新：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;今天再次遇到这个问题，reset中已经设置了&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;th{font-size:inherit;font-family:inherit;}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;其实是继承了quirks.css中的table的字体&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;最终的解决方法：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;body, table{font-size:12px;font-family:Tahoma, Verdana, Arial, Helvetica, sans-serif;}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;另外：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这里仅仅是字体的设置，Firefox中Quirks Mode的其他影响还需仔细研读下quirks.css&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-1131027752209913302?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/1131027752209913302/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=1131027752209913302&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/1131027752209913302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/1131027752209913302'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/04/firefox-3-bugiframequirks-mode.html' title='Firefox 3 Bug：Iframe页面被带入Quirks Mode'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-9153942297893547725</id><published>2009-04-02T20:15:00.009+08:00</published><updated>2009-06-03T14:21:18.763+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='互联网'/><title type='text'>警惕：请谨慎选择免费E-mail提供商！</title><content type='html'>&lt;p&gt;如今，几乎每个网络服务都跟电子邮箱关联，比较重要的有网上银行、支付宝等，等有一天你因为种种原因很久没上网，而且忘记了密码，你的免费邮箱又没了...&lt;/p&gt;
&lt;p&gt;以下为本人亲身经历：&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;2000年左右用的etang免费邮箱，后来etang转型，&lt;strong&gt;邮箱没了&lt;/strong&gt;，之后再没去过etang；&lt;/li&gt;
    &lt;li&gt;2002年左右用的sohu免费邮箱，后来有段时间没登陆了，再进去提示要激活，激活后邮件没了，之后再没去过sohu；&lt;/li&gt;
    &lt;li&gt;2003年开始用的比较多是网易163的免费邮箱，由于其附件下载速度比较快特意申请了几个分别用来备份比较重要的资料，常用的有一两个，比较正常，用来存资料的很久没登陆现在再也登陆不了了，估计&lt;strong&gt;账号被删&lt;/strong&gt;了，到处找客服邮箱，始终找不到，以前咨询过的客服邮箱（回复过邮件）也失效了，整个帮助中心剩下个机器人！&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;免费服务也没什么好抱怨的，大家引以为戒吧。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-9153942297893547725?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/9153942297893547725/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=9153942297893547725&amp;isPopup=true' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/9153942297893547725'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/9153942297893547725'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/04/e-mail.html' title='警惕：请谨慎选择免费E-mail提供商！'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-3826507261376216262</id><published>2009-03-28T11:37:00.010+08:00</published><updated>2009-07-31T14:06:44.721+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><title type='text'>简单实现Firefox的Chrome主题</title><content type='html'>&lt;p&gt;&lt;strong&gt;有图有真相：&lt;/strong&gt;&lt;/p&gt;
&lt;img style="width: 500px; height: 360px;" src="https://docs.google.com/File?id=ddrrtxb_1001ckf26pc2_b"&gt;
&lt;p&gt;&lt;strong&gt;安装以下扩展：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href="https://addons.mozilla.org/zh-CN/firefox/addon/8782"&gt;Chromifox 
    Basic&lt;/a&gt;，仿Chrome主题；&lt;/li&gt;
    &lt;li&gt;&lt;a href="https://addons.mozilla.org/zh-CN/firefox/addon/10091"&gt;Chromin Frame&lt;/a&gt;，将移动标签条到工具栏上方，并替换窗口标题栏和边框的外观为Chrome式样，国人出品；&lt;/li&gt;
    &lt;li&gt;&lt;a href="https://addons.mozilla.org/zh-CN/firefox/addon/3895/"&gt;Personal 
    Menu&lt;/a&gt;，实现Chrome的菜单栏；&lt;/li&gt;
    &lt;li&gt;&lt;a href="https://addons.mozilla.org/zh-CN/firefox/addon/4014"&gt;Locationbar²&lt;/a&gt;，突出地址栏域名；&lt;/li&gt;
    &lt;li&gt;&lt;a href="https://addons.mozilla.org/zh-CN/firefox/addon/1530/"&gt;autoHideStatusbar&lt;/a&gt;，自动隐藏状态栏（由于时不时要瞄一下TwitterFox未安装）。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;全部安装完重启后简单配置下Personal Menu及定制下工具栏即可。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-3826507261376216262?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/3826507261376216262/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=3826507261376216262&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/3826507261376216262'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/3826507261376216262'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/03/firefoxchrome.html' title='简单实现Firefox的Chrome主题'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-6350175175531604038</id><published>2009-03-27T13:37:00.011+08:00</published><updated>2009-10-24T13:27:33.844+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='浏览器bug'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>IE6 BUG：边框不能设为透明</title><content type='html'>&lt;p&gt;&lt;strong&gt;前言：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;有时候我们需要用纯CSS来写小三角，如下图：&lt;/p&gt;
&lt;img style="width: 215px; height: 28px;" src="https://docs.google.com/File?id=ddrrtxb_1003d8f4wwc4_b"&gt;
&lt;p&gt;&lt;strong&gt;代码：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;HTML：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;body&amp;gt;
&amp;lt;div class=&amp;quot;pointer&amp;quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/body&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;CSS：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;body{background-color:yellow;}
.pointer{width:0;height:0;border-top:100px transparent solid;border-right:200px red solid;font-size:0;}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;为了方便看效果，特意放大&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;问题：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;正常显示效果：&lt;/p&gt;
&lt;img style="width: 213px; height: 116px;" src="https://docs.google.com/File?id=ddrrtxb_1004tqv4kq8h_b"&gt;
&lt;p&gt;IE6下却遭遇BUG（不透明）：&lt;/p&gt;
&lt;img style="width: 215px; height: 119px;" src="https://docs.google.com/File?id=ddrrtxb_100599fsrdfg_b"&gt;
&lt;p&gt;&lt;strong&gt;解决方法：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;将实线改为虚线，代码：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;body{background-color:yellow;}
.pointer{width:0;height:0;border-top:100px transparent &lt;strong&gt;dotted;/*dashed亦可*/&lt;/strong&gt;border-right:200px red solid;font-size:0;}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;IE6下显示效果：&lt;/p&gt;
&lt;img style="width: 208px; height: 116px;" src="https://docs.google.com/File?id=ddrrtxb_1006zxh25qft_b"&gt;
&lt;p&gt;虽然边缘有轻微锯齿，但可以接受&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;意外收获：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Firefox、Chrome边缘比较平滑&lt;/p&gt;
&lt;img style="width: 213px; height: 116px;" src="https://docs.google.com/File?id=ddrrtxb_1004tqv4kq8h_b"&gt;
&lt;p&gt;而IE 6/7/8、Opera、Safari边缘有轻微锯齿&lt;/p&gt;
&lt;img style="width: 208px; height: 116px;" src="https://docs.google.com/File?id=ddrrtxb_1006zxh25qft_b"&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-6350175175531604038?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/6350175175531604038/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=6350175175531604038&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/6350175175531604038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/6350175175531604038'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/03/ie6-bug.html' title='IE6 BUG：边框不能设为透明'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-2261423568245059770</id><published>2009-03-26T00:23:00.004+08:00</published><updated>2009-08-01T02:17:26.183+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='stylish'/><title type='text'>Stylish：JavaEye - 加大正文字体</title><content type='html'>&lt;p&gt;&lt;strong&gt;前言：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.javaeye.com/"&gt;JavaEye&lt;/a&gt;是个不错的技术网站，虽然我之前学的是.NET，但Java阵营的东东也会时常关注下。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;说明：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;屏幕越大，越不习惯阅读12px的正文字体，将几个常用栏目的正文字体改为了14px。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;安装地址：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://userstyles.org/styles/16385"&gt;http://userstyles.org/styles/16385&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-2261423568245059770?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/2261423568245059770/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=2261423568245059770&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/2261423568245059770'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/2261423568245059770'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/03/stylishjavaeye.html' title='Stylish：JavaEye - 加大正文字体'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-7870425200910733740</id><published>2009-03-24T22:27:00.007+08:00</published><updated>2009-06-03T14:26:29.876+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='互联网'/><title type='text'>视觉规范</title><content type='html'>&lt;p&gt;明天讨论&lt;strong&gt;视觉规范&lt;/strong&gt;，搜集了几篇不错的文章：&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href="http://uicom.net/blog/?p=606"&gt;什么时候开始整理界面规范&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://blog.rexsong.com/?p=2365"&gt;互联网设计敏捷迭代&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://webteam.tencent.com/?p=159"&gt;初尝规范甜－ISD规范浅谈&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://webteam.tencent.com/?p=828"&gt;“模板化” —— 限制还是激发&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.ued163.com/?p=206"&gt;制定规范化专题模板对提升网站视觉一致性的意义&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://cdc.tencent.com/?p=954"&gt;浅析“Rich”设计模式&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://lifesinger.org/blog/?p=1416"&gt;UED技术层次初探&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.topcss.cn/?p=102"&gt;页面制作如何精确还原设计稿&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;冰山一角：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;看到做好的页面，UI设计师：“必须严格按照我的效果图来做！这里不是这个样子呀！”&lt;/p&gt;
&lt;p&gt;打开效果图，“诶，我记得不是这样的啊...不好意思啊，是我搞错了，呵呵O(∩_∩)O~，这里改成这样...”&lt;/p&gt;
&lt;p&gt;我内心深处：“OOXX...”&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-7870425200910733740?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/7870425200910733740/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=7870425200910733740&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/7870425200910733740'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/7870425200910733740'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/03/blog-post_24.html' title='视觉规范'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-4574023099716188336</id><published>2009-03-22T18:04:00.004+08:00</published><updated>2009-06-03T14:26:52.291+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='随笔'/><title type='text'>一周年</title><content type='html'>&lt;p&gt;来公司整整一年：&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;感谢lvh的信任及各位小u的疼爱；&lt;/li&gt;
    &lt;li&gt;感谢gengcl、kuol等老乡的照顾；&lt;/li&gt;
    &lt;li&gt;感谢tiexg、lifl、rongxr等各位研发同事的配合；&lt;/li&gt;
    &lt;li&gt;感谢xiaoy、zhangqs等足球队友将10号球衣让给小弟；&lt;/li&gt;
    &lt;li&gt;感谢暗中为我争风吃醋的各位plmm...&lt;/li&gt;
&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-4574023099716188336?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/4574023099716188336/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=4574023099716188336&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/4574023099716188336'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/4574023099716188336'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/03/blog-post_22.html' title='一周年'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-626999560073476422</id><published>2009-03-18T17:38:00.016+08:00</published><updated>2009-08-27T16:14:07.735+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='性能'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>Yahoo与Gmail的CSS Sprites对比</title><content type='html'>&lt;p&gt;&lt;strong&gt;前言：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;使用CSS Sprite的目的是为了优化（(#‵′)凸）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yahoo，以左侧导航为例：&lt;/strong&gt;&lt;/p&gt;
&lt;img style="width: 154px; height: 400px;" src="https://docs.google.com/File?id=ddrrtxb_1008c8dsdxfh_b" /&gt;
&lt;p&gt;&lt;strong&gt;CSS Sprites图片地址：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://l.yimg.com/a/i/ww/sp/trough_2.0_062308.gif"&gt;http://l.yimg.com/a/i/ww/sp/trough_2.0_062308.gif&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;HTML：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;ul id="trough-1" class="col1"&amp;gt;
&amp;lt;li&amp;gt;&amp;lt;a href="r/4d" style="background-position:-400px -120px"&amp;gt;Answers&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;&amp;lt;a href="r/2h" style="background-position:-400px -440px"&amp;gt;Autos&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;&amp;lt;a href="r/25" style="background-position:0 -761px"&amp;gt;Finance&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;&amp;lt;a href="r/28" style="background-position:0 -1600px"&amp;gt;Games&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;&amp;lt;a href="r/2r" style="background-position:0 -1400px"&amp;gt;Groups&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;&amp;lt;a href="r/3o" style="background-position:0 -439px"&amp;gt;HotJobs&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;&amp;lt;a href="r/24" style="background-position:0 -600px"&amp;gt;Maps&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;&amp;lt;a href="r/3a" style="background-position:0 -161px"&amp;gt;Mobile Web&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;&amp;lt;a href="r/2i" style="background-position:0 -561px;display:inline"&amp;gt;Movies&amp;lt;/a&amp;gt; | &amp;lt;a class="trough_tv" href="r/2j"&amp;gt;TV&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;&amp;lt;a href="r/3m" style="background-position:0 -1562px"&amp;gt;Music&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;&amp;lt;a href="r/gx" style="background-position:-400px -1119px"&amp;gt;OMG&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;&amp;lt;a href="r/33" style="background-position:0 -40px"&amp;gt;Personals&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;&amp;lt;a href="r/2p" style="background-position:-400px -161px"&amp;gt;Real Estate&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;&amp;lt;a href="r/s3" style="background-position:-400px -1321px"&amp;gt;Shine&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;&amp;lt;a href="r/2q" style="background-position:0 -1640px"&amp;gt;Shopping&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;&amp;lt;a href="r/26" style="background-position:0 -800px"&amp;gt;Sports&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;&amp;lt;a href="r/29" style="background-position:0 -79px"&amp;gt;Travel&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;&amp;lt;a href="r/2k" style="background-position:0 -121px"&amp;gt;Yellow Pages&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;图片分析（图中虚线为20*20的参考线）：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;原始大小：&lt;/strong&gt;&lt;/p&gt;
&lt;img style="width: 454px; height: 211px;" src="https://docs.google.com/File?id=ddrrtxb_1009cmvtqgg7_b" /&gt;
&lt;p&gt;&lt;strong&gt;放大至200%：&lt;/strong&gt;&lt;/p&gt;
&lt;img style="width: 81px; height: 307px;" src="https://docs.google.com/File?id=ddrrtxb_1010g553f2dc_b"&gt;
&lt;p&gt;&lt;strong&gt;特点：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;HTML结构清晰，背景写在a标签上； &lt;/li&gt;&lt;li&gt;切图方式：每个图标放置于20*20的单元格中，未从单元格左上角开始放置，而是上下左右都留有部分像素的距离（依据显示效果而定）。大部分情况下直接调用即可，如background-position:-400px –120px；偶尔需要调整偏移量，如background-position:0 -161px &lt;/li&gt;&lt;li&gt;第二列图标距离左侧400px，每行图标间隔一个单元格的距离，充分留白； &lt;/li&gt;&lt;li&gt;图片为gif格式，尺寸：420*1700，大小：16.2KB，总共80个图标。 &lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Gmail，同样以左侧导航为例：&lt;/strong&gt;&lt;/p&gt;
&lt;img style="width: 145px; height: 199px;" src="https://docs.google.com/File?id=ddrrtxb_1011fnj5ccgn_b"&gt;
&lt;p&gt;&lt;strong&gt;CSS Sprites图片地址：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://mail.google.com/mail/images/2/5/chrome/icons7.png" title="https://mail.google.com/mail/images/2/5/chrome/icons7.png"&gt;https://mail.google.com/mail/images/2/5/chrome/icons7.png&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;HTML（以星标为例）：&lt;/strong&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;div class="nH pX"&amp;gt;
&amp;lt;div class="nH"&amp;gt;
 &amp;lt;div class="nH"&amp;gt;
     &amp;lt;div class="pi" style="height:4px;"&amp;gt;
         &amp;lt;div class="ph p" style="width:4px;"&amp;gt;&amp;lt;/div&amp;gt;
         &amp;lt;div class="ph q" style="width:4px;"&amp;gt;&amp;lt;/div&amp;gt;
         &amp;lt;div class="l o"&amp;gt;&amp;lt;/div&amp;gt;
     &amp;lt;/div&amp;gt;
     &amp;lt;div class="l m"&amp;gt;
         &amp;lt;div class="l n" style="margin-left:4px;"&amp;gt;
             &amp;lt;div class="k" style="margin:-2px 4px -2px 0px;padding:0px;"&amp;gt;
                 &amp;lt;div class="diLZtc"&amp;gt;
                     &amp;lt;div class="nH"&amp;gt;
                         &amp;lt;div class="qk"&amp;gt;
                             &amp;lt;span id=":qj" class="" idlink=""&amp;gt;
                             &amp;lt;div style="overflow:hidden;white-space:nowrap;"&amp;gt;
                                 &amp;lt;div id=":r0" class="p5" idlink=""&amp;gt;
                                     &amp;lt;a class="p9" href="https://mail.google.com/mail/#starred" target="_top" title="已加星标"&amp;gt;已加星标&amp;lt;/a&amp;gt;&amp;lt;img class="pW" src="images/cleardot.gif" /&amp;gt;&amp;lt;/div&amp;gt;
                             &amp;lt;/div&amp;gt;
                             &amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;
                     &amp;lt;/div&amp;gt;
                 &amp;lt;/div&amp;gt;
             &amp;lt;/div&amp;gt;
         &amp;lt;/div&amp;gt;
     &amp;lt;/div&amp;gt;
     &amp;lt;div class="dJ"&amp;gt;&amp;lt;/div&amp;gt;
     &amp;lt;div class="pi" style="height:4px;"&amp;gt;
         &amp;lt;div class="ph i" style="width:4px;"&amp;gt;&amp;lt;/div&amp;gt;
         &amp;lt;div class="ph j" style="width:4px;"&amp;gt;&amp;lt;/div&amp;gt;
         &amp;lt;div class="l h"&amp;gt;&amp;lt;/div&amp;gt;
     &amp;lt;/div&amp;gt;
 &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;图片放大至200%：&lt;/strong&gt;&lt;/p&gt;
&lt;img style="width: 382px; height: 260px;" src="https://docs.google.com/File?id=ddrrtxb_1012s746kjgf_b"&gt;
&lt;p&gt;&lt;strong&gt;特点：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;HTML结构极度混乱（咳咳，至少我是这么认为），甚至还有内联元素span嵌套div的情形。背景写在img上（Gmail将所有放图标的地方插入一个1*1的透明图片：&amp;lt;img
class="pW" src="images/cleardot.gif" /&amp;gt;，然后根据不同的class设置拉伸至不同的大小及背景坐标，并用margin修正偏移量），这么做的原因也许是跨浏览器的inline-block（Firefox 3以前的版本不支持display:inline-block）
&lt;p&gt;&lt;img style="width: 280px; height: 107px;" src="https://docs.google.com/File?id=ddrrtxb_1013dsb959d4_b"&gt;&lt;/p&gt;
&lt;/li&gt;&lt;li&gt;切图方式：每个小图放置于20*20的单元格中，大部分左上角顶齐，调用时直接用该图标左上角的坐标取值即可，如background-position:-20px –20px&lt;/li&gt;&lt;li&gt;每个单元格放一个图标，比较紧凑。 &lt;/li&gt;&lt;li&gt;图片为png格式，尺寸：180*120，大小：4.83KB，总共47个图标。 &lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;对比（带有强烈主观色彩，请自行判断）：&lt;/strong&gt;&lt;/p&gt;
&lt;table cellpadding="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th&gt;
&lt;/th&gt;&lt;th&gt;Yahoo&lt;/th&gt;&lt;th&gt;Gmail&lt;/th&gt;&lt;th&gt;胜方&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;HTML&lt;/th&gt;&lt;td&gt;结构清晰，易于维护&lt;/td&gt;&lt;td&gt;臃肿杂乱&lt;/td&gt;&lt;td&gt;Yahoo&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;图片排列&lt;/th&gt;&lt;td&gt;宽松&lt;/td&gt;&lt;td&gt;紧凑，易于维护（尤其是我们这种小屏幕人士）&lt;/td&gt;&lt;td&gt;Gmail&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;CSS调用&lt;/th&gt;&lt;td&gt;方便，部分图片需微调background-position&lt;/td&gt;&lt;td&gt;方便，部分图片需微调margin&lt;/td&gt;&lt;td&gt;平手&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;图片优化&lt;/th&gt;&lt;td&gt;可改为png-8格式进一步压缩（YUI的PPT中提倡用png-8，为什么自己不这么做呢）&lt;/td&gt;&lt;td&gt;已压缩&lt;/td&gt;&lt;td&gt;Gmail&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;最后的话：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;二者各有优缺点，大家可取其精华，弃其糟粕，根据项目特点任意发挥，囧&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-626999560073476422?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/626999560073476422/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=626999560073476422&amp;isPopup=true' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/626999560073476422'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/626999560073476422'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/03/yahoogmailcss-sprites.html' title='Yahoo与Gmail的CSS Sprites对比'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-5710180424294441883</id><published>2009-03-17T17:19:00.011+08:00</published><updated>2009-10-24T13:27:33.844+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jquery'/><category scheme='http://www.blogger.com/atom/ns#' term='浏览器bug'/><title type='text'>IE 6/7 BUG：下拉框select设宽度时option超出显示不全</title><content type='html'>&lt;p&gt;&lt;strong&gt;问题如下图：&lt;/strong&gt;&lt;/p&gt;
&lt;img style="width: 570px; height: 387px;" src="https://docs.google.com/File?id=ddrrtxb_101585nx27hj_b"&gt;
&lt;p&gt;&lt;strong&gt;解决思路：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;当鼠标移到select元素时将其宽度置为auto；&lt;/li&gt;&lt;li&gt;鼠标移开时恢复为原定宽度。&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;代码（基于jQuery）：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$(function() {
 $(".ProductAttributesSelect")
     .mouseover(function(){
         $(this)
             .data("origWidth", $(this).css("width"))
             .css("width", "auto");
     })
     .mouseout(function(){
         $(this).css("width", $(this).data("origWidth"));
     });
});&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;英文雅虎的注册页面有DEMO，童鞋们可以去围观下，O(∩_∩)O~&lt;/p&gt;
&lt;p&gt;简译自：&lt;a href="http://css-tricks.com/select-cuts-off-options-in-ie-fix/"&gt;Select Cuts Off Options In IE (Fix)&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-5710180424294441883?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/5710180424294441883/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=5710180424294441883&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/5710180424294441883'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/5710180424294441883'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/03/ie-67-bugselectoption.html' title='IE 6/7 BUG：下拉框select设宽度时option超出显示不全'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-6626267786669901530</id><published>2009-03-12T09:22:00.004+08:00</published><updated>2009-06-03T14:31:31.912+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='互联网'/><title type='text'>主流国产RSS阅读器初步比较</title><content type='html'>&lt;p&gt;&lt;strong&gt;背景：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;传闻近来国产RSS阅读器的日子都不太好过：&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href="http://ucdchina.com/snap/2457"&gt;国内在线RSS阅读器的困境&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://jandan.net/2009/03/10/about-rss-reader.html"&gt;RSS 阅读器，价值几何&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.yunkeji.com/?p=240"&gt;抓虾三个月前就弃守了，现在扛旗的是豆瓣和鲜果&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://wangyueblog.com/2009/03/07/zhuaxia-down/"&gt;抓虾倒闭后的阅读器市场&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://tech.sina.com.cn/i/2009-03-10/15562896950.shtml"&gt;抓虾网否认关闭传闻：酝酿转型企业级市场服务&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;事件：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;小弟最近开了博，之后打算在各大国产RSS阅读器将自己的博客添加进去，然后进行无耻的“自顶”行为进行推广... 然而结果却是：&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;首先我尝试的是&lt;p&gt;&lt;strong&gt;鲜果&lt;/strong&gt;&lt;/p&gt;
    ：因为近来鲜果的表现相对好一些。将博客地址http://ytzong.blogspot.com及RSS源的地址http://ytzong.blogspot.com/feeds/posts/default填进去均提示“您订阅的频道不存在”；&lt;/li&gt;
    &lt;li&gt;抓虾：输入博客地址很顺利就找到两个源：http://ytzong.blogspot.com/feeds/posts/default?alt=rss及http://ytzong.blogspot.com/feeds/posts/default，成功订阅；&lt;/li&gt;
    &lt;li&gt;有道：前今天看了&lt;a href="https://docs.google.com/EmbedSlideshow?docid=afm3f8898hwz_163fjp9gq4&amp;amp;size=m"&gt;有道的技术分享&lt;/a&gt;，用网易通行证账号即可登陆。添加博客地址后未成功，之后RSS源及博客地址反复尝试几次之后成功；&lt;/li&gt;
    &lt;li&gt;豆瓣九点：提示未抓取，等待几分钟后成功。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;结论：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;仅添加订阅而言：抓虾&amp;gt;有道≈豆瓣&amp;gt;鲜果。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-6626267786669901530?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/6626267786669901530/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=6626267786669901530&amp;isPopup=true' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/6626267786669901530'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/6626267786669901530'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/03/rss.html' title='主流国产RSS阅读器初步比较'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-9007164746370777426</id><published>2009-03-10T17:55:00.008+08:00</published><updated>2009-07-31T14:29:23.656+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>CSS修饰上传域&lt;input type="file" /&gt;</title><content type='html'>&lt;p&gt;在WebMail项目中，我们需要使用图片修饰的按钮来替代系统默认的上传域。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;原理：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;将上传上传域透明，绝对定位叠在修饰的图片按钮上方，点击图片按钮时其实是点到上传域。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;问题：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;图片按钮太大时，上传域的可点击区域不能将其完全覆盖。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解决方法：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;加大字体。&lt;/p&gt;
&lt;p&gt;HTML：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;input class=&amp;quot;file&amp;quot; type=&amp;quot;file&amp;quot; /&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;CSS：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;input.file{font-size:5em;}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;各浏览器显示效果： &lt;/p&gt;
&lt;img style="width: 500px; height: 450px;" src="https://docs.google.com/File?id=ddrrtxb_1017d537dmcv_b"&gt;
&lt;p&gt;嘿嘿，这下够用了吧~&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;延伸阅读：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href="http://www.quirksmode.org/dom/inputfile.html"&gt;Styling an input 
    type=&amp;quot;file&amp;quot;&lt;/a&gt; &lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.456bereastreet.com/lab/form_controls/file/"&gt;Styled file 
    select controls&lt;/a&gt; &lt;/li&gt;
    &lt;li&gt;
    &lt;a href="http://www.shauninman.com/archive/2007/09/10/styling_file_inputs_with_css_and_the_dom"&gt;
    Styling File Inputs with CSS and the DOM&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-9007164746370777426?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/9007164746370777426/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=9007164746370777426&amp;isPopup=true' title='2 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/9007164746370777426'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/9007164746370777426'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/03/class-type.html' title='CSS修饰上传域&amp;lt;input type=&amp;quot;file&amp;quot; /&amp;gt;'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-2567068178502361747</id><published>2009-03-05T14:51:00.023+08:00</published><updated>2009-07-31T14:32:04.563+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='stylish'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>去除Gmail右侧广告/隐藏聊天/隐藏邀请</title><content type='html'>&lt;p&gt;&lt;strong&gt;预览：&lt;/strong&gt;&lt;/p&gt;
&lt;img style="width: 500px; height: 301px;" src="https://docs.google.com/File?id=ddrrtxb_1019d63hwdd3_b"&gt;
&lt;p&gt;&lt;strong&gt;安装地址：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://userstyles.org/styles/15631"&gt;http://userstyles.org/styles/15631&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;最新源码：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/*加大正文字体及行高*/
.ii.gt,.ii.gt *{font-size:14px !important;line-height:1.5 !important}
/*隐藏读信广告*/
table.T1HY1.nH.iY{width:100% !important;}
table.T1HY1.nH.iY td.tELAdc:first-child + td.tELAdc, table.T1HY1.nH.iY td.tELAdc:last-child .VB6tt + div &gt; div:first-child &gt; div:first-child + div,table.T1HY1.nH.iY td.tELAdc:last-child .VB6tt + div &gt; div:first-child &gt; div:last-child{display:none !important}
/*设置快捷操作位置*/
table.T1HY1.nH.iY td.tELAdc:last-child{position:absolute !important;top:-37px !important;right:0 !important;}
table.T1HY1.nH.iY td.tELAdc:last-child .nH{width:auto !important}
table.T1HY1.nH.iY td.tELAdc:last-child .hk{float:right !important;margin-left:1em !important;}
/*隐藏聊天*/
.nH.pz.pA.pX + div + div + div{display: none !important;}
/*隐藏邀请*/
.nH.pz.pA.pX + div + div + div + div{display: none !important;}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;源码分析：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Gmail的HTML写的非常之“变态”且没有语义，导致我的选择器也跟着一起“变态”，⊙﹏⊙b汗~~&lt;/p&gt;
&lt;p&gt;我们首先来看下Gmail左侧导航的HTML结构（&lt;strong&gt;为了方便，将注释写在了title属性中&lt;/strong&gt;）：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;div class="nH nn" style="width:155px;"&amp;gt;
&amp;lt;div class="nH"&amp;gt;
    &amp;lt;div class="nH pz pA pX" title="撰写邮件" /&amp;gt;
    &amp;lt;div class="nH pp" title="收件箱等" /&amp;gt;
    &amp;lt;div class="nH pp ps" style="-moz-user-select:none;" title="标签" /&amp;gt;
    &amp;lt;div class="nH pp ps" style="" title="聊天" /&amp;gt;
    &amp;lt;div class="nH pp ps" title="邀请" /&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;隐藏聊天：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;.nH.pz.pA.pX + div + div + div{display: none !important;}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;以撰写邮件为基准点，向下查找同级第三个div，将其隐藏。&lt;/p&gt;
&lt;p&gt;这里的要点是&lt;strong&gt;相邻同胞选择器&lt;/strong&gt;“+”&lt;/p&gt;
&lt;p&gt;隐藏邀请同理。&lt;/p&gt;
&lt;p&gt;读信页面的HTML结构如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;table cellpadding="0" class="T1HY1 nH iY"&amp;gt;
&amp;lt;tr&amp;gt;
 &amp;lt;td class="tELAdc" title="邮件正文"&amp;gt;&amp;lt;/td&amp;gt;
 &amp;lt;td class="tELAdc" title="间距空白"&amp;gt;&amp;lt;/td&amp;gt;
 &amp;lt;td class="tELAdc" title="广告单元格"&amp;gt;
     &amp;lt;div style="width: 0px;"
class="VB6tt" /&amp;gt;
        &amp;lt;div style="width:
189px;" class="nH"&amp;gt;            
&amp;lt;div class="nH"&amp;gt;                
&amp;lt;div class="nH" title="快捷操作" /&amp;gt;                
&amp;lt;div class="nH" title="广告" /&amp;gt;                
&amp;lt;div class="nH u8" title="关于这些链接" /&amp;gt;            
&amp;lt;/div&amp;gt;
     &amp;lt;/div&amp;gt;
 &amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;/table&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;去广告：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;table.T1HY1.nH.iY td.tELAdc:last-child .VB6tt + div &gt; div:first-child &gt; div:first-child + div{display:none !important}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;先找到该表格的最后一个单元格下的class="VB6tt"的元素，在找同级元素下的第一个div下的第一个div相邻的div（好绕口啊，+_+），将其隐藏。&lt;/p&gt;
&lt;p&gt;其余同理....&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2009-3-8更新：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;加大正文字体至14px，加大正文行高至1.5&lt;/li&gt;&lt;li&gt;隐藏聊天
&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;2009-3-7更新：&lt;/strong&gt;&lt;/p&gt;
修复邮件新窗口中打开时正文显示不出来的BUG
&lt;p&gt;&lt;strong&gt;2009-3-6更新：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;去除读信页右侧广告&lt;/li&gt;&lt;li&gt;将读信页右侧快捷操作位置放到邮件与搜索栏之间靠右的位置&lt;/li&gt;&lt;li&gt;隐藏左侧邀请&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-2567068178502361747?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/2567068178502361747/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=2567068178502361747&amp;isPopup=true' title='3 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/2567068178502361747'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/2567068178502361747'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/03/stylishgmail.html' title='去除Gmail右侧广告/隐藏聊天/隐藏邀请'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-3060709418401376910</id><published>2009-03-03T16:30:00.013+08:00</published><updated>2009-08-01T02:18:15.169+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='greasemonkey'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>139邮箱集成Google Reader</title><content type='html'>&lt;img style="width: 500px; height: 304px;" src="https://docs.google.com/File?id=ddrrtxb_1021hqzhwfcc_b"&gt;
&lt;p&gt;下载地址：&lt;a href="http://userscripts.org/scripts/show/43488/"&gt;http://userscripts.org/scripts/show/43488/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;友情提示：您需要使用&lt;a href="http://www.mozilla.org.cn/"&gt;Firefox&lt;/a&gt;，并安装&lt;a href="https://addons.mozilla.org/zh-CN/firefox/addon/748"&gt;Greasemonkey&lt;/a&gt;扩展（需重启），之后进入&lt;a href="http://userscripts.org/scripts/show/43488/"&gt;http://userscripts.org/scripts/show/43488/&lt;/a&gt;，点 
Install 就开始安装了。&lt;/p&gt;
&lt;p&gt;配合这个使用更佳：&lt;a href="http://ytzong.blogspot.com/2009/02/stylishgoogle-reader.html"&gt;Stylish脚本：Google 
Reader&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-3060709418401376910?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/3060709418401376910/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=3060709418401376910&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/3060709418401376910'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/3060709418401376910'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/03/greasemonkey139google-reader.html' title='139邮箱集成Google Reader'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-5002988535312519503</id><published>2009-02-28T22:41:00.021+08:00</published><updated>2009-10-24T13:27:33.845+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='浏览器bug'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>IE 6/7 Bug: 在fieldset中隐藏legend所引发的bug</title><content type='html'>&lt;p&gt;HTML：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;fieldset&amp;gt;
&amp;lt;legend&amp;gt;登陆&amp;lt;/legend&amp;gt;
&amp;lt;ul&amp;gt;
&amp;lt;li&amp;gt;&amp;lt;label&amp;gt;账号：&amp;lt;/label&amp;gt;&amp;lt;input type="text" /&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;li&amp;gt;&amp;lt;label&amp;gt;密码：&amp;lt;/label&amp;gt;&amp;lt;input type="password" /&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;
&amp;lt;/fieldset&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;CSS：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;body{font-family:Arial, Helvetica, sans-serif;font-size:14px;}
fieldset, ul{margin:0;padding:0;}
li{margin:1em;list-style-type:none;}
fieldset{width:300px;border:5px solid red;}
legend{display:none;}/*隐藏legend*/
ul{border:5px solid black;}
input{width:200px;padding:2px;}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;正常效果：&lt;/p&gt;
&lt;img style="width: 320px; height: 120px;" src="https://docs.google.com/File?id=ddrrtxb_1023n54fhtcb_b"&gt;
&lt;p&gt;IE 6/7显示效果：&lt;/p&gt;
&lt;img style="width: 319px; height: 120px;" src="https://docs.google.com/File?id=ddrrtxb_1024fmjr8kgs_b"&gt;
&lt;p&gt;&lt;strong&gt;解决方法：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;删除legend&lt;/li&gt;&lt;li&gt;在fieldset外套一个div，并将样式写在此div上&lt;/li&gt;&lt;/ol&gt;基于语义等因素推荐使用第二种方法。
&lt;p&gt;&lt;strong&gt;2009-4-2补充：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;fieldset与legend的bug不止这一个，最好就是在fieldset外部或内部加个div，legend中加个span，为以后的界面改动预留退路！&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-5002988535312519503?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/5002988535312519503/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=5002988535312519503&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/5002988535312519503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/5002988535312519503'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/02/ie-67-bug-fieldsetlegendbug.html' title='IE 6/7 Bug: 在fieldset中隐藏legend所引发的bug'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-9172602859437140619</id><published>2009-02-28T16:22:00.008+08:00</published><updated>2009-07-31T14:37:06.652+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='stylish'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>精简Google Reader</title><content type='html'>&lt;p&gt;早先为Google Reader写了个Stylish脚本，主要更改了以下地方：&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;将左侧导航宽度由260px减小至200px&lt;/li&gt;
    &lt;li&gt;隐藏了Logo，搜索框，头部两侧的链接&lt;/li&gt;
    &lt;li&gt;将右侧常用按钮与标题栏合二为一&lt;/li&gt;
    &lt;li&gt;减少杂色：改变展开模式中未选中项目的边框颜色，改变左侧订阅标题鼠标滑过的背景色&lt;/li&gt;
    &lt;li&gt;去除展开模式正文处标题和内容的最大宽度限制&lt;/li&gt;
    &lt;li&gt;将展开模式正文的字体增大至14px，行高改为1.5倍行距&lt;/li&gt;
    &lt;li&gt;图片显示不了在Firefox中不会有IE中的叉叉标记，于是给图片加了个灰色边框&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;效果预览：&lt;/strong&gt;&lt;/p&gt;
&lt;img style="width: 500px; height: 307px;" src="https://docs.google.com/File?id=ddrrtxb_1026fqhk5bd4_b"&gt;
&lt;p&gt;&lt;strong&gt;下载地址：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://userstyles.org/styles/14058"&gt;http://userstyles.org/styles/14058&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;友情提示：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;您需要使用&lt;a href="http://www.mozilla.org.cn/"&gt;Firefox&lt;/a&gt;，并安装&lt;a href="https://addons.mozilla.org/zh-CN/firefox/addon/2108"&gt;Stylish&lt;/a&gt;扩展（需重启），之后进入&lt;a href="http://userstyles.org/styles/14058"&gt;http://userstyles.org/styles/14058&lt;/a&gt;，点 
Load into Stylish 按钮就开始安装了。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-9172602859437140619?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/9172602859437140619/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=9172602859437140619&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/9172602859437140619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/9172602859437140619'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/02/stylishgoogle-reader.html' title='精简Google Reader'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3178662459722973496.post-5144680357315662884</id><published>2009-02-25T10:36:00.010+08:00</published><updated>2009-07-31T14:42:22.959+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='无线生活'/><title type='text'>彻底屏蔽垃圾短信！</title><content type='html'>&lt;p&gt;垃圾短信令人抓狂，昨天一天总共收到80多条！&lt;/p&gt;
&lt;p&gt;想起了偶的智能机N-GAGE QD，搜了一下，找到一个还不错的软件，&lt;a href="http://www.msafe.com.cn/"&gt;信安易卫士&lt;/a&gt;，试了一下，比以前的超级短信好用些。超级短信有个自动删除功能，黑名单的短信收到后会自动删除，不过收到信息时还是会有提示音，而信安易则不会，而且可以批量从通话记录和收件箱导入，我觉得最好用的一点就是可以&lt;strong&gt;屏蔽任意非通讯录内的陌生短信&lt;/strong&gt;，非常方便。&lt;/p&gt;
&lt;p&gt;放几张图，不是我机子抓的，网上找的，不过功能都差不多：&lt;/p&gt;
&lt;img style="width: 240px; height: 320px;" src="https://docs.google.com/File?id=ddrrtxb_1028fgqsvc8h_b"&gt;
&lt;img style="width: 240px; height: 320px;" src="https://docs.google.com/File?id=ddrrtxb_1029dgdwgdf2_b"&gt;
&lt;img style="width: 240px; height: 320px;" src="https://docs.google.com/File?id=ddrrtxb_10323fxrtwhm_b"&gt;
&lt;img style="width: 240px; height: 320px;" src="https://docs.google.com/File?id=ddrrtxb_1031f7gfqzhj_b"&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3178662459722973496-5144680357315662884?l=ytzong.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ytzong.blogspot.com/feeds/5144680357315662884/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3178662459722973496&amp;postID=5144680357315662884&amp;isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/5144680357315662884'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3178662459722973496/posts/default/5144680357315662884'/><link rel='alternate' type='text/html' href='http://ytzong.blogspot.com/2009/02/blog-post.html' title='彻底屏蔽垃圾短信！'/><author><name>ytzong</name><uri>http://www.blogger.com/profile/14820587350577479477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
