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

<channel>
	<title>裁纸刀下</title>
	<atom:link href="http://ofcss.com/feed" rel="self" type="application/rss+xml" />
	<link>http://ofcss.com</link>
	<description>独立 自由 诚信 宽容 责任 平常心</description>
	<lastBuildDate>Fri, 20 Apr 2012 04:08:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>禁用Firefox自带的元素查看工具</title>
		<link>http://ofcss.com/2012/03/30/disable-firefox-built-in-inspector.html</link>
		<comments>http://ofcss.com/2012/03/30/disable-firefox-built-in-inspector.html#comments</comments>
		<pubDate>Thu, 29 Mar 2012 17:45:03 +0000</pubDate>
		<dc:creator>小李刀刀</dc:creator>
				<category><![CDATA[乱七八糟]]></category>
		<category><![CDATA[tool]]></category>
		<category><![CDATA[技巧]]></category>
		<category><![CDATA[浏览器]]></category>
		<category><![CDATA[火狐]]></category>

		<guid isPermaLink="false">http://ofcss.com/?p=1226</guid>
		<description><![CDATA[对于web前端工程师来说，用Firefox+Firebug进行CSS和JavaScript的调试已经是非常熟悉和习惯了。如今，新版本的Firefox中又内嵌了一个元素查看工具（图1），类似Firebug，但是初步体验下来，功能远不如Firebug（图2），使用起来也远不如Firebug方便。但是右键菜单中的两个“查看元素”选项（图3），常常一不小心就按错了。这个新增的内置元素查看工具，不但没有给我带来便利，反而造成了许多不便。幸好，我们可以轻松地禁用它。 禁用新版Firefox自带的元素查看器的方法很简单（图4）： 在地址栏输入 about:config，回车 提示“这样可能会失去质保”，点击“我保证会小心” 进入Firefox配置界面后，可以在搜索框中输入 inspector ，过滤无关的项目 双击“devtools.inspector.enabled”，使其值变为“false”。 图1：firebox内置的元素查看器，可以查看HTML、CSS 图2：功能更强大、更易用的Firebug界面 图3：右键菜单里多出一个查看元素，经常会点错 图4：通过about:config高级配置，可以轻松禁用Firefox自带的元素查看器 相关日志2011-03-07 -- IE8/9兼容性设置2011-03-20 -- 容易被误解的overflow:hidden2011-03-12 -- 自适应的多列图文混排改进2011-03-10 -- CSS边框实现&#8220;无图化&#8221;设计【译】2010-10-31 -- CSS技巧:如何避免IE6中的&#34;浮动下坠&#34;【译】2010-10-30 -- webkit中BFC元素临近浮动元素时的边距bug2010-10-10 -- 卸载360安全卫士造成网络异常问题解决方案2009-06-20 -- 工行U盾在Windows 7 x64版下的使用2009-06-17 -- Dreamweaver中的正则表达式2009-05-23 -- windows 7 x64 上的Google Chrome]]></description>
			<content:encoded><![CDATA[<p>对于web前端工程师来说，用Firefox+Firebug进行CSS和JavaScript的调试已经是非常熟悉和习惯了。如今，新版本的Firefox中又内嵌了一个元素查看工具（图1），类似Firebug，但是初步体验下来，功能远不如Firebug（图2），使用起来也远不如Firebug方便。但是右键菜单中的两个“查看元素”选项（图3），常常一不小心就按错了。这个新增的内置元素查看工具，不但没有给我带来便利，反而造成了许多不便。幸好，我们可以轻松地禁用它。</p>
<p><span id="more-1226"></span></p>
<p>禁用新版Firefox自带的元素查看器的方法很简单（图4）：</p>
<ol>
<li>在地址栏输入 <span style="color: #3366ff;"><strong>about:config</strong></span>，回车</li>
<li>提示“这样可能会失去质保”，点击“我保证会小心”</li>
<li>进入Firefox配置界面后，可以在搜索框中输入 <strong><span style="color: #3366ff;">inspector</span></strong> ，过滤无关的项目</li>
<li>双击“devtools.inspector.enabled”，使其值变为“false”。</li>
</ol>
<p><img class="alignnone" title="新版Firefox内置元素查看工具" src="http://file.wukangrui.com/blog/ff-inspector.png" alt="Firefox built-in inspector" width="600" height="539" /><span style="color: #999999;"><br />
图1：firebox内置的元素查看器，可以查看HTML、CSS</span></p>
<p><img class="alignnone" title="Firebug插件的元素查看界面" src="http://file.wukangrui.com/blog/ff-firebug.png" alt="Firebug inspector" width="600" height="537" /><br />
<span style="color: #999999;">图2：功能更强大、更易用的Firebug界面</span></p>
<p><img class="alignnone" title="邮件菜单的两个选项带来了不变" src="http://file.wukangrui.com/blog/ff-menu.png" alt="Firefox context menu" width="591" height="390" /><br />
<span style="color: #999999;">图3：右键菜单里多出一个查看元素，经常会点错</span></p>
<p><img class="alignnone" title="在about:config高级配置中可以禁用自带元素查看器" src="http://file.wukangrui.com/blog/ff-config.png" alt="disable built-in inspector of firefox" width="500" height="186" /><br />
<span style="color: #999999;">图4：通过about:config高级配置，可以轻松禁用Firefox自带的元素查看器</span></p>
<h3  class="related_post_title">相关日志</h3><ul class="related_post"><li>2011-03-07 -- <a href="http://ofcss.com/2011/03/07/ie8-compatibility-settings.html" title="IE8/9兼容性设置">IE8/9兼容性设置</a></li><li>2011-03-20 -- <a href="http://ofcss.com/2011/03/20/misunderstood-of-overflow-hidden.html" title="容易被误解的overflow:hidden">容易被误解的overflow:hidden</a></li><li>2011-03-12 -- <a href="http://ofcss.com/2011/03/12/flexible-two-column-layout-reloaded.html" title="自适应的多列图文混排改进">自适应的多列图文混排改进</a></li><li>2011-03-10 -- <a href="http://ofcss.com/2011/03/10/css-border-tricks-with-collapsed-boxes-translation.html" title="CSS边框实现&ldquo;无图化&rdquo;设计【译】">CSS边框实现&ldquo;无图化&rdquo;设计【译】</a></li><li>2010-10-31 -- <a href="http://ofcss.com/2010/10/31/prevent-a-float-drop-in-ie6-translation.html" title="CSS技巧:如何避免IE6中的&quot;浮动下坠&quot;【译】">CSS技巧:如何避免IE6中的&quot;浮动下坠&quot;【译】</a></li><li>2010-10-30 -- <a href="http://ofcss.com/2010/10/30/bfc-element-margin-bug-in-webkit.html" title="webkit中BFC元素临近浮动元素时的边距bug">webkit中BFC元素临近浮动元素时的边距bug</a></li><li>2010-10-10 -- <a href="http://ofcss.com/2010/10/10/360-network-monitor-driver-issue.html" title="卸载360安全卫士造成网络异常问题解决方案">卸载360安全卫士造成网络异常问题解决方案</a></li><li>2009-06-20 -- <a href="http://ofcss.com/2009/06/20/icbc-u-key-in-windows-7-x64.html" title="工行U盾在Windows 7 x64版下的使用">工行U盾在Windows 7 x64版下的使用</a></li><li>2009-06-17 -- <a href="http://ofcss.com/2009/06/17/regular-expression-in-dreamweaver.html" title="Dreamweaver中的正则表达式">Dreamweaver中的正则表达式</a></li><li>2009-05-23 -- <a href="http://ofcss.com/2009/05/23/google-chrome-in-windows7-x64.html" title="windows 7 x64 上的Google Chrome">windows 7 x64 上的Google Chrome</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://ofcss.com/2012/03/30/disable-firefox-built-in-inspector.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CssGaga 快速上手指南</title>
		<link>http://ofcss.com/2012/03/22/cssgaga-quick-start.html</link>
		<comments>http://ofcss.com/2012/03/22/cssgaga-quick-start.html#comments</comments>
		<pubDate>Thu, 22 Mar 2012 05:08:23 +0000</pubDate>
		<dc:creator>小李刀刀</dc:creator>
				<category><![CDATA[所谓技术]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[CssGaga]]></category>
		<category><![CDATA[工具]]></category>
		<category><![CDATA[重构]]></category>

		<guid isPermaLink="false">http://ofcss.com/?p=1217</guid>
		<description><![CDATA[CssGaga是ytzong（涛哥）基于我们在朋友网日常的重构工作流程，为了提高工作效率而开发并不断完善起来的一个重构辅助工具。运行于Windows + .NET的环境，提供了重构相关的一系列解决方案。最近越来越多的朋友通过腾讯微博、QQ和Email咨询到有关CssGaga的问题，由于CssGaga本身也是在不断升级，以前的教程有些已经陈旧，为了帮助新接触到这个工具的同学，我这里再写一篇日志介绍一下CssGaga的基本使用。 CssGaga功能特性 合并import的CSS文件，开发阶段将CSS文件按模块拆分复用，发布上线后合并减少HTTP请求； 优化、压缩CSS代码，减少带宽占用，加快下载速度； 优化、发布CSS中使用到的图片，可以不必考虑多发、漏发图片文件的情况； 自动应用CSS Sprite技术，开发阶段不用考虑图标合并，便于管理，发布后的多个图标自动合并为一个图片，并自动更新CSS代码处理背景定位； 对CSS代码中使用到的图片自动加时间戳，以便在使用长Cache与更新后的图片及时生效； 样式有多套配色风格时，通过CssGaga可以实现皮肤的自动化同步； CSS样式、图片一键去色功能，在遇到特殊政治任务的时候，全站能迅速进行去色改版，迅速恢复； 生成iOS设备所需的不同尺寸Icon文件； 处理一些浏览器兼容方面的问题； CssGaga下载和配置 运行CssGaga需要Windows操作系统、.Net Framework运行环境。 下载并安装Microsoft .NET Framework 4.0 下载并解压CssGaga最新版（绿色软件，不用安装） 对CssGaga进行初始化配置 第一次运行CssGaga前，需要对其进行必要的配置。主要是指定CssGaga的编译目标路径、站点的基本URL。具体步骤： 打开CssGaga所在目录，复制CssGaga.exe.config.sample文件，重命名为CssGaga.exe.config。 用任意文本编辑器打开CssGaga.exe.config，默认的代码如下： &#60;?xml version=&#34;1.0&#34;?&#62; &#60;configuration&#62; &#60;appSettings&#62; &#60;add key=&#34;pathSource&#34; value=&#34;E:\&#34; /&#62; &#60;add key=&#34;webSiteUrl&#34; value=&#34;http://qzonestyle.gtimg.cn&#34; /&#62; &#60;add key=&#34;pathReport&#34; value=&#34;/usr/local/imgcache/htdocs&#34; /&#62; &#60;add key=&#34;pathDest1Name&#34; value=&#34;目标环境1&#34; /&#62; &#60;add key=&#34;pathDest1&#34; value=&#34;E:\output&#34; /&#62; &#60;add key=&#34;pathReport1&#34; value=&#34;/usr/local/imgcache/htdocs&#34; /&#62; &#60;add [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.99css.com/archives/tag/cssgaga" target="_blank">CssGaga</a>是<a href="http://www.99css.com/" target="_blank">ytzong（涛哥）</a>基于我们在<a href="http://www.pengyou.com/" target="_blank">朋友网</a>日常的重构工作流程，为了提高工作效率而开发并不断完善起来的一个重构辅助工具。运行于Windows + .NET的环境，提供了重构相关的一系列解决方案。最近越来越多的朋友通过<a href="http://t.qq.com/" target="_blank">腾讯微博</a>、QQ和Email咨询到有关CssGaga的问题，由于CssGaga本身也是在不断升级，以前的教程有些已经陈旧，为了帮助新接触到这个工具的同学，我这里再写一篇日志介绍一下CssGaga的基本使用。</p>
<h3>CssGaga功能特性</h3>
<ol>
<li>合并import的CSS文件，开发阶段将CSS文件按模块拆分复用，发布上线后合并减少HTTP请求； </li>
<li>优化、压缩CSS代码，减少带宽占用，加快下载速度； </li>
<li>优化、发布CSS中使用到的图片，可以不必考虑多发、漏发图片文件的情况； </li>
<li>自动应用CSS Sprite技术，开发阶段不用考虑图标合并，便于管理，发布后的多个图标自动合并为一个图片，并自动更新CSS代码处理背景定位； </li>
<li>对CSS代码中使用到的图片自动加时间戳，以便在使用长Cache与更新后的图片及时生效； </li>
<li>样式有多套配色风格时，通过CssGaga可以实现皮肤的自动化同步； </li>
<li>CSS样式、图片一键去色功能，在遇到特殊政治任务的时候，全站能迅速进行去色改版，迅速恢复； </li>
<li>生成iOS设备所需的不同尺寸Icon文件； </li>
<li>处理一些浏览器兼容方面的问题； </li>
</ol>
<p><span id="more-1217"></span><a href="http://file.wukangrui.com/attachments/2012/03/image.png"><img title="image" border="0" alt="image" src="http://file.wukangrui.com/attachments/2012/03/image_thumb.png" /></a><br />
<h3>CssGaga下载和配置</h3>
<p>运行CssGaga需要Windows操作系统、.Net Framework运行环境。</p>
<ol>
<li>下载并安装<a title="Microsoft .NET Framework 4.0" href="http://download.microsoft.com/download/9/5/A/95A9616B-7A37-4AF6-BC36-D6EA96C8DAAE/dotNetFx40_Full_x86_x64.exe">Microsoft .NET Framework 4.0</a> </li>
<li>下载并解压<a href="http://cssgaga.googlecode.com/svn/trunk/upload/CssGaga.zip" target="_blank">CssGaga最新版</a>（绿色软件，不用安装） </li>
<li>对CssGaga进行初始化配置 </li>
</ol>
<p>第一次运行CssGaga前，需要对其进行必要的配置。主要是指定CssGaga的编译目标路径、站点的基本URL。具体步骤：</p>
<p>打开CssGaga所在目录，复制CssGaga.exe.config.sample文件，重命名为CssGaga.exe.config。</p>
<p>用任意文本编辑器打开CssGaga.exe.config，默认的代码如下： </p>
<pre style="background: #383838" class="code"><span style="color: #efef8f">&lt;?xml </span><span style="color: #dfdfbf">version</span><span style="color: #efef8f">=</span><span style="color: #cc9393">&quot;1.0&quot;</span><span style="color: #efef8f">?&gt;
&lt;configuration&gt;
  &lt;appSettings&gt;
    &lt;add </span><span style="color: #dfdfbf">key</span><span style="color: #efef8f">=</span><span style="color: #cc9393">&quot;pathSource&quot; </span><span style="color: #dfdfbf">value</span><span style="color: #efef8f">=</span><span style="color: #cc9393">&quot;E:\&quot; </span><span style="color: #efef8f">/&gt;
    &lt;add </span><span style="color: #dfdfbf">key</span><span style="color: #efef8f">=</span><span style="color: #cc9393">&quot;webSiteUrl&quot; </span><span style="color: #dfdfbf">value</span><span style="color: #efef8f">=</span><span style="color: #cc9393">&quot;http://qzonestyle.gtimg.cn&quot; </span><span style="color: #efef8f">/&gt;
    &lt;add </span><span style="color: #dfdfbf">key</span><span style="color: #efef8f">=</span><span style="color: #cc9393">&quot;pathReport&quot; </span><span style="color: #dfdfbf">value</span><span style="color: #efef8f">=</span><span style="color: #cc9393">&quot;/usr/local/imgcache/htdocs&quot; </span><span style="color: #efef8f">/&gt;
    &lt;add </span><span style="color: #dfdfbf">key</span><span style="color: #efef8f">=</span><span style="color: #cc9393">&quot;pathDest1Name&quot; </span><span style="color: #dfdfbf">value</span><span style="color: #efef8f">=</span><span style="color: #cc9393">&quot;目标环境1&quot; </span><span style="color: #efef8f">/&gt;
    &lt;add </span><span style="color: #dfdfbf">key</span><span style="color: #efef8f">=</span><span style="color: #cc9393">&quot;pathDest1&quot; </span><span style="color: #dfdfbf">value</span><span style="color: #efef8f">=</span><span style="color: #cc9393">&quot;E:\output&quot; </span><span style="color: #efef8f">/&gt;
    &lt;add </span><span style="color: #dfdfbf">key</span><span style="color: #efef8f">=</span><span style="color: #cc9393">&quot;pathReport1&quot; </span><span style="color: #dfdfbf">value</span><span style="color: #efef8f">=</span><span style="color: #cc9393">&quot;/usr/local/imgcache/htdocs&quot; </span><span style="color: #efef8f">/&gt;
    &lt;add </span><span style="color: #dfdfbf">key</span><span style="color: #efef8f">=</span><span style="color: #cc9393">&quot;chkTemp&quot; </span><span style="color: #dfdfbf">value</span><span style="color: #efef8f">=</span><span style="color: #cc9393">&quot;1&quot; </span><span style="color: #efef8f">/&gt;
  &lt;/appSettings&gt;
&lt;/configuration&gt;
</span></pre>
<p>其中pathDest1Name、pathDest1、pathReport1三个节点为一组，代表一个编译目标，CssGaga支持多组编译目标，要增加新的编译目标，只要复制粘贴这三个节点，修改“1”为“2”及更大的数字，相同数字为一组。例如，我设定本机的一个目录为编译目标： </p>
<pre style="background: #383838" class="code"><span style="color: #efef8f">&lt;add </span><span style="color: #dfdfbf">key</span><span style="color: #efef8f">=</span><span style="color: #cc9393">&quot;pathDest1Name&quot; </span><span style="color: #dfdfbf">value</span><span style="color: #efef8f">=</span><span style="color: #cc9393">&quot;本机输出&quot; </span><span style="color: #efef8f">/&gt;
&lt;add </span><span style="color: #dfdfbf">key</span><span style="color: #efef8f">=</span><span style="color: #cc9393">&quot;pathDest1&quot; </span><span style="color: #dfdfbf">value</span><span style="color: #efef8f">=</span><span style="color: #cc9393">&quot;D:\ofcss\style&quot; </span><span style="color: #efef8f">/&gt;
&lt;add </span><span style="color: #dfdfbf">key</span><span style="color: #efef8f">=</span><span style="color: #cc9393">&quot;pathReport1&quot; </span><span style="color: #dfdfbf">value</span><span style="color: #efef8f">=</span><span style="color: #cc9393">&quot;/style&quot; </span><span style="color: #efef8f">/&gt;
</span></pre>
<p>pathDest1Name代表这个目标在CssGaga界面上显示的名称，pathDest1代表这个目标的真实物理路径，pathReport1代表这个路径编译机上的地址（不使用SMB共享进行文件部署的话，这个节点设置不设置就无所谓了，可以考虑设置为你站点上该目录的相对路径）。</p>
<p>上面的设定表示当我在CssGaga上勾选“本机输出”时，编译后的CSS文件和图片文件会生成到D:\ofcss\style目录下。</p>
<h3>CssGaga开发约定</h3>
<p>根据互联网上一些优秀团队的经验以及我们自己在工作中的经验，CssGaga建议使用者在进行重构时遵循以下约定：</p>
<h4>1. 目录结构</h4>
<ul>
<li>把所有的CSS文件放在同一个目录下。网页中用link标签引用的CSS文件，我们称之为CSS桥文件（CSS Bridge），真正的样式规则代码按照模块拆分存放在不同的CSS文件中，这些CSS文件以“.import.css”结尾，代表它们不能直接被页面引用，而要在桥文件中通过@import指令导入。 </li>
<li>把所有的图片文件放在CSS文件所在目录下的子目录（例如img）中。 </li>
<li>把所有需要进行CSS Sprite合并的图标文件放在CSS文件所在目录下的slice子目录中。 </li>
<li>把所有自定义鼠标样式（.ani、.cur）放在CSS文件所在目录下的absolute子目录中。例如： </li>
</ul>
<p><a href="http://file.wukangrui.com/attachments/2012/03/image1.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://file.wukangrui.com/attachments/2012/03/image_thumb1.png" width="613" height="447" /></a></p>
<h4>2.代码编写</h4>
<ul>
<li>在CSS Bridge文件中，用@import指令，把页面用到的模块css组合到一起 </li>
<li>在编写需要做CSS Sprite合并的背景图片样式时，不要缩写，必须把background-image样式单独写，并且不写background-position属性（因为这些图标在开发阶段并没有合并，也就不需要定位，合并之后的background-position会由CssGaga自动生成），如果有PNG Alpha透明的图片，需要针对IE6单独做一张PNG 索引色透明图片时，可以用_background-image做Hack，CssGaga在合并时，会单独为IE6合并一张图片。 </li>
<li>@import指令不要嵌套使用（A import B，则B不要再import其它文件），原则上不要import其它目录的文件（CssGaga不会做合并处理）。 </li>
</ul>
<h4>3. 编译发布</h4>
<p>在重构完成后，运行CssGaga，选择开发目录（注意与生成目标路径对应，比如开发路径是E:\ofcss\dev，目标路径是E:\ofcss\output，那么E:\ofcss\dev\<font color="#ff0000">style\index.css</font>就会编译到E:\ofcss\output\<font color="#ff0000">style\index.css</font>），勾选需要使用的功能，选择编译目标。然后把需要发布的CSS文件拖入CssGaga的主窗口，就会自动处理并编译到目标路径（相关的图片文件自动复制），如图：</p>
<p><a href="http://file.wukangrui.com/attachments/2012/03/image2.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://file.wukangrui.com/attachments/2012/03/image_thumb2.png" width="592" height="444" /></a></p>
<p>有关CssGaga更多功能介绍和使用技巧，参见：<a href="http://www.99css.com/archives/542" title="CssGaga帮助索引" target="_blank">CssGaga帮助索引</a></p>
<h3  class="related_post_title">相关日志</h3><ul class="related_post"><li>2011-05-26 -- <a href="http://ofcss.com/2011/05/26/css-cascade-specificity.html" title="深入解析CSS样式层叠权重值">深入解析CSS样式层叠权重值</a></li><li>2011-03-20 -- <a href="http://ofcss.com/2011/03/20/misunderstood-of-overflow-hidden.html" title="容易被误解的overflow:hidden">容易被误解的overflow:hidden</a></li><li>2011-03-14 -- <a href="http://ofcss.com/2011/03/14/browser-rendering-optimizer-translation-extra.html" title="对《优化浏览器渲染》的补充【译】">对《优化浏览器渲染》的补充【译】</a></li><li>2011-03-12 -- <a href="http://ofcss.com/2011/03/12/flexible-two-column-layout-reloaded.html" title="自适应的多列图文混排改进">自适应的多列图文混排改进</a></li><li>2011-03-10 -- <a href="http://ofcss.com/2011/03/10/css-border-tricks-with-collapsed-boxes-translation.html" title="CSS边框实现&ldquo;无图化&rdquo;设计【译】">CSS边框实现&ldquo;无图化&rdquo;设计【译】</a></li><li>2011-03-04 -- <a href="http://ofcss.com/2011/03/04/the-hacktastic-zoom-fix-translation.html" title="在非IE浏览器中模拟zoom创建块级上下文【译】">在非IE浏览器中模拟zoom创建块级上下文【译】</a></li><li>2010-10-31 -- <a href="http://ofcss.com/2010/10/31/prevent-a-float-drop-in-ie6-translation.html" title="CSS技巧:如何避免IE6中的&quot;浮动下坠&quot;【译】">CSS技巧:如何避免IE6中的&quot;浮动下坠&quot;【译】</a></li><li>2010-10-30 -- <a href="http://ofcss.com/2010/10/30/bfc-element-margin-bug-in-webkit.html" title="webkit中BFC元素临近浮动元素时的边距bug">webkit中BFC元素临近浮动元素时的边距bug</a></li><li>2010-10-20 -- <a href="http://ofcss.com/2010/10/20/clearfix-reloaded-overflowhidden-demystified-translation.html" title="clearfix改良及overflow:hidden详解【译】">clearfix改良及overflow:hidden详解【译】</a></li><li>2010-06-09 -- <a href="http://ofcss.com/2010/06/09/my-rencent-booklist.html" title="最近的书单">最近的书单</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://ofcss.com/2012/03/22/cssgaga-quick-start.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>dateDiff在Objective-C中的实现</title>
		<link>http://ofcss.com/2012/03/13/implementation-for-datediff-in-objective-c.html</link>
		<comments>http://ofcss.com/2012/03/13/implementation-for-datediff-in-objective-c.html#comments</comments>
		<pubDate>Tue, 13 Mar 2012 06:23:34 +0000</pubDate>
		<dc:creator>小李刀刀</dc:creator>
				<category><![CDATA[所谓技术]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[objective-c]]></category>
		<category><![CDATA[xcode]]></category>

		<guid isPermaLink="false">http://ofcss.com/?p=1200</guid>
		<description><![CDATA[在学习iOS App开发中遇到需要计算时间差并格式化输出的需求，没有现成的方法，需要结合NSCalendar和NSDateComponents来实现。所以干脆把代码封装成一个熟悉的dateDiff方法。不过这个方法跟VB和sql里的dateDiff还是有点不一样，虽然可以封装成完全一样，不过我觉得直接返回NSDateComponents会更方便，因为所需要的各种单位上的值都包含在其中了。 我是把代码封装到自己的一个工具类KRUtils里作为类方法，使用起来也很方便。代码如下： &#160; /* dateDiff 方法实现 */ +(NSDateComponents *) dateDiff:(NSDate *) fromDate toDate:(NSDate *) toDate { NSCalendar *sysCalendar = [NSCalendar currentCalendar]; unsigned int unitFlags = NSYearCalendarUnit &#124; NSMonthCalendarUnit &#124; NSDayCalendarUnit &#124; NSHourCalendarUnit &#124; NSMinuteCalendarUnit &#124; NSSecondCalendarUnit; NSDateComponents *compInfo = [sysCalendar components:unitFlags fromDate:fromDate toDate:toDate options:0]; return compInfo; } &#160; /* dateDiff 调用示例 */ -(void) demo [...]]]></description>
			<content:encoded><![CDATA[<p>在学习iOS App开发中遇到需要计算时间差并格式化输出的需求，没有现成的方法，需要结合NSCalendar和NSDateComponents来实现。所以干脆把代码封装成一个熟悉的dateDiff方法。不过这个方法跟VB和sql里的dateDiff还是有点不一样，虽然可以封装成完全一样，不过我觉得直接返回NSDateComponents会更方便，因为所需要的各种单位上的值都包含在其中了。</p>
<p>我是把代码封装到自己的一个工具类KRUtils里作为类方法，使用起来也很方便。代码如下：</p>
<p><span id="more-1200"></span></p>
<p>&nbsp;</p>
<pre class="code"><span style="color: green;">/* dateDiff 方法实现 */ </span>+(NSDateComponents *) dateDiff:(NSDate *) fromDate toDate:(NSDate *) toDate
{
    NSCalendar *sysCalendar = [NSCalendar currentCalendar];
    <span style="color: blue;">unsigned int </span>unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit |
                              NSDayCalendarUnit | NSHourCalendarUnit |
                              NSMinuteCalendarUnit | NSSecondCalendarUnit;
    NSDateComponents *compInfo = [sysCalendar components:unitFlags
                                              fromDate:fromDate
                                              toDate:toDate
                                              options:0];
    <span style="color: blue;">return </span>compInfo;
}</pre>
<p>&nbsp;</p>
<pre class="code"><span style="color: green;">/* dateDiff 调用示例 */ </span>-(<span style="color: blue;">void</span>) demo
{
    NSDate *date1 = [[NSDate alloc] init];
    NSDate *date2 = [[NSDate alloc] initWithTimeIntervalSinceNow:86400];

    NSDateComponents *diffInfo =<span style="color: #000000; background-color: #dfce04;"><strong>[KRUtils dateDiff:date1 toDate:date2]</strong></span>;
    NSLog(@<span style="color: #a31515;">"相差 %d天%02d小时%02d分钟%02d秒"</span>, [diffInfo day],
                                              [diffInfo hour],
                                              [diffInfo minute],
                                              [diffInfo second]);
    <span style="color: green;">//输出结果：“相差 1天00小时00分钟00秒” </span>}</pre>
<h3  class="related_post_title">随机推荐</h3><ul class="related_post"><li>2006-04-19 -- <a href="http://ofcss.com/2006/04/19/microsoft-sql-server-2005-business-intelligence-experien.html" title="Microsoft SQL Server 2005商务智能初体验">Microsoft SQL Server 2005商务智能初体验</a></li><li>2006-03-26 -- <a href="http://ofcss.com/2006/03/26/xmlhttp-chinese-character-encoding.html" title="XMLHTTP与中文字符编码问题">XMLHTTP与中文字符编码问题</a></li><li>2005-12-15 -- <a href="http://ofcss.com/2005/12/15/application-Integration-use-webservice.html" title="利用WebService进行网站整合的实现">利用WebService进行网站整合的实现</a></li><li>2005-12-12 -- <a href="http://ofcss.com/2005/12/12/action-of-refactor-page-with-css.html" title="实践：用Div+CSS重构网页">实践：用Div+CSS重构网页</a></li><li>2009-04-05 -- <a href="http://ofcss.com/2009/04/05/use-google-ajaxlib-api.html" title="使用Google AjaxLib API托管的js库">使用Google AjaxLib API托管的js库</a></li><li>2006-01-09 -- <a href="http://ofcss.com/2006/01/09/zhangyimou-returned.html" title="三个男人的戏——张艺谋归来">三个男人的戏——张艺谋归来</a></li><li>2006-09-19 -- <a href="http://ofcss.com/2006/09/19/drinking-and-drinking.html" title="喝酒，喝酒……">喝酒，喝酒……</a></li><li>2006-04-14 -- <a href="http://ofcss.com/2006/04/14/intergration-test-steps.html" title="整合后测试是否成功的全部步骤">整合后测试是否成功的全部步骤</a></li><li>2010-10-30 -- <a href="http://ofcss.com/2010/10/30/bfc-element-margin-bug-in-webkit.html" title="webkit中BFC元素临近浮动元素时的边距bug">webkit中BFC元素临近浮动元素时的边距bug</a></li><li>2006-06-04 -- <a href="http://ofcss.com/2006/06/04/powereasy-sub-domain-issues.html" title="关于动易子域名问题">关于动易子域名问题</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://ofcss.com/2012/03/13/implementation-for-datediff-in-objective-c.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>腾讯ISUX招聘：前端工程师（深圳总部）</title>
		<link>http://ofcss.com/2011/06/28/1119.html</link>
		<comments>http://ofcss.com/2011/06/28/1119.html#comments</comments>
		<pubDate>Tue, 28 Jun 2011 02:29:09 +0000</pubDate>
		<dc:creator>小李刀刀</dc:creator>
				<category><![CDATA[乱七八糟]]></category>

		<guid isPermaLink="false">http://ofcss.com/?p=1119</guid>
		<description><![CDATA[有意向的朋友可以直接发送简历到 kairee#qq.com，招聘详情见正文。 待遇： 富有竞争力的薪酬 丰厚年终绩效奖金 茶水间二十四小时供应饮品、休闲娱乐设施 免费宵夜供应 上下班市内多条线路班车接送 每年制订的成长培养计划 一年多次境内外旅游 五险一金 可能会令您不习惯的团队聚餐、腐败 职责 负责腾讯互联网业务系统相关web产品(QQ空间、QQ秀、数字多媒体、QQ会员、拍拍网等)海量平台前端研发；通过技术提升用户体验和可用性；突破web多终端/设备为更多用户群体提供随时随地的线上生活体验；通过无障碍研究/SEO提升产品的口碑和品牌受众…更多的定位等待您来下笔 要求 深刻理解Web标准；精通图像处理及代码编辑工具；精通Web前端跨平台开发技术（XHTML/XML/CSS/Javascript等）；及时了解业界前瞻信息及应用，并有浓厚的兴趣和深入的见解；对HTML5/CSS3方面有实际的理解和实践经验； 对互联网产品性能优化有研究并有相关实践经验； 熟悉搜索引擎优化，有相关的实践经验； 熟悉业界常用Javascript脚本库(如jQuery、YUI、mootools等)； 有团队协作精神，较强的逻辑分析能力、沟通表达能力，善于学习； 勇于探索新领域了解多终端平台(手机，打印机，视障阅读器)研发，对可用性等有实际的理解和实践经验； 对非Web前端脚本的语言（如Java/PHP/CGI）等有所了解，并在实际工作中接触过； 两年以上互联网产品研发经验，海量平台研发经验优先； 有Web Apps开发经验优先； 具备项目驱动力，对此有独特见解并有成功案例优先； 专科或以上学历优先 关于我们： 腾讯互联网用户体验设计部（前身： ISD webteam） 人在腾讯&#62;&#62; 有意向的朋友可以直接发送简历到 kairee#qq.com 随机推荐2008-04-12 -- 新基金上市 多方要反攻了吗？2006-03-15 -- 超强客户VS刀刀2007-11-19 -- 如何在DreamHost主机上安装eAcceleartor支持[翻译]2007-08-18 -- 迎新：人少也愁多也愁2006-05-19 -- 免费领取微软Vista测试光盘2010-04-14 -- Visual Studio 2010 Ultimate RTM 版开放MSDN下载2006-05-07 -- “黄金周”回顾——户籍困境及异地恋情评论2006-08-24 [...]]]></description>
			<content:encoded><![CDATA[<p>有意向的朋友可以直接发送简历到 <strong>kairee<em>#</em>qq.com</strong>，招聘详情见正文。</p>
<p><span id="more-1119"></span></p>
<p><strong>待遇：</strong></p>
<ol>
<li>富有竞争力的薪酬</li>
<li>丰厚年终绩效奖金</li>
<li>茶水间二十四小时供应饮品、休闲娱乐设施</li>
<li>免费宵夜供应</li>
<li>上下班市内多条线路班车接送</li>
<li>每年制订的成长培养计划</li>
<li>一年多次境内外旅游</li>
<li>五险一金</li>
<li>可能会令您不习惯的团队聚餐、腐败</li>
</ol>
<dl>
<dt><strong>职责</strong></dt>
<dd>负责腾讯互联网业务系统相关web产品(QQ空间、QQ秀、数字多媒体、QQ会员、拍拍网等)海量平台前端研发；通过技术提升用户体验和可用性；突破web多终端/设备为更多用户群体提供随时随地的线上生活体验；通过无障碍研究/SEO提升产品的口碑和品牌受众…更多的定位等待您来下笔</p>
</dd>
<dt><strong>要求</strong></dt>
<dd>深刻理解Web标准；精通图像处理及代码编辑工具；精通Web前端跨平台开发技术（XHTML/XML/CSS/Javascript等）；及时了解业界前瞻信息及应用，并有浓厚的兴趣和深入的见解；对HTML5/CSS3方面有实际的理解和实践经验；</p>
<p>对互联网产品性能优化有研究并有相关实践经验；</p>
<p>熟悉搜索引擎优化，有相关的实践经验；</p>
<p>熟悉业界常用Javascript脚本库(如jQuery、YUI、mootools等)；</p>
<p>有团队协作精神，较强的逻辑分析能力、沟通表达能力，善于学习；</p>
<p>勇于探索新领域了解多终端平台(手机，打印机，视障阅读器)研发，对可用性等有实际的理解和实践经验；</p>
<p>对非Web前端脚本的语言（如Java/PHP/CGI）等有所了解，并在实际工作中接触过；</p>
<p>两年以上互联网产品研发经验，海量平台研发经验优先；</p>
<p>有Web Apps开发经验优先；</p>
<p>具备项目驱动力，对此有独特见解并有成功案例优先；</p>
<p>专科或以上学历优先</p>
</dd>
</dl>
<p><strong>关于我们：</strong></p>
<p><a href="http://isux.tencent.com/">腾讯互联网用户体验设计部</a>（前身： ISD webteam）</p>
<p><a href="http://hr.tencent.com/people.php">人在腾讯&gt;&gt;</a></p>
<p>有意向的朋友可以直接发送简历到 <strong>kairee<em>#</em>qq.com</strong></p>
<h3  class="related_post_title">随机推荐</h3><ul class="related_post"><li>2006-10-25 -- <a href="http://ofcss.com/2006/10/25/pdo-api-files-and-user-synchro-updated.html" title="动易接口文件及数据同步工具更新">动易接口文件及数据同步工具更新</a></li><li>2005-12-03 -- <a href="http://ofcss.com/2005/12/03/visual-studio-2005-trial.html" title="Visual Studio 2005体验感受">Visual Studio 2005体验感受</a></li><li>2009-04-13 -- <a href="http://ofcss.com/2009/04/13/aspnetmvc-hands-on-labs-develop-application.html" title="[翻译]ASP.NET MVC动手实验1-3：开发ASP.NET MVC应用">[翻译]ASP.NET MVC动手实验1-3：开发ASP.NET MVC应用</a></li><li>2006-05-14 -- <a href="http://ofcss.com/2006/05/14/my-story-fighting-stone-part-3.html" title="又是结石（三）:百炼成钢久病成医">又是结石（三）:百炼成钢久病成医</a></li><li>2011-03-20 -- <a href="http://ofcss.com/2011/03/20/misunderstood-of-overflow-hidden.html" title="容易被误解的overflow:hidden">容易被误解的overflow:hidden</a></li><li>2009-04-16 -- <a href="http://ofcss.com/2009/04/16/best-practices-of-css-dropdown-menu.html" title="来自微软站点的纯CSS下拉菜单">来自微软站点的纯CSS下拉菜单</a></li><li>2005-11-18 -- <a href="http://ofcss.com/2005/11/18/add-trackback-to-pjblog.html" title="用ASP为blog程序编写Trackback功能">用ASP为blog程序编写Trackback功能</a></li><li>2008-08-31 -- <a href="http://ofcss.com/2008/08/31/good-feeling-at-26.html" title="26岁的时候挺好的">26岁的时候挺好的</a></li><li>2007-06-15 -- <a href="http://ofcss.com/2007/06/15/old-email.html" title="以前的邮件">以前的邮件</a></li><li>2010-10-29 -- <a href="http://ofcss.com/2010/10/29/using-macro-prevent-mail-send-without-html-attachments.html" title="利用宏避免发送确认邮件时忘记添加附件">利用宏避免发送确认邮件时忘记添加附件</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://ofcss.com/2011/06/28/1119.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>深入解析CSS样式层叠权重值</title>
		<link>http://ofcss.com/2011/05/26/css-cascade-specificity.html</link>
		<comments>http://ofcss.com/2011/05/26/css-cascade-specificity.html#comments</comments>
		<pubDate>Wed, 25 May 2011 20:07:19 +0000</pubDate>
		<dc:creator>小李刀刀</dc:creator>
				<category><![CDATA[所谓技术]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[基础知识]]></category>
		<category><![CDATA[重构]]></category>

		<guid isPermaLink="false">http://ofcss.com/2011/05/26/css-cascade-specificity.html</guid>
		<description><![CDATA[读到《重新认识CSS的权重》这篇，鬼哥在文章最后给出了便于记忆的顺序：“important &#62; 内联 &#62; ID &#62; 类 &#62; 标签 &#124; 伪类 &#124; 属性选择 &#62; 伪对象 &#62; 继承 &#62; 通配符”。那么这个顺序是怎么得出来的呢？实际上在CSS2规范关于具体性(specificity)的定义中，描述是非常明确的，但是很多中文版本的css图书中采用了10进制的简单相加计算方式（包括第一版《CSS权威指南》，第二版中已经纠正）。因此把规范中对CSS层叠优先级的相关定义意译一下，希望给初入门或对权重计算尚有疑惑的朋友提供一些参考。 根据CSS规范，具体性越明确的样式规则，权重值越高。计算权重值的依据，并不是许多文章所描述的那样“class是10，标签是1，ID是100”之类——虽然这样在大多数情况下能够得到正确的结果。 选择器权重值的计算 A：如果规则是写在标签的style属性中（内联样式），则A=1，否则，A=0. 对于内联样式，由于没有选择器，所以B、C、D的值都为0，即A=1, B=0, C=0, D=0（简写为1,0,0,0，下同）。 B：计算该选择器中ID的数量。（例如，#header 这样的选择器，计算为0, 1, 0, 0）。 C：计算该选择器中伪类及其它属性的数量（包括class、属性选择器等，不包括伪元素）。 （例如， .logo[id='site-logo'] 这样的选择器，计算为0, 0, 2, 0）。 D：计算该选择器中伪元素及标签的数量。（例如，p:first-letter 这样的选择器，计算为0, 0, 0, 2）。 CSS2规范中给出的一些例子： *             {}  /* a=0 b=0 c=0 d=0 -&#62; specificity = 0,0,0,0 [...]]]></description>
			<content:encoded><![CDATA[<p>读到《<a href="http://www.cssforest.org/blog/index.php?id=185" target="_blank">重新认识CSS的权重</a>》这篇，鬼哥在文章最后给出了便于记忆的顺序：“<strong>important &gt; 内联 &gt; ID &gt; 类 &gt; 标签 | 伪类 | 属性选择 &gt; 伪对象 &gt; 继承 &gt; 通配符</strong>”。那么这个顺序是怎么得出来的呢？实际上在<a href="http://www.w3.org/TR/CSS2/" target="_blank">CSS2规范</a>关于<a href="http://www.w3.org/TR/CSS2/cascade.html#specificity" target="_blank">具体性(specificity)</a>的定义中，描述是非常明确的，但是很多中文版本的css图书中采用了10进制的简单相加计算方式（包括第一版《CSS权威指南》，第二版中已经纠正）。因此把规范中对CSS层叠优先级的相关定义意译一下，希望给初入门或对权重计算尚有疑惑的朋友提供一些参考。</p>
<p><span id="more-1115"></span></p>
<p>根据CSS规范，具体性越明确的样式规则，权重值越高。计算权重值的依据，并不是许多文章所描述的那样“class是10，标签是1，ID是100”之类——虽然这样在大多数情况下能够得到正确的结果。</p>
<h4>选择器权重值的计算</h4>
<p><strong>A：如果规则是写在标签的style属性中（内联样式），则A=1，否则，A=0.</strong> 对于内联样式，由于没有选择器，所以B、C、D的值都为0，即A=1, B=0, C=0, D=0（简写为1,0,0,0，下同）。</p>
<p><strong>B：计算该选择器中ID的数量。</strong>（例如，#header 这样的选择器，计算为0, 1, 0, 0）。</p>
<p><strong>C：计算该选择器中伪类及其它属性的数量（包括class、属性选择器等，不包括伪元素）。 </strong>（例如， .logo[id='site-logo'] 这样的选择器，计算为0, 0, 2, 0）。</p>
<p><strong>D：计算该选择器中伪元素及标签的数量。</strong>（例如，p:first-letter 这样的选择器，计算为0, 0, 0, 2）。</p>
<p>CSS2规范中给出的一些例子：</p>
<blockquote><p>*             {}  /* a=0 b=0 c=0 d=0 -&gt; specificity = 0,0,0,0 */</p>
<p>li            {}  /* a=0 b=0 c=0 d=1 -&gt; specificity = 0,0,0,1 */</p>
<p>li:first-line {}  /* a=0 b=0 c=0 d=2 -&gt; specificity = 0,0,0,2 */</p>
<p>ul li         {}  /* a=0 b=0 c=0 d=2 -&gt; specificity = 0,0,0,2 */</p>
<p>ul ol+li      {}  /* a=0 b=0 c=0 d=3 -&gt; specificity = 0,0,0,3 */</p>
<p>h1 + *[rel=up]{}  /* a=0 b=0 c=1 d=1 -&gt; specificity = 0,0,1,1 */</p>
<p>ul ol li.red  {}  /* a=0 b=0 c=1 d=3 -&gt; specificity = 0,0,1,3 */</p>
<p>li.red.level  {}  /* a=0 b=0 c=2 d=1 -&gt; specificity = 0,0,2,1 */</p>
<p>#x34y         {}  /* a=0 b=1 c=0 d=0 -&gt; specificity = 0,1,0,0 */</p>
<p>style=”"          /* a=1 b=0 c=0 d=0 -&gt; specificity = 1,0,0,0 */</p></blockquote>
<p>根据这样的定义，所以很多文章简单地把规则归纳为：<em>内联样式的权重值是1000，ID选择器的权重值是100，class选择器的权重值是10，标签选择器的权重值是1. 整条规则中的所有选择器权重值相加得到整个样式规则的权重值，数字越大权重值越高。</em></p>
<p>大多数情况下，按照这样的理解得出的结论没有问题，但是遇到下面这样的情况就出现问题了：</p>
<p>样式一：<span style="color: #d16349;"><strong>body header div nav ul li div p a span em {color: red}</strong></span></p>
<p>样式二：<strong><span style="color: #d16349;">.count {color: blue}</span></strong></p>
<p>按照错误的计算方法，样式一的权重值是11，样式二的权重值是10，如果这两条规则用于同一个元素，则该元素应该是红色。实际结果却是蓝色。</p>
<h4>权重值的比较</h4>
<p>按照四组计算的正确方法，上面例子中的样式一权重值应该是0, 0, 0, 11，样式二的权重值是0, 0, 1, 0。</p>
<p>根据规范，计算权重值时，<strong>A,B,C,D四组值，从左到右，分组比较，如果A相同，比较B，如果B相同，比较C，如果C相同，比较D，如果D相同，后定义的优先。</strong></p>
<p>样式二和样式一的A、B相同，而样式二的C大于样式一，所以，不管D的值如何，样式二权重值都大于样式一。这就是正确的答案。</p>
<h4>特殊的 !important</h4>
<p>在按照ABCD四组计算比较之外，在定义样式的时候，还可以对某一个属性应用 !important。对于一直从事编程而没做过重构的人，需要特别注意的是这里的“!”与其在编程语言中的意义刚好相反，不是代表“不重要”而是代表“很重要”。</p>
<p>CSS2规范中规定：!important 用于<strong>单独指定</strong>某条样式中的单个属性。对于被指定的属性，有 !important 指定的权重值大于所有未用 !important 指定的规则。</p>
<p>例如：</p>
<p>样式一： <span style="color: #d16349;"><strong>#header nav ul li.current {color: red; font-weight: bold;}</strong></span></p>
<p>样式二： <strong><span style="color: #d16349;">li:hover {color: blue !important; font-weight: normal;}</span></strong></p>
<p>就整条规则而言，样式一的权重值为 0, 1, 1, 3，而样式二的权重值仅为0, 0, 0, 2。所以应用于相同元素时，应该样式一生效。但是对于color这个属性，由于在样式二中用 !important 做了指定，因此color将应用样式二的规则。而font-weight则按照规定用样式一的规则。</p>
<p>如果多条规则中都对同一个属性指定了 !important 呢？这时候 !important 的作用相互抵销，依然按照ABCD四组计算比较。</p>
<p>因此 !important 的作用只有在具有唯一性时才能提现，但是我们永远无法预料自己什么时候又需要覆盖一个已经指定了 !important 的属性，所以最好的办法就是：不要使用 !important。</p>
<h4>总结</h4>
<ol>
<li>一条样式规则的整体权重值包含四个独立的部分：[A, B, C, D];</li>
<li>A表示内联样式，只有1或者0两个值；</li>
<li>B表示规则中ID的数量；</li>
<li>C表示规则中除了ID、标签和伪元素以外的其它选择器数量；</li>
<li>D表示规则中标签和伪元素的数量；</li>
<li>比较时从高位到低位（从A到D）分别比较，高位相同才需要比较低位；</li>
<li>有 !important 标记的属性权重值无视没用 !important 指定的一切情况；</li>
<li>多次指定 !important 时，相互抵销。</li>
</ol>
<h3  class="related_post_title">相关日志</h3><ul class="related_post"><li>2012-03-22 -- <a href="http://ofcss.com/2012/03/22/cssgaga-quick-start.html" title="CssGaga 快速上手指南">CssGaga 快速上手指南</a></li><li>2011-03-20 -- <a href="http://ofcss.com/2011/03/20/misunderstood-of-overflow-hidden.html" title="容易被误解的overflow:hidden">容易被误解的overflow:hidden</a></li><li>2011-03-14 -- <a href="http://ofcss.com/2011/03/14/browser-rendering-optimizer-translation-extra.html" title="对《优化浏览器渲染》的补充【译】">对《优化浏览器渲染》的补充【译】</a></li><li>2011-03-12 -- <a href="http://ofcss.com/2011/03/12/flexible-two-column-layout-reloaded.html" title="自适应的多列图文混排改进">自适应的多列图文混排改进</a></li><li>2011-03-10 -- <a href="http://ofcss.com/2011/03/10/css-border-tricks-with-collapsed-boxes-translation.html" title="CSS边框实现&ldquo;无图化&rdquo;设计【译】">CSS边框实现&ldquo;无图化&rdquo;设计【译】</a></li><li>2011-03-04 -- <a href="http://ofcss.com/2011/03/04/the-hacktastic-zoom-fix-translation.html" title="在非IE浏览器中模拟zoom创建块级上下文【译】">在非IE浏览器中模拟zoom创建块级上下文【译】</a></li><li>2010-10-31 -- <a href="http://ofcss.com/2010/10/31/prevent-a-float-drop-in-ie6-translation.html" title="CSS技巧:如何避免IE6中的&quot;浮动下坠&quot;【译】">CSS技巧:如何避免IE6中的&quot;浮动下坠&quot;【译】</a></li><li>2010-10-30 -- <a href="http://ofcss.com/2010/10/30/bfc-element-margin-bug-in-webkit.html" title="webkit中BFC元素临近浮动元素时的边距bug">webkit中BFC元素临近浮动元素时的边距bug</a></li><li>2010-10-20 -- <a href="http://ofcss.com/2010/10/20/clearfix-reloaded-overflowhidden-demystified-translation.html" title="clearfix改良及overflow:hidden详解【译】">clearfix改良及overflow:hidden详解【译】</a></li><li>2010-06-09 -- <a href="http://ofcss.com/2010/06/09/my-rencent-booklist.html" title="最近的书单">最近的书单</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://ofcss.com/2011/05/26/css-cascade-specificity.html/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>容易被误解的overflow:hidden</title>
		<link>http://ofcss.com/2011/03/20/misunderstood-of-overflow-hidden.html</link>
		<comments>http://ofcss.com/2011/03/20/misunderstood-of-overflow-hidden.html#comments</comments>
		<pubDate>Sun, 20 Mar 2011 06:39:23 +0000</pubDate>
		<dc:creator>小李刀刀</dc:creator>
				<category><![CDATA[所谓技术]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[overflow]]></category>
		<category><![CDATA[技巧]]></category>

		<guid isPermaLink="false">http://ofcss.com/2011/03/20/misunderstood-of-overflow-hidden.html</guid>
		<description><![CDATA[为了页面的健壮性，我们常常需要使用overflow:hidden。有时候是为了防止布局被撑开，有时候是为了配合其它规则实现文字截断，还有时候纯粹是为了创建块级上下文。但是，很多人对这个属性是存在着一定的误解的，网上很多入门的资料或文章都只提到用overflow:hidden加固定的宽度（或高度）可以强制隐藏内部的超出容器的内容。包括之前我们在使用overflow:hidden创建块级上下文的方式来实现图文混排时，都认为overflow:hidden造成了特殊情况下的麻烦（详见自适应的多列图文混排改进）。但如果认真阅读一下css规范，会发现overflow:hidden其实并不一定隐藏溢出内容。我之前翻译的clearfix改良及overflow:hidden详解一文中第二部分有讲解，不过可那篇文章的重点是谈清除浮动的问题，所以有关overflow的问题反而没引起注意。 overflow:hidden并不隐藏所有溢出的子元素 对于overflow:hidden的最大误解时：当一个具有高度和宽度中至少一项的容器应用了overflow:hidden时，其内部的任何溢出的内容都将被剪裁（隐藏）。 但事实确实如此吗？答案是“未必”！事实是拥有overflow:hidden样式的块元素内部的元素溢出并不总是被隐藏，具体来说，需要同时满足以下条件： 拥有overflow:hidden样式的块元素不具有position:relative和position:absolute样式； 内部溢出的元素是通过position:absolute绝对定位； 如果你只关心结论，那么记住这两点就够了。我这里有个demo，结构如下： &#60;div class=&#34;position&#34;&#62; &#60;h2&#62;position box&#60;/h2&#62; &#60;div class=&#34;overflow&#34;&#62; &#60;h3&#62;overflow box&#60;/h3&#62; &#60;div class=&#34;static&#34;&#62; &#60;p&#62;This is static child element. This is static child element. This is static child element. This is static child element.&#60;p&#62; &#60;p&#62;This is static child element. This is static child element. This is static child element. This is static [...]]]></description>
			<content:encoded><![CDATA[<p>为了页面的健壮性，我们常常需要使用overflow:hidden。有时候是为了防止布局被撑开，有时候是为了配合其它规则实现文字截断，还有时候纯粹是为了创建块级上下文。但是，很多人对这个属性是存在着一定的误解的，网上很多入门的资料或文章都只提到用overflow:hidden加固定的宽度（或高度）可以强制隐藏内部的超出容器的内容。包括之前我们在使用overflow:hidden创建块级上下文的方式来实现图文混排时，都认为overflow:hidden造成了特殊情况下的麻烦（详见<a href="http://ofcss.com/2011/03/12/flexible-two-column-layout-reloaded.html" title="自适应的多列图文混排改进">自适应的多列图文混排改进</a>）。但如果认真阅读一下css规范，会发现overflow:hidden其实并不一定隐藏溢出内容。我之前翻译的<a href="http://ofcss.com/2010/10/20/clearfix-reloaded-overflowhidden-demystified-translation.html" title="clearfix改良及overflow:hidden详解【译】">clearfix改良及overflow:hidden详解</a>一文中第二部分有讲解，不过可那篇文章的重点是谈清除浮动的问题，所以有关overflow的问题反而没引起注意。 </p>
<p><span id="more-1097"></span><br />
<h4>overflow:hidden并不隐藏所有溢出的子元素</h4>
<p>对于overflow:hidden的最大误解时：当一个具有高度和宽度中至少一项的容器应用了overflow:hidden时，其内部的任何溢出的内容都将被剪裁（隐藏）。 但事实确实如此吗？答案是“未必”！事实是拥有overflow:hidden样式的块元素内部的元素溢出并不总是被隐藏，具体来说，需要同时满足以下条件：</p>
<ol>
<li>拥有overflow:hidden样式的块元素不具有position:relative和position:absolute样式； </li>
<li>内部溢出的元素是通过position:absolute绝对定位； </li>
</ol>
<p>如果你只关心结论，那么记住这两点就够了。我这里有个<a href="http://ofcss.com/cssdemo/overflow-demo.html">demo</a>，结构如下：</p>
<pre style="background: #3f3f3f" class="code"><span style="color: #efef8f">&lt;</span><span style="color: #e3ceab">div </span><span style="color: #dfdfbf">class</span><span style="color: #efef8f">=</span><span style="color: #cc9393">&quot;position&quot;</span><span style="color: #efef8f">&gt;
    &lt;</span><span style="color: #e3ceab">h2</span><span style="color: #efef8f">&gt;</span><span style="color: #dcdccc">position box</span><span style="color: #efef8f">&lt;/</span><span style="color: #e3ceab">h2</span><span style="color: #efef8f">&gt;
    &lt;</span><span style="color: #e3ceab">div </span><span style="color: #dfdfbf">class</span><span style="color: #efef8f">=</span><span style="color: #cc9393">&quot;overflow&quot;</span><span style="color: #efef8f">&gt;
        &lt;</span><span style="color: #e3ceab">h3</span><span style="color: #efef8f">&gt;</span><span style="color: #dcdccc">overflow box</span><span style="color: #efef8f">&lt;/</span><span style="color: #e3ceab">h3</span><span style="color: #efef8f">&gt;
        &lt;</span><span style="color: #e3ceab">div </span><span style="color: #dfdfbf">class</span><span style="color: #efef8f">=</span><span style="color: #cc9393">&quot;static&quot;</span><span style="color: #efef8f">&gt;
            &lt;</span><span style="color: #e3ceab">p</span><span style="color: #efef8f">&gt;</span><span style="color: #dcdccc">This is static child element. This is static child element. This is static child element. This is static child element.</span><span style="color: #efef8f">&lt;</span><span style="color: #e3ceab">p</span><span style="color: #efef8f">&gt;
            &lt;</span><span style="color: #e3ceab">p</span><span style="color: #efef8f">&gt;</span><span style="color: #dcdccc">This is static child element. This is static child element. This is static child element. This is static child element.</span><span style="color: #efef8f">&lt;</span><span style="color: #e3ceab">p</span><span style="color: #efef8f">&gt;
        &lt;/</span><span style="color: #e3ceab">div</span><span style="color: #efef8f">&gt;
        &lt;</span><span style="color: #e3ceab">div </span><span style="color: #dfdfbf">class</span><span style="color: #efef8f">=</span><span style="color: #cc9393">&quot;absolute&quot;</span><span style="color: #efef8f">&gt;</span><span style="color: #dcdccc">This is absolute child element. This is absolute child element. This is absolute child element. This is absolute child element.</span><span style="color: #efef8f">&lt;/</span><span style="color: #e3ceab">div</span><span style="color: #efef8f">&gt;
    &lt;/</span><span style="color: #e3ceab">div</span><span style="color: #efef8f">&gt;
&lt;/</span><span style="color: #e3ceab">div</span><span style="color: #efef8f">&gt;</span></pre>
<p>我简单截几个图给懒得打开<a href="http://ofcss.com/cssdemo/overflow-demo.html">demo</a>的童鞋看一下：</p>
<p style="text-align: center; text-indent: 0px"><img style="display: inline" title="overflow-ie6" alt="overflow-ie6" src="http://file.wukangrui.com/attachments/2011/03/overflow-ie6.png" />&#160;<img style="display: inline" title="overflow-ie8" alt="overflow-ie8" src="http://file.wukangrui.com/attachments/2011/03/overflow-ie8.png" /></p>
<p style="text-align: center; text-indent: 0px"><img style="display: inline" title="overflow-chrome" alt="overflow-chrome" src="http://file.wukangrui.com/attachments/2011/03/overflow-chrome.png" />&#160;<img style="display: inline" title="overflow-firefox" alt="overflow-firefox" src="http://file.wukangrui.com/attachments/2011/03/overflow-firefox.png" /></p>
<p>在<a href="http://ofcss.com/cssdemo/overflow-demo.html">demo</a>中，你可以看到绝对定位的元素被定位到了overflow:hidden的父元素之外，但是它依然被显示了。而普通元素在水平方向上的溢出被隐藏，垂直方向上撑开父元素。也就是说，普通元素的表现符合我们的预期，而绝对定位元素并不如很多人想当然的那样被隐藏。</p>
<h4>理论依据</h4>
<p>那么，这个原理到底是什么呢？当然是<a href="http://www.w3.org/TR/CSS21/" rel="reference">css2.1规范</a>。在规范中<a href="http://www.w3.org/TR/CSS21/visufx.html#overflow" rel="tag">关于overflow的描述</a>中我们可以找到这样一段话：</p>
<blockquote>
<p>This property specifies whether content of a block container element is clipped when it overflows the element&#8217;s box. It affects the clipping of all of the element&#8217;s content except any descendant elements (and their respective content and descendants) whose containing block is the viewport or an ancestor of the element.</p>
</blockquote>
<p>简单翻译一下：此属性(overflow)规定，当一个块元素容器的内容溢出元素的盒模型边界时是否对其进行剪裁。它（此属性）影响被应用元素的所有内容的剪裁。但如果后代元素的<font color="#d16349"><strong>包含块</strong></font>是整个视区（通常指浏览器内容可视区域，可以理解为body元素）或者是该容器（定义了overflow的元素）的父级元素时，则不受影响。</p>
<p>即使是我重新整理过的语言，还是感觉有点绕。不过在这段话里，出现了一个重要的名词“包含块”（containing block）。包含块是什么呢？这个大家其实比较熟悉，一个绝对定位的元素，其包含块是最近的拥有relative或者absolute定位属性的祖先元素，如果任何一级祖先元素都不符合，则其包含块是body元素。</p>
<p>这就说明，一个绝对定位的元素是否被overflow:hidden隐藏，要看其包含块相对于overflow:hidden的位置来决定。这就好比驻日美军，他们不受日本的法律约束而受美国军法约束。因为他们的“包含块”是美国军方而不是日本法院。</p>
<p>实际上在<a href="http://www.w3.org/TR/CSS21/visufx.html#overflow">css2.1规范的11.1节</a>，还有更明确的说明：</p>
<blockquote>
<p>A descendant box is <a href="http://www.w3.org/TR/CSS21/visuren.html#absolute-positioning">positioned absolutely</a>, partly outside the box. Such boxes are not always clipped by the overflow property on their ancestors; specifically, they are not clipped by the overflow of any ancestor between themselves and their containing block。</p>
<p>翻译：</p>
<p>一个绝对定位的后代块元素，部分位于容器之外。这样的元素是否剪裁并不总是取决于定义了overflow属性的祖先容器；尤其是不会被<strong><font color="#ff0000">位于他们自身和他们的包含块之间的祖先容器</font></strong>的overflow属性剪裁。</p>
</blockquote>
<p>回到我的demo，overflow的元素位于相对定位的元素与绝对定位元素之间，因此根据规定它不能剪裁绝对定位的子元素。也就是说爷爷相对定位，老爸规定溢出隐藏，可是儿子是绝对定位元素。这时候儿子是否隐藏由爷爷决定，而不是老爸。</p>
<h4>应用场景</h4>
<p>明白了这个理论，对我们的工作有什么指导意义呢？</p>
<p>首先，我们知道overflow:hidden并不是万能的，要想彻底剪裁它的所有子元素，它不但要有overflow:hidden，而且还要作为所有子元素的包含块。这样万一某一天你看到overflow:hidden里面的东东居然被显示出来了，你才知道是为什么。</p>
<p>其次，如果我们先定义了overflow:hidden防止容器被撑开，或者用这个方法做了神马图文混排、清除浮动之类的处理，甚至是用了overflow:hidden来实现块级上下文这样上流的东东，突然产品又说里面的一个浮层要显示，要在右边，要在右上角，要在左边两个栏宽外面……那么你就知道要怎么搞了。</p>
<p>在oocss中，对模块的定义充分利用了这个特性。oocss的模块基本结构如下：</p>
<pre style="background: #3f3f3f" class="code"><span style="color: #efef8f">&lt;</span><span style="color: #e3ceab">div </span><span style="color: #dfdfbf">class</span><span style="color: #efef8f">=</span><span style="color: #cc9393">&quot;mod&quot;</span><span style="color: #efef8f">&gt;
    &lt;</span><span style="color: #e3ceab">div </span><span style="color: #dfdfbf">class</span><span style="color: #efef8f">=</span><span style="color: #cc9393">&quot;inner&quot;</span><span style="color: #efef8f">&gt;
        &lt;</span><span style="color: #e3ceab">div </span><span style="color: #dfdfbf">class</span><span style="color: #efef8f">=</span><span style="color: #cc9393">&quot;hd&quot;</span><span style="color: #efef8f">&gt;&lt;/</span><span style="color: #e3ceab">div</span><span style="color: #efef8f">&gt;
        &lt;</span><span style="color: #e3ceab">div </span><span style="color: #dfdfbf">class</span><span style="color: #efef8f">=</span><span style="color: #cc9393">&quot;bd&quot;</span><span style="color: #efef8f">&gt;&lt;/</span><span style="color: #e3ceab">div</span><span style="color: #efef8f">&gt;
        &lt;</span><span style="color: #e3ceab">div </span><span style="color: #dfdfbf">class</span><span style="color: #efef8f">=</span><span style="color: #cc9393">&quot;ft&quot;</span><span style="color: #efef8f">&gt;&lt;/</span><span style="color: #e3ceab">div</span><span style="color: #efef8f">&gt;
    &lt;/</span><span style="color: #e3ceab">div</span><span style="color: #efef8f">&gt;
&lt;/</span><span style="color: #e3ceab">div</span><span style="color: #efef8f">&gt;</span></pre>
<p>他们就对inner应用了position:relative，对bd应用了overflow:hidden和_zoom:1。有兴趣的童靴可以研究一下。</p>
<h3  class="related_post_title">相关日志</h3><ul class="related_post"><li>2011-03-12 -- <a href="http://ofcss.com/2011/03/12/flexible-two-column-layout-reloaded.html" title="自适应的多列图文混排改进">自适应的多列图文混排改进</a></li><li>2011-03-10 -- <a href="http://ofcss.com/2011/03/10/css-border-tricks-with-collapsed-boxes-translation.html" title="CSS边框实现&ldquo;无图化&rdquo;设计【译】">CSS边框实现&ldquo;无图化&rdquo;设计【译】</a></li><li>2012-03-30 -- <a href="http://ofcss.com/2012/03/30/disable-firefox-built-in-inspector.html" title="禁用Firefox自带的元素查看工具">禁用Firefox自带的元素查看工具</a></li><li>2012-03-22 -- <a href="http://ofcss.com/2012/03/22/cssgaga-quick-start.html" title="CssGaga 快速上手指南">CssGaga 快速上手指南</a></li><li>2011-05-26 -- <a href="http://ofcss.com/2011/05/26/css-cascade-specificity.html" title="深入解析CSS样式层叠权重值">深入解析CSS样式层叠权重值</a></li><li>2011-03-14 -- <a href="http://ofcss.com/2011/03/14/browser-rendering-optimizer-translation-extra.html" title="对《优化浏览器渲染》的补充【译】">对《优化浏览器渲染》的补充【译】</a></li><li>2011-03-07 -- <a href="http://ofcss.com/2011/03/07/ie8-compatibility-settings.html" title="IE8/9兼容性设置">IE8/9兼容性设置</a></li><li>2011-03-04 -- <a href="http://ofcss.com/2011/03/04/the-hacktastic-zoom-fix-translation.html" title="在非IE浏览器中模拟zoom创建块级上下文【译】">在非IE浏览器中模拟zoom创建块级上下文【译】</a></li><li>2010-10-31 -- <a href="http://ofcss.com/2010/10/31/prevent-a-float-drop-in-ie6-translation.html" title="CSS技巧:如何避免IE6中的&quot;浮动下坠&quot;【译】">CSS技巧:如何避免IE6中的&quot;浮动下坠&quot;【译】</a></li><li>2010-10-30 -- <a href="http://ofcss.com/2010/10/30/bfc-element-margin-bug-in-webkit.html" title="webkit中BFC元素临近浮动元素时的边距bug">webkit中BFC元素临近浮动元素时的边距bug</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://ofcss.com/2011/03/20/misunderstood-of-overflow-hidden.html/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>对《优化浏览器渲染》的补充【译】</title>
		<link>http://ofcss.com/2011/03/14/browser-rendering-optimizer-translation-extra.html</link>
		<comments>http://ofcss.com/2011/03/14/browser-rendering-optimizer-translation-extra.html#comments</comments>
		<pubDate>Mon, 14 Mar 2011 08:06:50 +0000</pubDate>
		<dc:creator>小李刀刀</dc:creator>
				<category><![CDATA[所谓技术]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[性能优化]]></category>
		<category><![CDATA[翻译]]></category>

		<guid isPermaLink="false">http://ofcss.com/2011/03/14/browser-rendering-optimizer-translation-extra.html</guid>
		<description><![CDATA[ISD Webteam的大布同学（twitter：@tc_bryanzhang）在2010年1月翻译了google Page Speed系列中的Optimize browser rendering，很是方便了大家。在此基础上，google又有了更新，我且在此把google新增的部分翻译一下，作为对大布同学译稿的补充。 google这篇文章关注的是资源被下载到客户端以后，在浏览器加载、解释、渲染HTML、CSS和JavaScript阶段的性能优化，提出了5个要点： 使用高效率的CSS选择器 避免CSS expressions 将样式表放在页面顶部 指定图像尺寸 尽早指定文档的字符编码 前四点大布同学已经翻译过了，没拜读过的同学可以点击上面的链接到涛哥的博客学习，第五点的翻译如下： 概述 为HTML文档尽早指定字符编码，可以让浏览器立刻开始执行脚本。 细节 HTML文档是作为带有字符编码信息的字节流序列在互联网中传送的。字符编码信息可以在随文档发送的HTTP响应头信息中指定，也可以在文档的HTML标签中指定。浏览器根据字符编码信息将字节流转换为显示在浏览器上的字符。如果不知道如何构造一个页面的字符，浏览器自然也不能正确地渲染页面。绝大部分浏览器在开始执行任何JavaScript代码或者绘制页面之前都要缓冲一定数量的字节流，缓冲的同时它们也要查找相关的字符编码设定（一个值得注意的例外是IE6/7/8）。 不同浏览器需要缓冲的字节流数量不同，另外如果找不到编码设定，各浏览器默认的编码也不同。但是不管哪一种浏览器，如果在已经缓冲了足够的字节流、开始渲染页面之后才发现指定的编码设定与其默认值不同，都会导致重新解析文档并重绘页面。如果编码的变化影响到了外部资源（例如css\js\media），浏览器甚至会重新对资源进行请求。 为了避免这些延迟，对任何超过1k（精确地说是1024字节，这是我们测试过的所有浏览器的最大缓冲限制）的HTML文档，要尽早指定字符编码。 建议 通过HTTP头信息或meta标签指定编码 为HTML文档指定编码设定有几种方式： 服务器端：通过web服务器的配置来指定编码参数，为所有text/html类型的文档指定带有正确编码信息的Content-Type头信息。例如 Content-Type: text/html;charset=UTF-8 客户端：在HTML代码中包含http-equiv=&#34;content-type&#34;的meta标签，并指定字符编码。例如 。 如果可能的话，为你的web服务器做指定字符编码的HTTP头信息配置。某些浏览器（例如Firefox）在执行JavaScript之前会用（比其它浏览器）更短的延迟缓冲来检查头信息中是否指定字符编码。这意味着它们可以跳过对HTML标签的检查，缩短缓冲的字节数和延迟时间。 把meta标签放在head区域的最前面 如果你不能对web服务器配置进行修改，又需要通过meta标签指定编码，要确保你用于指定编码的meta标签是文档中head标签的第一个子元素。浏览器会在文档的前1024字节中寻找字符编码参数，因此为了避免性能损耗，编码参数在文档头部越早出现越好（译注：在IE6以下的版本中，特定情况下，如果该meta标签不是head的第一个子元素，则会被忽略。具体触发情况尚未进行仔细测试，初步估计是与web服务器配置的默认编码或浏览器默认编码有关）。 始终指定文档类型 在浏览器开始检查字符编码设定前，它们必须先检测将被处理的文档是什么类型。如果没有在头信息或meta标签中指定文档类型（content-type），浏览器就会通过很复杂的算法去“嗅探”文档的类型。这个过程会造成额外的延迟，而且还会带来安全漏洞。 务必指定正确的字符编码 你在HTTP头信息或meta标签中指定的字符编码设置一定要和编辑HTML文档时的实际字符编码一致，这非常重要。另外，如果同时通过HTTP头信息和Meta标签两种方式指定了字符编码，它们一定要保持一致。否则浏览器发现两者相互矛盾，会造成页面渲染错误或者为了重绘页面而造成额外的延迟。有关这一点，你可以阅读HTML 4.01规范（英文）中的5.2节：字符编码（英文）。 扩展阅读 如果需要进一步了解content-type以及字符编码设定存在/缺少的不同情况下浏览器行为的细节，可以参阅以下资料（英文）： Page Speed wiki Browser Performance Issues with Charsets Performance Implications of &#34;charset&#34; 相关日志2010-06-09 -- 最近的书单2009-06-22 -- Whatever:hover [...]]]></description>
			<content:encoded><![CDATA[<p>ISD Webteam的大布同学（twitter：<a href="http://twitter.com/tc_bryanzhang">@tc_bryanzhang</a>）在2010年1月翻译了google Page Speed系列中的<a href="http://code.google.com/intl/zh-CN/speed/page-speed/docs/rendering.html">Optimize browser rendering</a>，很是方便了大家。在此基础上，google又有了更新，我且在此把google新增的部分翻译一下，作为对大布同学译稿的补充。</p>
<p>google这篇文章关注的是资源被下载到客户端以后，在浏览器加载、解释、渲染HTML、CSS和JavaScript阶段的性能优化，提出了5个要点：</p>
<ol>
<li><a href="http://www.99css.com/archives/275#UseEfficientCSSSelectors">使用高效率的CSS选择器</a> </li>
<li><a href="http://www.99css.com/archives/275#AvoidCSSExpressions">避免CSS expressions</a> </li>
<li><a href="http://www.99css.com/archives/275#PutCSSInHead">将样式表放在页面顶部</a> </li>
<li><a href="http://www.99css.com/archives/275#SpecifyImageDimensions">指定图像尺寸</a> </li>
<li>尽早指定文档的字符编码 </li>
</ol>
<p><span id="more-1084"></span>
<p>前四点大布同学已经翻译过了，没拜读过的同学可以点击上面的链接到涛哥的博客学习，第五点的翻译如下：</p>
<h4>概述</h4>
<p>为HTML文档尽早指定字符编码，可以让浏览器立刻开始执行脚本。</p>
<h4>细节</h4>
<p>HTML文档是作为带有字符编码信息的字节流序列在互联网中传送的。字符编码信息可以在随文档发送的HTTP响应头信息中指定，也可以在文档的HTML标签中指定。浏览器根据字符编码信息将字节流转换为显示在浏览器上的字符。如果不知道如何构造一个页面的字符，浏览器自然也不能正确地渲染页面。绝大部分浏览器在开始执行任何JavaScript代码或者绘制页面之前都要缓冲一定数量的字节流，缓冲的同时它们也要查找相关的字符编码设定（一个值得注意的例外是IE6/7/8）。</p>
<p>不同浏览器需要缓冲的字节流数量不同，另外如果找不到编码设定，各浏览器默认的编码也不同。但是不管哪一种浏览器，如果在已经缓冲了足够的字节流、开始渲染页面之后才发现指定的编码设定与其默认值不同，都会导致重新解析文档并重绘页面。如果编码的变化影响到了外部资源（例如css\js\media），浏览器甚至会重新对资源进行请求。</p>
<p>为了避免这些延迟，对任何超过1k（精确地说是1024字节，这是我们测试过的所有浏览器的最大缓冲限制）的HTML文档，要尽早指定字符编码。</p>
<h4>建议</h4>
<p><strong>通过HTTP头信息或meta标签指定编码</strong></p>
<dl style="margin-left: 2em">
<dt>为HTML文档指定编码设定有几种方式： </dt>
<dd style="margin-left: 2em">服务器端：通过web服务器的配置来指定编码参数，为所有text/html类型的文档指定带有正确编码信息的Content-Type头信息。例如 <font color="#9bbb59">Content-Type: text/html;charset=UTF-8</font> </dd>
<dd style="margin-left: 2em">客户端：在HTML代码中包含<font color="#9bbb59">http-equiv=&quot;content-type&quot;</font>的meta标签，并指定字符编码。例如 <meta content="text/html;charset=utf-8" http-equiv="Content-Type" />。 </dd>
</dl>
<p>如果可能的话，为你的web服务器做指定字符编码的HTTP头信息配置。某些浏览器（例如Firefox）在执行JavaScript之前会用（比其它浏览器）更短的延迟缓冲来检查头信息中是否指定字符编码。这意味着它们可以跳过对HTML标签的检查，缩短缓冲的字节数和延迟时间。</p>
<p><strong>把meta标签放在head区域的最前面</strong></p>
<p>如果你不能对web服务器配置进行修改，又需要通过meta标签指定编码，要确保你用于指定编码的meta标签是文档中head标签的第一个子元素。浏览器会在文档的前1024字节中寻找字符编码参数，因此为了避免性能损耗，编码参数在文档头部越早出现越好（译注：在IE6以下的版本中，特定情况下，如果该meta标签不是head的第一个子元素，则会被忽略。具体触发情况尚未进行仔细测试，初步估计是与web服务器配置的默认编码或浏览器默认编码有关）。</p>
<p><strong>始终指定文档类型</strong></p>
<p>在浏览器开始检查字符编码设定前，它们必须先检测将被处理的文档是什么类型。如果没有在头信息或meta标签中指定文档类型（content-type），浏览器就会通过很复杂的算法去“嗅探”文档的类型。这个过程会造成额外的延迟，而且还会带来安全漏洞。</p>
<p><strong>务必指定正确的字符编码</strong></p>
<p>你在HTTP头信息或meta标签中指定的字符编码设置一定要和编辑HTML文档时的实际字符编码一致，这非常重要。另外，如果同时通过HTTP头信息和Meta标签两种方式指定了字符编码，它们一定要保持一致。否则浏览器发现两者相互矛盾，会造成页面渲染错误或者为了重绘页面而造成额外的延迟。有关这一点，你可以阅读HTML 4.01规范（英文）中的5.2节：字符编码（英文）。</p>
<p><strong>扩展阅读</strong></p>
<p>如果需要进一步了解content-type以及字符编码设定存在/缺少的不同情况下浏览器行为的细节，可以参阅以下资料（英文）：</p>
<ul>
<li><a href="http://code.google.com/p/page-speed/wiki/SpecifyCharsetEarly" target="_blank">Page Speed wiki</a> </li>
<li><a href="http://zoompf.com/blog/2009/12/browser-performance-issues-with-charsets/" target="_blank">Browser Performance Issues with Charsets</a> </li>
<li><a href="http://www.kylescholz.com/blog/2010/01/performance_implications_of_charset.html" target="_blank">Performance Implications of &quot;charset&quot;</a> </li>
</ul>
<h3  class="related_post_title">相关日志</h3><ul class="related_post"><li>2010-06-09 -- <a href="http://ofcss.com/2010/06/09/my-rencent-booklist.html" title="最近的书单">最近的书单</a></li><li>2009-06-22 -- <a href="http://ofcss.com/2009/06/22/whatever-hover-pseudo-class-without-javascript.html" title="Whatever:hover &#8211; 无需javascript让IE支持丰富伪类">Whatever:hover &#8211; 无需javascript让IE支持丰富伪类</a></li><li>2011-03-10 -- <a href="http://ofcss.com/2011/03/10/css-border-tricks-with-collapsed-boxes-translation.html" title="CSS边框实现&ldquo;无图化&rdquo;设计【译】">CSS边框实现&ldquo;无图化&rdquo;设计【译】</a></li><li>2010-10-31 -- <a href="http://ofcss.com/2010/10/31/prevent-a-float-drop-in-ie6-translation.html" title="CSS技巧:如何避免IE6中的&quot;浮动下坠&quot;【译】">CSS技巧:如何避免IE6中的&quot;浮动下坠&quot;【译】</a></li><li>2010-10-22 -- <a href="http://ofcss.com/2010/10/22/the-value-of-html-validation-translation.html" title="HTML验证的价值探讨【译】">HTML验证的价值探讨【译】</a></li><li>2010-10-20 -- <a href="http://ofcss.com/2010/10/20/clearfix-reloaded-overflowhidden-demystified-translation.html" title="clearfix改良及overflow:hidden详解【译】">clearfix改良及overflow:hidden详解【译】</a></li><li>2009-12-21 -- <a href="http://ofcss.com/2009/12/21/web-developer-understand-css-box-model.html" title="前台开发从头说起：理解css盒模型">前台开发从头说起：理解css盒模型</a></li><li>2009-12-16 -- <a href="http://ofcss.com/2009/12/16/web-developer-about-css-selector.html" title="前台开发从头说起：谈谈CSS选择符">前台开发从头说起：谈谈CSS选择符</a></li><li>2009-12-15 -- <a href="http://ofcss.com/2009/12/15/web-developer-from-web-standard.html" title="前台开发从头说起：关于web标准化">前台开发从头说起：关于web标准化</a></li><li>2009-04-13 -- <a href="http://ofcss.com/2009/04/13/portable-interchangeable-jquery-based-tabs.html" title="简单、通用的JQuery Tab实现">简单、通用的JQuery Tab实现</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://ofcss.com/2011/03/14/browser-rendering-optimizer-translation-extra.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>自适应的多列图文混排改进</title>
		<link>http://ofcss.com/2011/03/12/flexible-two-column-layout-reloaded.html</link>
		<comments>http://ofcss.com/2011/03/12/flexible-two-column-layout-reloaded.html#comments</comments>
		<pubDate>Sat, 12 Mar 2011 12:25:57 +0000</pubDate>
		<dc:creator>小李刀刀</dc:creator>
				<category><![CDATA[所谓技术]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[技巧]]></category>
		<category><![CDATA[网页]]></category>

		<guid isPermaLink="false">http://ofcss.com/2011/03/12/flexible-two-column-layout-reloaded.html</guid>
		<description><![CDATA[关于网页两栏、三栏的布局讨论由来已久，有各种各样上佳的方案。本文重点讨论的不是两栏、三栏布局这样通用的解决方案，而是一个专门针对两栏图文混排的特定需求的改进型方案。当然其中的原理也可以被应用于两栏布局甚至更多，那是你举一反三，不是本文讨论的重点。你也可以先看一下最终的示例页面。 开始之前，首先来看一下我们的需求： 一个通用的结构，可以放在不同宽度的布局列中； 该结构基本构成为左图（头像）右文（多种结构），左右宽度均不固定； 左栏宽度由内容最小宽度确定，右栏无论内容多少要占满容器剩余宽度； 右栏可能有定位元素超出自身范围，要予以显示，且右栏的内容不能环绕左栏； 右栏中可能会再包含浮动，因此右栏需要清除自身内容的浮动。 实际上针对类似需求，网上也有不少方案，建议参考阅读这篇长文以及涛哥简练实用的自适应的图文混排。根据需求，我们能确定出最基本的结构： &#60;div class="img-txt"&#62; &#60;div class="img"&#62;左图&#60;/div&#62; &#60;div class="txt"&#62;右文&#60;/div&#62; &#60;/div&#62; 安装两列布局的传统做法，我们可以想到两列都浮动、左栏浮动+右栏左边距以及负边距等很多方案。但是再对比一下需求，右栏的特性否决了两栏都浮动的方式，左栏的宽度不固定否定了负边距的方式。左栏浮动加右栏左边距将会遭遇webkit核心浏览器的BFC元素边距bug。 所以我们只能选择左栏浮动（浮动元素宽度最小，内容可以撑开），右栏不浮动（不浮动的block元素默认占满行宽）。但是不浮动的右栏既不能环绕左栏，又不能加左边距。怎么办？理所当然的就该想到BFC元素了。涛哥的方案就是这样出来的。我们在腾讯朋友的项目中已经非常大量地实践了这种方案，效果不错。该方案的核心是右栏通过overflow:hidden来创建一个块级上下文（Block Formatting Context），这样同时满足了右栏宽高自适应和不环绕左栏两个需求，我的方案也是在此之上的一个改进。 既然已经有了经过实践验证的方案，为什么要改进呢？因为我们在实践中也遇到了一些麻烦，那就是右栏中的复杂内容，复杂到会有溢出容器的浮层。但是overflow:hidden的存在迫使我们必须把右栏里的定位元素放到右栏结构之外。虽然能解决问题，但是结构上就不符合逻辑了。 所以我们的需求可以抽象为两点：一、创建块级上下文；二、不能使用overflow:hidden。前几天我翻译了一篇文章在非IE浏览器中模拟zoom创建块级上下文，恰好解决了这个矛盾——在IE中用zoom创建块级上下文，在其它浏览器中模拟IE的zoom创建块级上下文。 回到我们的结构中来说： img-txt要清除浮动（否则当右栏高度小于左栏时，img-txt的高度撑不开），关于清除浮动的方式，之前已经给出了改进的方案。 img要左浮动，img和txt之间的距离只能加在img上（原因之前说了，webkit的bug）。 txt要创建BFC，要清除浮动（这两个问题在模拟zoom的时候一并解决了）。 有了这些前提，我的方案得来全不费功夫。首先是img-txt容器清除浮动： .img-txt:before, .img-txt:after { content: "."; display: block; height: 0; visibility: hidden; } .img-txt:after {clear: both;} .img-txt {zoom: 1;}  &#160; 然后是img的左浮动加右边距（注意IE6的3像素文本慢移bug）： .img { float:left; margin-right:10px; _margin-right:7px; }  然后，txt创建BFC，同时清除自身子元素的浮动： .txt { [...]]]></description>
			<content:encoded><![CDATA[<p>关于网页两栏、三栏的布局讨论由来已久，有各种各样上佳的方案。本文重点讨论的不是两栏、三栏布局这样通用的解决方案，而是一个专门针对两栏图文混排的特定需求的改进型方案。当然其中的原理也可以被应用于两栏布局甚至更多，那是你举一反三，不是本文讨论的重点。你也可以先看一下最终的<a href="http://ofcss.com/cssdemo/imgtxt.html">示例页面</a>。</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://file.wukangrui.com/attachments/2011/03/image1.png" border="0" alt="image" width="684" height="149" /></p>
<p><span id="more-1082"></span></p>
<p>开始之前，首先来看一下我们的需求：</p>
<ol>
<li>一个通用的结构，可以放在不同宽度的布局列中；</li>
<li>该结构基本构成为左图（头像）右文（多种结构），左右宽度均不固定；</li>
<li>左栏宽度由内容最小宽度确定，右栏无论内容多少要占满容器剩余宽度；</li>
<li>右栏可能有定位元素超出自身范围，要予以显示，且右栏的内容不能环绕左栏；</li>
<li>右栏中可能会再包含浮动，因此右栏需要清除自身内容的浮动。</li>
</ol>
<p>实际上针对类似需求，网上也有不少方案，建议参考阅读<a href="http://www.zhangxinxu.com/wordpress/?p=1152" target="_blank">这篇长文</a>以及涛哥简练实用的<a href="http://www.99css.com/archives/669">自适应的图文混排</a>。根据需求，我们能确定出最基本的结构：</p>
<pre class="code" style="background: #3f3f3f;"><span style="color: #efef8f;">&lt;</span><span style="color: #e3ceab;">div </span><span style="color: #dfdfbf;">class</span><span style="color: #efef8f;">=</span><span style="color: #cc9393;">"img-txt"</span><span style="color: #efef8f;">&gt;
    &lt;</span><span style="color: #e3ceab;">div </span><span style="color: #dfdfbf;">class</span><span style="color: #efef8f;">=</span><span style="color: #cc9393;">"img"</span><span style="color: #efef8f;">&gt;</span><span style="color: #dcdccc;">左图</span><span style="color: #efef8f;">&lt;/</span><span style="color: #e3ceab;">div</span><span style="color: #efef8f;">&gt;
    &lt;</span><span style="color: #e3ceab;">div </span><span style="color: #dfdfbf;">class</span><span style="color: #efef8f;">=</span><span style="color: #cc9393;">"txt"</span><span style="color: #efef8f;">&gt;</span><span style="color: #dcdccc;">右文</span><span style="color: #efef8f;">&lt;/</span><span style="color: #e3ceab;">div</span><span style="color: #efef8f;">&gt;
&lt;/</span><span style="color: #e3ceab;">div</span><span style="color: #efef8f;">&gt;</span></pre>
<p>安装两列布局的传统做法，我们可以想到两列都浮动、左栏浮动+右栏左边距以及负边距等很多方案。但是再对比一下需求，右栏的特性否决了两栏都浮动的方式，左栏的宽度不固定否定了负边距的方式。左栏浮动加右栏左边距将会遭遇<a href="http://ofcss.com/2010/10/30/bfc-element-margin-bug-in-webkit.html" title="webkit中BFC元素临近浮动元素时的边距bug">webkit核心浏览器的BFC元素边距bug</a>。</p>
<p>所以我们只能选择左栏浮动（浮动元素宽度最小，内容可以撑开），右栏不浮动（不浮动的block元素默认占满行宽）。但是不浮动的右栏既不能环绕左栏，又不能加左边距。怎么办？理所当然的就该想到BFC元素了。<a href="http://www.99css.com/archives/669">涛哥的方案</a>就是这样出来的。我们在腾讯朋友的项目中已经非常大量地实践了这种方案，效果不错。该方案的核心是右栏通过overflow:hidden来创建一个块级上下文（Block Formatting Context），这样同时满足了右栏宽高自适应和不环绕左栏两个需求，我的方案也是在此之上的一个改进。</p>
<p>既然已经有了经过实践验证的方案，为什么要改进呢？因为我们在实践中也遇到了一些麻烦，那就是右栏中的复杂内容，复杂到会有溢出容器的浮层。但是overflow:hidden的存在迫使我们必须把右栏里的定位元素放到右栏结构之外。虽然能解决问题，但是结构上就不符合逻辑了。</p>
<p>所以我们的需求可以抽象为两点：一、创建块级上下文；二、不能使用overflow:hidden。前几天我翻译了一篇文章在<a href="http://ofcss.com/2011/03/04/the-hacktastic-zoom-fix-translation.html" title="在非IE浏览器中模拟zoom创建块级上下文【译】">非IE浏览器中模拟zoom创建块级上下文</a>，恰好解决了这个矛盾——在IE中用zoom创建块级上下文，在其它浏览器中模拟IE的zoom创建块级上下文。</p>
<p>回到我们的结构中来说：</p>
<ul>
<li>img-txt要清除浮动（否则当右栏高度小于左栏时，img-txt的高度撑不开），关于清除浮动的方式，之前已经给出了<a href="http://ofcss.com/2010/10/20/clearfix-reloaded-overflowhidden-demystified-translation.html" title="clearfix改良及overflow:hidden详解【译】">改进的方案</a>。</li>
<li>img要左浮动，img和txt之间的距离只能加在img上（原因之前说了，webkit的bug）。</li>
<li>txt要创建BFC，要清除浮动（这两个问题在模拟zoom的时候一并解决了）。</li>
</ul>
<p>有了这些前提，我的方案得来全不费功夫。首先是img-txt容器清除浮动：</p>
<pre class="code" style="background: #3f3f3f;"><span style="color: #e3ceab;">.img-txt:before</span><span style="color: #dcdccc;">,
</span><span style="color: #e3ceab;">.img-txt:after </span><span style="color: #dcdccc;">{
  </span><span style="color: #c3bf9f;">content</span><span style="color: #dcdccc;">: </span><span style="color: #cc9393;">"."</span><span style="color: #dcdccc;">;
  </span><span style="color: #c3bf9f;">display</span><span style="color: #dcdccc;">: </span><span style="color: #dfdfbf;">block</span><span style="color: #dcdccc;">;
  </span><span style="color: #c3bf9f;">height</span><span style="color: #dcdccc;">: </span><span style="color: #dfdfbf;">0</span><span style="color: #dcdccc;">;
  </span><span style="color: #c3bf9f;">visibility</span><span style="color: #dcdccc;">: </span><span style="color: #dfdfbf;">hidden</span><span style="color: #dcdccc;">;
}
</span><span style="color: #e3ceab;">.img-txt:after </span><span style="color: #dcdccc;">{</span><span style="color: #c3bf9f;">clear</span><span style="color: #dcdccc;">: </span><span style="color: #dfdfbf;">both</span><span style="color: #dcdccc;">;}
</span><span style="color: #e3ceab;">.img-txt </span><span style="color: #dcdccc;">{</span><span style="color: #c3bf9f;">zoom</span><span style="color: #dcdccc;">: </span><span style="color: #dfdfbf;">1</span><span style="color: #dcdccc;">;}</span><span> </span></pre>
<p>&nbsp;</p>
<p>然后是img的左浮动加右边距（注意IE6的3像素文本慢移bug）：</p>
<pre class="code" style="background: #3f3f3f;"><span style="color: #e3ceab;">.img </span><span style="color: #dcdccc;">{
    </span><span style="color: #c3bf9f;">float</span><span style="color: #dcdccc;">:</span><span style="color: #dfdfbf;">left</span><span style="color: #dcdccc;">;
    </span><span style="color: #c3bf9f;">margin-right</span><span style="color: #dcdccc;">:</span><span style="color: #dfdfbf;">10px</span><span style="color: #dcdccc;">;
    </span><span style="color: #c3bf9f;">_margin-right</span><span style="color: #dcdccc;">:</span><span style="color: #dfdfbf;">7px</span><span style="color: #dcdccc;">;
}</span><span> </span></pre>
<p>然后，txt创建BFC，同时清除自身子元素的浮动：</p>
<pre class="code" style="background: #3f3f3f;"><span style="color: #e3ceab;">.txt </span><span style="color: #dcdccc;">{
    </span><span style="color: #c3bf9f;">display</span><span style="color: #dcdccc;">:</span><span style="color: #dfdfbf;">table-cell</span><span style="color: #dcdccc;">;
    #</span><span style="color: #c3bf9f;">zoom</span><span style="color: #dcdccc;">:</span><span style="color: #dfdfbf;">1</span><span style="color: #dcdccc;">;
}
</span><span style="color: #e3ceab;">.txt:after </span><span style="color: #dcdccc;">{
    </span><span style="color: #c3bf9f;">clear</span><span style="color: #dcdccc;">: </span><span style="color: #dfdfbf;">both</span><span style="color: #dcdccc;">;
    </span><span style="color: #c3bf9f;">display</span><span style="color: #dcdccc;">: </span><span style="color: #dfdfbf;">block</span><span style="color: #dcdccc;">;
    </span><span style="color: #c3bf9f;">visibility</span><span style="color: #dcdccc;">: </span><span style="color: #dfdfbf;">hidden</span><span style="color: #dcdccc;">;
    </span><span style="color: #c3bf9f;">overflow</span><span style="color: #dcdccc;">: </span><span style="color: #dfdfbf;">hidden</span><span style="color: #dcdccc;">;
    </span><span style="color: #c3bf9f;">height</span><span style="color: #dcdccc;">: </span><span style="color: #dfdfbf;">0 !important</span><span style="color: #dcdccc;">;
    </span><span style="color: #c3bf9f;">line-height</span><span style="color: #dcdccc;">: </span><span style="color: #dfdfbf;">0</span><span style="color: #dcdccc;">;
    </span><span style="color: #c3bf9f;">font-size</span><span style="color: #dcdccc;">: </span><span style="color: #dfdfbf;">xx-large</span><span style="color: #dcdccc;">;
    </span><span style="color: #c3bf9f;">content</span><span style="color: #dcdccc;">: </span><span style="color: #cc9393;">" x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x "</span><span style="color: #dcdccc;">;
}</span></pre>
<p>&nbsp;</p>
<p>行了。现在这个结构就可以搬到网页上的任意地方去，右栏内部喜欢放文字也好、图文并茂也好、有浮动也好、有定位也好，都能胜任了。现在如果你再看一下<a href="http://ofcss.com/cssdemo/imgtxt.html">示例页面</a>，你应该会更容易理解这些例子了。</p>
<p>感谢涛哥，推荐了如此精彩的几篇文章让我翻译。</p>
<h3  class="related_post_title">相关日志</h3><ul class="related_post"><li>2011-03-20 -- <a href="http://ofcss.com/2011/03/20/misunderstood-of-overflow-hidden.html" title="容易被误解的overflow:hidden">容易被误解的overflow:hidden</a></li><li>2011-03-10 -- <a href="http://ofcss.com/2011/03/10/css-border-tricks-with-collapsed-boxes-translation.html" title="CSS边框实现&ldquo;无图化&rdquo;设计【译】">CSS边框实现&ldquo;无图化&rdquo;设计【译】</a></li><li>2010-10-30 -- <a href="http://ofcss.com/2010/10/30/bfc-element-margin-bug-in-webkit.html" title="webkit中BFC元素临近浮动元素时的边距bug">webkit中BFC元素临近浮动元素时的边距bug</a></li><li>2010-10-20 -- <a href="http://ofcss.com/2010/10/20/clearfix-reloaded-overflowhidden-demystified-translation.html" title="clearfix改良及overflow:hidden详解【译】">clearfix改良及overflow:hidden详解【译】</a></li><li>2009-12-21 -- <a href="http://ofcss.com/2009/12/21/web-developer-understand-css-box-model.html" title="前台开发从头说起：理解css盒模型">前台开发从头说起：理解css盒模型</a></li><li>2009-12-16 -- <a href="http://ofcss.com/2009/12/16/web-developer-about-css-selector.html" title="前台开发从头说起：谈谈CSS选择符">前台开发从头说起：谈谈CSS选择符</a></li><li>2009-12-15 -- <a href="http://ofcss.com/2009/12/15/web-developer-from-web-standard.html" title="前台开发从头说起：关于web标准化">前台开发从头说起：关于web标准化</a></li><li>2009-06-22 -- <a href="http://ofcss.com/2009/06/22/whatever-hover-pseudo-class-without-javascript.html" title="Whatever:hover &#8211; 无需javascript让IE支持丰富伪类">Whatever:hover &#8211; 无需javascript让IE支持丰富伪类</a></li><li>2009-04-16 -- <a href="http://ofcss.com/2009/04/16/best-practices-of-css-dropdown-menu.html" title="来自微软站点的纯CSS下拉菜单">来自微软站点的纯CSS下拉菜单</a></li><li>2009-04-13 -- <a href="http://ofcss.com/2009/04/13/portable-interchangeable-jquery-based-tabs.html" title="简单、通用的JQuery Tab实现">简单、通用的JQuery Tab实现</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://ofcss.com/2011/03/12/flexible-two-column-layout-reloaded.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>CSS边框实现&#8220;无图化&#8221;设计【译】</title>
		<link>http://ofcss.com/2011/03/10/css-border-tricks-with-collapsed-boxes-translation.html</link>
		<comments>http://ofcss.com/2011/03/10/css-border-tricks-with-collapsed-boxes-translation.html#comments</comments>
		<pubDate>Wed, 09 Mar 2011 16:41:21 +0000</pubDate>
		<dc:creator>小李刀刀</dc:creator>
				<category><![CDATA[所谓技术]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[技巧]]></category>
		<category><![CDATA[翻译]]></category>

		<guid isPermaLink="false">http://ofcss.com/?p=1078</guid>
		<description><![CDATA[原文：http://www.yuiblog.com/blog/2011/03/08/css-border-tricks-with-collapsed-boxes/ 译文：http://ofcss.com/?p=1078 作者：Thierry Koblentz （雅虎前端工程师） 用css边框实现小三角的技巧现在已经被越来越多的网站所采用，减少图片、减少HTTP请求的低碳设计越来越受欢迎。这次，来自雅虎的前端工程师又给我们带来了一组新的CSS边框设计技巧，原文列出了三种（双色背景导航条、水平排列元素间的点线分隔符、带左右箭头的垂直导航条），实际上除了这三种外，其范例页中还给出了额外的两种（水平分页导航条、垂直分组导航条）。以下是译文： 双色背景 原文并未直接给出IE6/7的处理说明，但是在范例页的样式中包含了IE6/7的Hack，这里我把它们摘出来放在下方，你也可以狠狠点击原文范例页面自行查看。 #menuBar-A { display: inline-block; text-align: center; border: 1px solid #cecece; } .child { display: inline-block; line-height: 0; height: 0; border-top: 1em solid #ffc; border-bottom: 1em solid #fdcf46; padding: 0 .6em; vertical-align: bottom; } &#60;ul id="menuBar-A"&#62; &#60;li&#62;&#60;a href="#"&#62;About Us&#60;/a&#62;&#60;/li&#62; &#60;li class="selected"&#62;&#60;a href="#"&#62;Contact Us&#60;/a&#62;&#60;/li&#62; &#60;li&#62;&#60;a href="#"&#62;Services&#60;/a&#62;&#60;/li&#62; &#60;li&#62;&#60;a href="#"&#62;Products&#60;/a&#62;&#60;/li&#62; &#60;/ul&#62; [...]]]></description>
			<content:encoded><![CDATA[<p>原文：<a href="http://www.yuiblog.com/blog/2011/03/08/css-border-tricks-with-collapsed-boxes/">http://www.yuiblog.com/blog/2011/03/08/css-border-tricks-with-collapsed-boxes/</a></p>
<p>译文：<a href="http://ofcss.com/2011/03/10/css-border-tricks-with-collapsed-boxes-translation.html" title="CSS边框实现&ldquo;无图化&rdquo;设计【译】">http://ofcss.com/?p=1078</a></p>
<p>作者：<em>Thierry Koblentz （雅虎前端工程师）</em></p>
<p>用css边框实现小三角的技巧现在已经被越来越多的网站所采用，减少图片、减少HTTP请求的低碳设计越来越受欢迎。这次，来自雅虎的前端工程师又给我们带来了一组新的CSS边框设计技巧，原文列出了三种（双色背景导航条、水平排列元素间的点线分隔符、带左右箭头的垂直导航条），实际上除了这三种外，其范例页中还给出了额外的两种（水平分页导航条、垂直分组导航条）。以下是译文：</p>
<p><span id="more-1078"></span><br />
<h4>双色背景</h4>
<p>原文并未直接给出IE6/7的处理说明，但是在范例页的样式中包含了IE6/7的Hack，这里我把它们摘出来放在下方，你也可以狠狠点击<a href="http://tjkdesign.com/Y!/YUIBlog/border_hacks/demo.html">原文范例页面</a>自行查看。</p>
<p align="center"><img title="bi-color-background" border="0" alt="bi-color-background" src="http://file.wukangrui.com/attachments/2011/03/bi-color-background.png"></p>
<pre style="background: #3f3f3f" class="code"><span style="color: #e3ceab">#menuBar-A </span><span style="color: #dcdccc">{
    </span><span style="color: #c3bf9f">display</span><span style="color: #dcdccc">: </span><span style="color: #dfdfbf">inline-block</span><span style="color: #dcdccc">;
    </span><span style="color: #c3bf9f">text-align</span><span style="color: #dcdccc">: </span><span style="color: #dfdfbf">center</span><span style="color: #dcdccc">;
    </span><span style="color: #c3bf9f">border</span><span style="color: #dcdccc">: </span><span style="color: #dfdfbf">1px solid #cecece</span><span style="color: #dcdccc">;
}
</span><span style="color: #e3ceab">.child </span><span style="color: #dcdccc">{
    </span><span style="color: #c3bf9f">display</span><span style="color: #dcdccc">: </span><span style="color: #dfdfbf">inline-block</span><span style="color: #dcdccc">;
    </span><span style="color: #c3bf9f">line-height</span><span style="color: #dcdccc">: </span><span style="color: #dfdfbf">0</span><span style="color: #dcdccc">;
    </span><span style="color: #c3bf9f">height</span><span style="color: #dcdccc">: </span><span style="color: #dfdfbf">0</span><span style="color: #dcdccc">;
    </span><span style="color: #c3bf9f">border-top</span><span style="color: #dcdccc">: </span><span style="color: #dfdfbf">1em solid #ffc</span><span style="color: #dcdccc">;
    </span><span style="color: #c3bf9f">border-bottom</span><span style="color: #dcdccc">: </span><span style="color: #dfdfbf">1em solid #fdcf46</span><span style="color: #dcdccc">;
    </span><span style="color: #c3bf9f">padding</span><span style="color: #dcdccc">: </span><span style="color: #dfdfbf">0 .6em</span><span style="color: #dcdccc">;
    </span><span style="color: #c3bf9f">vertical-align</span><span style="color: #dcdccc">: </span><span style="color: #dfdfbf">bottom</span><span style="color: #dcdccc">;
}</span><span></pre>
<pre style="background: #3f3f3f" class="code"><span style="color: #efef8f">&lt;</span><span style="color: #e3ceab">ul </span><span style="color: #dfdfbf">id</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"menuBar-A"</span><span style="color: #efef8f">&gt;
    &lt;</span><span style="color: #e3ceab">li</span><span style="color: #efef8f">&gt;&lt;</span><span style="color: #e3ceab">a </span><span style="color: #dfdfbf">href</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"#"</span><span style="color: #efef8f">&gt;</span><span style="color: #dcdccc">About Us</span><span style="color: #efef8f">&lt;/</span><span style="color: #e3ceab">a</span><span style="color: #efef8f">&gt;&lt;/</span><span style="color: #e3ceab">li</span><span style="color: #efef8f">&gt;
    &lt;</span><span style="color: #e3ceab">li </span><span style="color: #dfdfbf">class</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"selected"</span><span style="color: #efef8f">&gt;&lt;</span><span style="color: #e3ceab">a </span><span style="color: #dfdfbf">href</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"#"</span><span style="color: #efef8f">&gt;</span><span style="color: #dcdccc">Contact Us</span><span style="color: #efef8f">&lt;/</span><span style="color: #e3ceab">a</span><span style="color: #efef8f">&gt;&lt;/</span><span style="color: #e3ceab">li</span><span style="color: #efef8f">&gt;
    &lt;</span><span style="color: #e3ceab">li</span><span style="color: #efef8f">&gt;&lt;</span><span style="color: #e3ceab">a </span><span style="color: #dfdfbf">href</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"#"</span><span style="color: #efef8f">&gt;</span><span style="color: #dcdccc">Services</span><span style="color: #efef8f">&lt;/</span><span style="color: #e3ceab">a</span><span style="color: #efef8f">&gt;&lt;/</span><span style="color: #e3ceab">li</span><span style="color: #efef8f">&gt;
    &lt;</span><span style="color: #e3ceab">li</span><span style="color: #efef8f">&gt;&lt;</span><span style="color: #e3ceab">a </span><span style="color: #dfdfbf">href</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"#"</span><span style="color: #efef8f">&gt;</span><span style="color: #dcdccc">Products</span><span style="color: #efef8f">&lt;/</span><span style="color: #e3ceab">a</span><span style="color: #efef8f">&gt;&lt;/</span><span style="color: #e3ceab">li</span><span style="color: #efef8f">&gt;
&lt;/</span><span style="color: #e3ceab">ul</span><span style="color: #efef8f">&gt;</span><span></pre>
<p></span><span></span>
<pre style="background: #3f3f3f" class="code"><span style="color: #7f9f7f">/*
 * IE6/7 Hacks
 * 用display:inline + zoom来模拟display:inline-block;
 * 基于IE对列表元素的样式渲染方式，不能对其使用垂直边框，因此用它的背景色代替 */
</span><span style="color: #e3ceab">#menuBar-A </span><span style="color: #dcdccc">{
    #</span><span style="color: #c3bf9f">display</span><span style="color: #dcdccc">:</span><span style="color: #dfdfbf">inline</span><span style="color: #dcdccc">;
    #</span><span style="color: #c3bf9f">zoom</span><span style="color: #dcdccc">:</span><span style="color: #dfdfbf">1</span><span style="color: #dcdccc">;
    #</span><span style="color: #c3bf9f">border</span><span style="color: #dcdccc">:</span><span style="color: #dfdfbf">0</span><span style="color: #dcdccc">;
    #</span><span style="color: #c3bf9f">padding</span><span style="color: #dcdccc">:</span><span style="color: #dfdfbf">1px 0 1px 1px</span><span style="color: #dcdccc">;
    #</span><span style="color: #c3bf9f">background</span><span style="color: #dcdccc">:</span><span style="color: #dfdfbf">#BD9E43</span><span style="color: #dcdccc">;
}
</span><span style="color: #e3ceab">#menuBar-A li </span><span style="color: #dcdccc">{
    #</span><span style="color: #c3bf9f">background</span><span style="color: #dcdccc">:</span><span style="color: #dfdfbf">#ffc</span><span style="color: #dcdccc">;
    #</span><span style="color: #c3bf9f">border</span><span style="color: #dcdccc">:</span><span style="color: #dfdfbf">0</span><span style="color: #dcdccc">;
    #</span><span style="color: #c3bf9f">margin-right</span><span style="color: #dcdccc">:</span><span style="color: #dfdfbf">1px</span><span style="color: #dcdccc">;
    #</span><span style="color: #c3bf9f">border-bottom</span><span style="color: #dcdccc">:</span><span style="color: #dfdfbf">1em solid #fdcf46</span><span style="color: #dcdccc">;
}
</span><span style="color: #e3ceab">#menuBar-A a </span><span style="color: #dcdccc">{
    #</span><span style="color: #c3bf9f">line-height</span><span style="color: #dcdccc">:</span><span style="color: #dfdfbf">1</span><span style="color: #dcdccc">;
    #</span><span style="color: #c3bf9f">border</span><span style="color: #dcdccc">:</span><span style="color: #dfdfbf">0</span><span style="color: #dcdccc">;
    #</span><span style="color: #c3bf9f">position</span><span style="color: #dcdccc">:</span><span style="color: #dfdfbf">relative</span><span style="color: #dcdccc">;
    #</span><span style="color: #c3bf9f">top</span><span style="color: #dcdccc">:</span><span style="color: #dfdfbf">-.65em</span><span style="color: #dcdccc">;
    </span><span style="color: #c3bf9f">_top</span><span style="color: #dcdccc">:</span><span style="color: #dfdfbf">.3em</span><span style="color: #dcdccc">;
}
</span><span style="color: #e3ceab">#menuBar-A li:hover a </span><span style="color: #dcdccc">{
    #</span><span style="color: #c3bf9f">color</span><span style="color: #dcdccc">:</span><span style="color: #dfdfbf">#fff</span><span style="color: #dcdccc">;
}
</span><span style="color: #e3ceab">#menuBar-A a:hover</span><span style="color: #dcdccc">,
</span><span style="color: #e3ceab">#menuBar-A a:active </span><span style="color: #dcdccc">{
    </span><span style="color: #c3bf9f">_color</span><span style="color: #dcdccc">:</span><span style="color: #dfdfbf">#333</span><span style="color: #dcdccc">;
}
</span><span style="color: #e3ceab">#menuBar-A .selected</span><span style="color: #dcdccc">,
</span><span style="color: #e3ceab">#menuBar-A li:hover </span><span style="color: #dcdccc">{
    #</span><span style="color: #c3bf9f">background</span><span style="color: #dcdccc">:</span><span style="color: #dfdfbf">#c789d9</span><span style="color: #dcdccc">;
    #</span><span style="color: #c3bf9f">border-bottom-color</span><span style="color: #dcdccc">:</span><span style="color: #dfdfbf">#83358B</span><span style="color: #dcdccc">;
}
</span><span style="color: #e3ceab">#menuBar-A .selected a:hover</span><span style="color: #dcdccc">, {
    #</span><span style="color: #c3bf9f">color</span><span style="color: #dcdccc">:</span><span style="color: #dfdfbf">#fff</span><span style="color: #dcdccc">;
}</span><span></pre>
<p></span><br />
<h4>列表元素之间的点/线分隔符</h4>
<p>这个例子只需要做少量的IE Hack就可以完美实现跨浏览器兼容。
<p align="center"><img title="dots-and-pipes" border="0" alt="dots-and-pipes" src="http://file.wukangrui.com/attachments/2011/03/dots-and-pipes.png" width="458" height="67"></p>
<pre style="background: #3f3f3f" class="code"><span style="color: #e3ceab">ul.one</span><span style="color: #dcdccc">, </span><span style="color: #e3ceab">ul.two </span><span style="color: #dcdccc">{
    </span><span style="color: #c3bf9f">margin-left</span><span style="color: #dcdccc">: </span><span style="color: #dfdfbf">0</span><span style="color: #dcdccc">;
    </span><span style="color: #c3bf9f">display</span><span style="color: #dcdccc">: </span><span style="color: #dfdfbf">inline-block</span><span style="color: #dcdccc">;
    #</span><span style="color: #c3bf9f">display</span><span style="color: #dcdccc">:</span><span style="color: #dfdfbf">inline</span><span style="color: #dcdccc">;
    #</span><span style="color: #c3bf9f">zoom</span><span style="color: #dcdccc">:</span><span style="color: #dfdfbf">1</span><span style="color: #dcdccc">;
    </span><span style="color: #c3bf9f">height</span><span style="color: #dcdccc">:</span><span style="color: #dfdfbf">12px</span><span style="color: #dcdccc">;
    </span><span style="color: #c3bf9f">line-height</span><span style="color: #dcdccc">:</span><span style="color: #dfdfbf">12px</span><span style="color: #dcdccc">;
    </span><span style="color: #c3bf9f">padding</span><span style="color: #dcdccc">:</span><span style="color: #dfdfbf">0</span><span style="color: #dcdccc">;
}

</span><span style="color: #e3ceab">li </span><span style="color: #dcdccc">{
    </span><span style="color: #c3bf9f">float</span><span style="color: #dcdccc">: </span><span style="color: #dfdfbf">left</span><span style="color: #dcdccc">;
    </span><span style="color: #c3bf9f">display</span><span style="color: #dcdccc">: </span><span style="color: #dfdfbf">inline</span><span style="color: #dcdccc">;
    </span><span style="color: #c3bf9f">height</span><span style="color: #dcdccc">: </span><span style="color: #dfdfbf">2px</span><span style="color: #dcdccc">;
    </span><span style="color: #c3bf9f">line-height</span><span style="color: #dcdccc">: </span><span style="color: #dfdfbf">2px</span><span style="color: #dcdccc">;
    </span><span style="color: #c3bf9f">position</span><span style="color: #dcdccc">: </span><span style="color: #dfdfbf">relative</span><span style="color: #dcdccc">;
    </span><span style="color: #c3bf9f">top</span><span style="color: #dcdccc">: </span><span style="color: #dfdfbf">.3em</span><span style="color: #dcdccc">;
}
</span><span style="color: #e3ceab">li.selected </span><span style="color: #dcdccc">{
    </span><span style="color: #c3bf9f">font-weight</span><span style="color: #dcdccc">:</span><span style="color: #dfdfbf">bold</span><span style="color: #dcdccc">;
}
</span><span style="color: #e3ceab">ul.two </span><span style="color: #dcdccc">{
    </span><span style="color: #c3bf9f">border-left</span><span style="color: #dcdccc">: </span><span style="color: #dfdfbf">1px solid #333</span><span style="color: #dcdccc">;
}

</span><span style="color: #e3ceab">ul.one li </span><span style="color: #dcdccc">{
    </span><span style="color: #c3bf9f">border-left</span><span style="color: #dcdccc">: </span><span style="color: #dfdfbf">2px solid #333</span><span style="color: #dcdccc">;
}

</span><span style="color: #e3ceab">ul.two li </span><span style="color: #dcdccc">{
    </span><span style="color: #c3bf9f">border-right</span><span style="color: #dcdccc">: </span><span style="color: #dfdfbf">2px solid #333</span><span style="color: #dcdccc">;
}

</span><span style="color: #e3ceab">ul.one li.first-child</span><span style="color: #dcdccc">, </span><span style="color: #e3ceab">ul.two li.last-child </span><span style="color: #dcdccc">{
    </span><span style="color: #c3bf9f">border</span><span style="color: #dcdccc">: </span><span style="color: #dfdfbf">0</span><span style="color: #dcdccc">;
}

</span><span style="color: #e3ceab">a </span><span style="color: #dcdccc">{
    </span><span style="color: #c3bf9f">color</span><span style="color: #dcdccc">: </span><span style="color: #dfdfbf">#000</span><span style="color: #dcdccc">;
    </span><span style="color: #c3bf9f">padding</span><span style="color: #dcdccc">: </span><span style="color: #dfdfbf">.4em .9em</span><span style="color: #dcdccc">;
    #</span><span style="color: #c3bf9f">position</span><span style="color: #dcdccc">:</span><span style="color: #dfdfbf">relative</span><span style="color: #dcdccc">;
}</span><span></pre>
<p></span><span><span></span>
<pre style="background: #3f3f3f" class="code"><span style="color: #efef8f">&lt;</span><span style="color: #e3ceab">div </span><span style="color: #dfdfbf">id</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"menuBar-B"</span><span style="color: #efef8f">&gt;
    &lt;</span><span style="color: #e3ceab">ul </span><span style="color: #dfdfbf">class</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"one"</span><span style="color: #efef8f">&gt;
        &lt;</span><span style="color: #e3ceab">li </span><span style="color: #dfdfbf">class</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"first-child"</span><span style="color: #efef8f">&gt;&lt;</span><span style="color: #e3ceab">a </span><span style="color: #dfdfbf">href</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"#"</span><span style="color: #efef8f">&gt;</span><span style="color: #dcdccc">About Us</span><span style="color: #efef8f">&lt;/</span><span style="color: #e3ceab">a</span><span style="color: #efef8f">&gt;&lt;/</span><span style="color: #e3ceab">li</span><span style="color: #efef8f">&gt;
        &lt;</span><span style="color: #e3ceab">li </span><span style="color: #dfdfbf">class</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"selected"</span><span style="color: #efef8f">&gt;&lt;</span><span style="color: #e3ceab">a </span><span style="color: #dfdfbf">href</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"#"</span><span style="color: #efef8f">&gt;</span><span style="color: #dcdccc">Contact Us</span><span style="color: #efef8f">&lt;/</span><span style="color: #e3ceab">a</span><span style="color: #efef8f">&gt;&lt;/</span><span style="color: #e3ceab">li</span><span style="color: #efef8f">&gt;
    &lt;/</span><span style="color: #e3ceab">ul</span><span style="color: #efef8f">&gt;
    &lt;</span><span style="color: #e3ceab">ul </span><span style="color: #dfdfbf">class</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"two"</span><span style="color: #efef8f">&gt;
        &lt;</span><span style="color: #e3ceab">li </span><span style="color: #dfdfbf">class</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"last-child"</span><span style="color: #efef8f">&gt;&lt;</span><span style="color: #e3ceab">a </span><span style="color: #dfdfbf">href</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"#"</span><span style="color: #efef8f">&gt;</span><span style="color: #dcdccc">Services</span><span style="color: #efef8f">&lt;/</span><span style="color: #e3ceab">a</span><span style="color: #efef8f">&gt;&lt;/</span><span style="color: #e3ceab">li</span><span style="color: #efef8f">&gt;
        &lt;</span><span style="color: #e3ceab">li</span><span style="color: #efef8f">&gt;&lt;</span><span style="color: #e3ceab">a </span><span style="color: #dfdfbf">href</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"#"</span><span style="color: #efef8f">&gt;</span><span style="color: #dcdccc">Products</span><span style="color: #efef8f">&lt;/</span><span style="color: #e3ceab">a</span><span style="color: #efef8f">&gt;&lt;/</span><span style="color: #e3ceab">li</span><span style="color: #efef8f">&gt;
    &lt;/</span><span style="color: #e3ceab">ul</span><span style="color: #efef8f">&gt;
&lt;/</span><span style="color: #e3ceab">div</span><span style="color: #efef8f">&gt;</span><span></pre>
<p></span><br />
<h4>左右三角图标</h4>
<p>原文并未直接给出IE6/7的处理说明，但是在范例页的样式中包含了IE6/7的Hack，这里我把它们摘出来放在下方，你也可以狠狠点击<a href="http://tjkdesign.com/Y!/YUIBlog/border_hacks/demo.html">原文范例页面</a>自行查看。
<p align="center"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="left-and-right-triangles" border="0" alt="left-and-right-triangles" src="http://file.wukangrui.com/attachments/2011/03/left-and-right-triangles.png" width="193" height="157"></p>
<pre style="background: #3f3f3f" class="code"><span style="color: #e3ceab">#box </span><span style="color: #dcdccc">{
    </span><span style="color: #c3bf9f">line-height</span><span style="color: #dcdccc">: </span><span style="color: #dfdfbf">0</span><span style="color: #dcdccc">;
    </span><span style="color: #c3bf9f">height</span><span style="color: #dcdccc">: </span><span style="color: #dfdfbf">0</span><span style="color: #dcdccc">;
    </span><span style="color: #c3bf9f">border</span><span style="color: #dcdccc">: </span><span style="color: #dfdfbf">.4em solid transparent</span><span style="color: #dcdccc">;
    </span><span style="color: #c3bf9f">border-left-color</span><span style="color: #dcdccc">: </span><span style="color: #dfdfbf">#333</span><span style="color: #dcdccc">;
    </span><span style="color: #c3bf9f">border-right-color</span><span style="color: #dcdccc">: </span><span style="color: #dfdfbf">#333</span><span style="color: #dcdccc">;
    </span><span style="color: #c3bf9f">padding</span><span style="color: #dcdccc">: </span><span style="color: #dfdfbf">0 .3em</span><span style="color: #dcdccc">;
    </span><span style="color: #c3bf9f">display</span><span style="color: #dcdccc">: </span><span style="color: #dfdfbf">inline-block</span><span style="color: #dcdccc">;
}</span></pre>
<pre style="background: #3f3f3f" class="code"><span style="color: #efef8f">&lt;</span><span style="color: #e3ceab">ul </span><span style="color: #dfdfbf">id</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"menuBar-C"</span><span style="color: #efef8f">&gt;
    &lt;</span><span style="color: #e3ceab">li</span><span style="color: #efef8f">&gt;&lt;</span><span style="color: #e3ceab">a </span><span style="color: #dfdfbf">href</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"#"</span><span style="color: #efef8f">&gt;</span><span style="color: #dcdccc">About Us</span><span style="color: #efef8f">&lt;/</span><span style="color: #e3ceab">a</span><span style="color: #efef8f">&gt;&lt;/</span><span style="color: #e3ceab">li</span><span style="color: #efef8f">&gt;
    &lt;</span><span style="color: #e3ceab">li </span><span style="color: #dfdfbf">class</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"selected"</span><span style="color: #efef8f">&gt;&lt;</span><span style="color: #e3ceab">a </span><span style="color: #dfdfbf">href</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"#"</span><span style="color: #efef8f">&gt;</span><span style="color: #dcdccc">Contact Us</span><span style="color: #efef8f">&lt;/</span><span style="color: #e3ceab">a</span><span style="color: #efef8f">&gt;&lt;/</span><span style="color: #e3ceab">li</span><span style="color: #efef8f">&gt;
    &lt;</span><span style="color: #e3ceab">li</span><span style="color: #efef8f">&gt;&lt;</span><span style="color: #e3ceab">a </span><span style="color: #dfdfbf">href</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"#"</span><span style="color: #efef8f">&gt;</span><span style="color: #dcdccc">Services</span><span style="color: #efef8f">&lt;/</span><span style="color: #e3ceab">a</span><span style="color: #efef8f">&gt;&lt;/</span><span style="color: #e3ceab">li</span><span style="color: #efef8f">&gt;
    &lt;</span><span style="color: #e3ceab">li</span><span style="color: #efef8f">&gt;&lt;</span><span style="color: #e3ceab">a </span><span style="color: #dfdfbf">href</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"#"</span><span style="color: #efef8f">&gt;</span><span style="color: #dcdccc">Products</span><span style="color: #efef8f">&lt;/</span><span style="color: #e3ceab">a</span><span style="color: #efef8f">&gt;&lt;/</span><span style="color: #e3ceab">li</span><span style="color: #efef8f">&gt;
&lt;/</span><span style="color: #e3ceab">ul</span><span style="color: #efef8f">&gt;</span></pre>
<pre style="background: #3f3f3f" class="code"><span style="color: #7f9f7f">/* IE6/7 Hacks */
</span><span style="color: #e3ceab">#menuBar-C </span><span style="color: #dcdccc">{
    #</span><span style="color: #c3bf9f">display</span><span style="color: #dcdccc">:</span><span style="color: #dfdfbf">inline</span><span style="color: #dcdccc">;
    #</span><span style="color: #c3bf9f">zoom</span><span style="color: #dcdccc">:</span><span style="color: #dfdfbf">1</span><span style="color: #dcdccc">;
    #</span><span style="color: #c3bf9f">width</span><span style="color: #dcdccc">:</span><span style="color: #dfdfbf">10em</span><span style="color: #dcdccc">;
}
</span><span style="color: #e3ceab">#menuBar-C li </span><span style="color: #dcdccc">{
    #</span><span style="color: #c3bf9f">padding</span><span style="color: #dcdccc">:</span><span style="color: #dfdfbf">0</span><span style="color: #dcdccc">;
    #</span><span style="color: #c3bf9f">margin</span><span style="color: #dcdccc">:</span><span style="color: #dfdfbf">.4em</span><span style="color: #dcdccc">;
    #</span><span style="color: #c3bf9f">list-style-type</span><span style="color: #dcdccc">:</span><span style="color: #dfdfbf">none</span><span style="color: #dcdccc">;
    #</span><span style="color: #c3bf9f">height</span><span style="color: #dcdccc">:</span><span style="color: #dfdfbf">0</span><span style="color: #dcdccc">;
    #</span><span style="color: #c3bf9f">border-top</span><span style="color: #dcdccc">:</span><span style="color: #dfdfbf">.4em solid #fff</span><span style="color: #dcdccc">;
    #</span><span style="color: #c3bf9f">border-bottom</span><span style="color: #dcdccc">:</span><span style="color: #dfdfbf">.4em solid #fff</span><span style="color: #dcdccc">;
    #</span><span style="color: #c3bf9f">border-left</span><span style="color: #dcdccc">:</span><span style="color: #dfdfbf">.4em solid #2F2876</span><span style="color: #dcdccc">;
    #</span><span style="color: #c3bf9f">border-right</span><span style="color: #dcdccc">:</span><span style="color: #dfdfbf">.4em solid #2F2876</span><span style="color: #dcdccc">;
    </span><span style="color: #c3bf9f">_position</span><span style="color: #dcdccc">:</span><span style="color: #dfdfbf">relative</span><span style="color: #dcdccc">;
}
</span><span style="color: #e3ceab">#menuBar-C a</span><span style="color: #dcdccc"> {
    #</span><span style="color: #c3bf9f">border</span><span style="color: #dcdccc">:</span><span style="color: #dfdfbf">0</span><span style="color: #dcdccc">;
    #</span><span style="color: #c3bf9f">height</span><span style="color: #dcdccc">:</span><span style="color: #dfdfbf">auto</span><span style="color: #dcdccc">;
    #</span><span style="color: #c3bf9f">line-height</span><span style="color: #dcdccc">:</span><span style="color: #dfdfbf">1</span><span style="color: #dcdccc">;
    #</span><span style="color: #c3bf9f">top</span><span style="color: #dcdccc">:</span><span style="color: #dfdfbf">-.4em</span><span style="color: #dcdccc">;
    #</span><span style="color: #c3bf9f">position</span><span style="color: #dcdccc">:</span><span style="color: #dfdfbf">relative</span><span style="color: #dcdccc">;
    </span><span style="color: #c3bf9f">_position</span><span style="color: #dcdccc">:</span><span style="color: #dfdfbf">absolute</span><span style="color: #dcdccc">;
    #</span><span style="color: #c3bf9f">left</span><span style="color: #dcdccc">:</span><span style="color: #dfdfbf">-.4em</span><span style="color: #dcdccc">;
}
</span><span style="color: #e3ceab">#menuBar-C li:hover</span><span style="color: #dcdccc"> {
    #</span><span style="color: #c3bf9f">border-left</span><span style="color: #dcdccc">:</span><span style="color: #dfdfbf">.4em solid #f60</span><span style="color: #dcdccc">;
}</span><span></pre>
<p></span><br />
<h4>IE6与透明边框</h4>
<p>IE6不支持用于边框颜色的“transparent”关键字。如果在IE6下指定边框颜色为透明（transparent），IE6将会绘制成黑色边框。
<p>解决办法是使用 <a href="http://msdn.microsoft.com/zh-cn/library/ms532982(VS.85).aspx">chroma filter</a>，它可以让对象内容中的指定颜色显示为透明色（译者注：针对IE6，还有其它的解决办法，参见<a href="http://www.99css.com/?p=15">IE 6 的边框不透明 bug</a>）。例如，创建一个向右箭头，可以这样做：
<pre style="background: #3f3f3f" class="code"><span style="color: #e3ceab">#Box </span><span style="color: #dcdccc">{
    </span><span style="color: #c3bf9f">height</span><span style="color: #dcdccc">: </span><span style="color: #dfdfbf">0</span><span style="color: #dcdccc">;
    </span><span style="color: #c3bf9f">width</span><span style="color: #dcdccc">: </span><span style="color: #dfdfbf">0</span><span style="color: #dcdccc">;
    </span><span style="color: #c3bf9f">border</span><span style="color: #dcdccc">: </span><span style="color: #dfdfbf">10px solid transparent</span><span style="color: #dcdccc">;
    </span><span style="color: #c3bf9f">font-size</span><span style="color: #dcdccc">: </span><span style="color: #dfdfbf">0</span><span style="color: #dcdccc">;
    </span><span style="color: #c3bf9f">_border-color</span><span style="color: #dcdccc">: </span><span style="color: #dfdfbf">pink</span><span style="color: #dcdccc">;
    </span><span style="color: #c3bf9f">_filter</span><span style="color: #dcdccc">: </span><span style="color: #dfdfbf">chroma(color="pink")</span><span style="color: #dcdccc">;
    </span><span style="color: #c3bf9f">border-left-color</span><span style="color: #dcdccc">: </span><span style="color: #dfdfbf">#333</span><span style="color: #dcdccc">;
}</span></pre>
<p>规则中的font-size的定义是为了解决IE6下自动撑开元素高度的问题。<br />
<h4>译注：</h4>
<ol>
<li>原文给出的css样式和html结构不对应，在译文中已做修正。
<li>原文作者对IE6/7的注释采用两种方式：*号引导属性名、以及规则最后一个选择符带逗号，在译文中我统一使用了#号引导属性名的方式。为了部分原来不清楚这些hacks方式的读者，下面再把作为本文背景知识的IE6/7、IE6 Hacks符号简单说明一下：
<ul>
<li>IE6/7 均支持以“*”号、“#”号引导的属性名称，其它浏览器不支持。因此，针对IE6/7的Hack可以写为：<br /><font color="#ff0000">#</font>zoom:1或<font color="#ff0000">*</font>zoom:1
<li>IE6/7 均支持最后一个选择符后面跟逗号的规则，其它浏览器不支持。因此，针对IE6/7的Hack也可以写为：<br />.selector<font color="#ff0000">, </font>{zoom:1}
<li>IE6 支持以下划线引导的属性名，其它浏览器不支持。因此，针对IE6的Hack可以写为：<br /><font color="#ff0000">_</font>width:600px;</li>
</ul>
</li>
</ol>
<p>以上只是用边框实现“无图化”设计的众多技巧中的一小部分，实际上我们还可以做得更多。如果有兴趣，你可以继续阅读：
<p>《<a href="http://www.99css.com/archives/146">自适应圆角</a>》
<p>《<a href="http://www.zhangxinxu.com/wordpress/?p=794">CSS Border三角、圆角图形生成技巧</a>》</p>
<h3  class="related_post_title">相关日志</h3><ul class="related_post"><li>2011-03-20 -- <a href="http://ofcss.com/2011/03/20/misunderstood-of-overflow-hidden.html" title="容易被误解的overflow:hidden">容易被误解的overflow:hidden</a></li><li>2011-03-14 -- <a href="http://ofcss.com/2011/03/14/browser-rendering-optimizer-translation-extra.html" title="对《优化浏览器渲染》的补充【译】">对《优化浏览器渲染》的补充【译】</a></li><li>2011-03-12 -- <a href="http://ofcss.com/2011/03/12/flexible-two-column-layout-reloaded.html" title="自适应的多列图文混排改进">自适应的多列图文混排改进</a></li><li>2010-10-31 -- <a href="http://ofcss.com/2010/10/31/prevent-a-float-drop-in-ie6-translation.html" title="CSS技巧:如何避免IE6中的&quot;浮动下坠&quot;【译】">CSS技巧:如何避免IE6中的&quot;浮动下坠&quot;【译】</a></li><li>2010-10-20 -- <a href="http://ofcss.com/2010/10/20/clearfix-reloaded-overflowhidden-demystified-translation.html" title="clearfix改良及overflow:hidden详解【译】">clearfix改良及overflow:hidden详解【译】</a></li><li>2009-06-22 -- <a href="http://ofcss.com/2009/06/22/whatever-hover-pseudo-class-without-javascript.html" title="Whatever:hover &#8211; 无需javascript让IE支持丰富伪类">Whatever:hover &#8211; 无需javascript让IE支持丰富伪类</a></li><li>2012-03-30 -- <a href="http://ofcss.com/2012/03/30/disable-firefox-built-in-inspector.html" title="禁用Firefox自带的元素查看工具">禁用Firefox自带的元素查看工具</a></li><li>2012-03-22 -- <a href="http://ofcss.com/2012/03/22/cssgaga-quick-start.html" title="CssGaga 快速上手指南">CssGaga 快速上手指南</a></li><li>2011-05-26 -- <a href="http://ofcss.com/2011/05/26/css-cascade-specificity.html" title="深入解析CSS样式层叠权重值">深入解析CSS样式层叠权重值</a></li><li>2011-03-07 -- <a href="http://ofcss.com/2011/03/07/ie8-compatibility-settings.html" title="IE8/9兼容性设置">IE8/9兼容性设置</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://ofcss.com/2011/03/10/css-border-tricks-with-collapsed-boxes-translation.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IE8/9兼容性设置</title>
		<link>http://ofcss.com/2011/03/07/ie8-compatibility-settings.html</link>
		<comments>http://ofcss.com/2011/03/07/ie8-compatibility-settings.html#comments</comments>
		<pubDate>Mon, 07 Mar 2011 02:02:43 +0000</pubDate>
		<dc:creator>小李刀刀</dc:creator>
				<category><![CDATA[乱七八糟]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[技巧]]></category>
		<category><![CDATA[浏览器]]></category>
		<category><![CDATA[软件]]></category>

		<guid isPermaLink="false">http://ofcss.com/2011/03/07/ie8-compatibility-settings.html</guid>
		<description><![CDATA[从使用Win7测试版开始，经历了IE新版本使用中的不少兼容性问题，早期遇到的如看不了视频、论坛不能上传附件、不能使用网银、不能使用支付宝财付通等问题。经过一两年的使用下来，IE8已经成了我主要使用的浏览器之一（Chrome是我的默认浏览器、网银、支付宝、财付通及部分兼容性不好的网站用IE8），使用一直很顺畅。现在很多人开始升级IE9，希望会有更多的非前端开发人员的普通用户开始尝试IE8吧。这里把我安装完IE8（以及升级完IE9）之后必做的设置分享一下，希望能帮助一些刚开始使用IE8/9的朋友。 安装完IE8/9，第一次启动时会打开设置向导，设置不设置都可以。设置项中的基本项目说明一下： 启用选项卡浏览：这个必定启用，很多人不肯用IE而非要使用TT浏览器、遨游浏览器的主要原因是不用开启多个浏览器窗口，在一个窗口中就可以打开很多网页。实际上从IE7开始已经支持这个特性； 启用加速器：这个根据需要，我是全部禁止的，主要包括Bing地图、使用Bing搜索、使用Windows Live发送电子邮件、日志等功能，由于都有更佳的替代品，所以我不使用这些加速器，喜欢Bing的朋友可以启用。 SmartScreen筛选：针对仿冒网站的改良型保护功能，带有新的反恶意软件功能。原理是通过服务器端的特征对比识别你所访问的网站是否带有恶意软件、是否仿冒的钓鱼网站。我一直是禁用的，不过现在钓鱼网站很猖獗，如果你没办法确保自己能识别钓鱼网站，可以启用。具体效果我并不清楚，因为没有使用过。 搜索默认值：默认使用的是Bing搜索引擎，可以自由更改。IE7/8设置网站上的google默认地址是中国大陆谷歌的地址，由于google已经退出中国，每次搜索都会返回“查看xxxx在google.com.hk上的结果”，中转一次才能得到结果。这里可以使用自定义。首先打开google.com，搜索TEST，然后把结果页面的URL作为自定义搜索引擎的URL就可以了。 以上都是基本的设置，对浏览器的兼容性没有影响，下面说一下常用的兼容性设置： 关闭安全模式： 打开“Internet选项 -&#62; 安全”选项卡，取消勾选“启用安全模式”，这是造成IE8/9兼容性问题的主要原因。勾选之后，重新启动IE会在顶部出现安全模式已关闭的提示，点一下可以选择“不再提示”。 自定义级别： 打开“Internet选项 -&#62; 安全”选项卡（如上图），点击“自定义级别”，然后修改以下项目： “对未标记为可安全执行脚本的Active X控件初始化并执行脚本”：默认是“禁用”，改成“提示”（解决一些没有证书或证书的正规网站的ActiveX脚本无法提示和使用的问题）； “下载未签名的Active X控件”：默认是“禁用”，改成“提示”（同上）； “允许Scriptlet”：默认是“禁用，改成“提示”（纯粹为了向下兼容，现在使用Scriptlet的网站已经很少）； “在没有使用外部媒体播放机的网页上显示视频和动画”：默认是“禁用”，改成“启用”（解决部分网站的网页视频无法播放的问题）； “允许对剪贴板进行编程访问”：默认是“提示”，改成“启用”（解决每次在页面上点击复制、或点击“复制”按钮都会弹出提示框询问是否允许的问题）； “允许网站使用脚本窗口获得提示信息”：默认是“禁用”，改成“启用”（解决一些网站用js弹出框让你填信息的问题——比如云南信息港的聊天室）； “将文件上载到服务器时包含本地目录路径”：默认是“禁用”，改成“启用”（解决论坛不能上传附件的问题）； “显示混合内容”：默认是“提示”，改成启用（某些使用ssl的网页中包含有非ssl资源时就会提示，很麻烦）； &#160; 如果你是工行U盾的用户，那么在安装了工行U盾的驱动后，对浏览器安全性会做出修改，其中包括把我这里设置为“提示”的项目改成“启用”，大大增加了中流氓软件的几率，严重降低了IE安全性，实际上改成提示就可以了。当然，工行的网银很麻烦，经常是进了页面之后弹出ActiveX提示，等你同意之后，页面刷新又要你重新登录，登录之后又弹出提示……循环N次才可能正常使用，而工行U盾式的修改后，就可以正常使用。工行的行为属于典型的为了自己的方便损害用户的安全。能不用工行就别用了，招行的用户体验极佳。 相关日志2012-03-30 -- 禁用Firefox自带的元素查看工具2009-06-17 -- Dreamweaver中的正则表达式2011-03-20 -- 容易被误解的overflow:hidden2011-03-12 -- 自适应的多列图文混排改进2011-03-10 -- CSS边框实现&#8220;无图化&#8221;设计【译】2010-10-31 -- CSS技巧:如何避免IE6中的&#34;浮动下坠&#34;【译】2010-10-30 -- webkit中BFC元素临近浮动元素时的边距bug2010-10-10 -- 卸载360安全卫士造成网络异常问题解决方案2010-04-14 -- Visual Studio 2010 Ultimate RTM 版开放MSDN下载2009-06-20 -- 工行U盾在Windows 7 [...]]]></description>
			<content:encoded><![CDATA[<p><img style="margin: 0px 0px 10px 10px; display: inline; float: right;" src="http://file.wukangrui.com/attachments/2011/03/ie9-logo_thumb.png" alt="ie9-logo" />从使用Win7测试版开始，经历了IE新版本使用中的不少兼容性问题，早期遇到的如看不了视频、论坛不能上传附件、不能使用网银、不能使用支付宝财付通等问题。经过一两年的使用下来，IE8已经成了我主要使用的浏览器之一（Chrome是我的默认浏览器、网银、支付宝、财付通及部分兼容性不好的网站用IE8），使用一直很顺畅。现在很多人开始升级IE9，希望会有更多的非前端开发人员的普通用户开始尝试IE8吧。这里把我安装完IE8（以及升级完IE9）之后必做的设置分享一下，希望能帮助一些刚开始使用IE8/9的朋友。</p>
<p><span id="more-1065"></span></p>
<p>安装完IE8/9，第一次启动时会打开设置向导，设置不设置都可以。设置项中的基本项目说明一下：</p>
<ul>
<li>启用选项卡浏览：这个必定启用，很多人不肯用IE而非要使用TT浏览器、遨游浏览器的主要原因是不用开启多个浏览器窗口，在一个窗口中就可以打开很多网页。实际上从IE7开始已经支持这个特性；</li>
<li>启用加速器：这个根据需要，我是全部禁止的，主要包括Bing地图、使用Bing搜索、使用Windows Live发送电子邮件、日志等功能，由于都有更佳的替代品，所以我不使用这些加速器，喜欢Bing的朋友可以启用。</li>
<li>SmartScreen筛选：针对仿冒网站的改良型保护功能，带有新的反恶意软件功能。原理是通过服务器端的特征对比识别你所访问的网站是否带有恶意软件、是否仿冒的钓鱼网站。我一直是禁用的，不过现在钓鱼网站很猖獗，如果你没办法确保自己能识别钓鱼网站，可以启用。具体效果我并不清楚，因为没有使用过。</li>
<li>搜索默认值：默认使用的是Bing搜索引擎，可以自由更改。IE7/8设置网站上的google默认地址是中国大陆谷歌的地址，由于google已经退出中国，每次搜索都会返回“查看xxxx在google.com.hk上的结果”，中转一次才能得到结果。这里可以使用自定义。首先打开google.com，搜索TEST，然后把结果页面的URL作为自定义搜索引擎的URL就可以了。</li>
</ul>
<p>以上都是基本的设置，对浏览器的兼容性没有影响，下面说一下常用的兼容性设置：</p>
<h4>关闭安全模式：</h4>
<p>打开“Internet选项 -&gt; 安全”选项卡，取消勾选“启用安全模式”，这是造成IE8/9兼容性问题的主要原因。勾选之后，重新启动IE会在顶部出现安全模式已关闭的提示，点一下可以选择“不再提示”。</p>
<p><a href="http://file.wukangrui.com/attachments/2011/03/image.png"><img title="image" src="http://file.wukangrui.com/attachments/2011/03/image_thumb.png" border="0" alt="image" /></a></p>
<h4>自定义级别：</h4>
<p>打开“Internet选项 -&gt; 安全”选项卡（如上图），点击“自定义级别”，然后修改以下项目：</p>
<p>“<strong>对未标记为可安全执行脚本的Active X控件初始化并执行脚本</strong>”：默认是“禁用”，改成“<strong>提示</strong>”（解决一些没有证书或证书的正规网站的ActiveX脚本无法提示和使用的问题）；</p>
<p>“<strong>下载未签名的Active X控件</strong>”：默认是“禁用”，改成“<strong>提示</strong>”（同上）；</p>
<p>“<strong>允许Scriptlet</strong>”：默认是“禁用，改成“<strong>提示</strong>”（纯粹为了向下兼容，现在使用Scriptlet的网站已经很少）；</p>
<p>“<strong>在没有使用外部媒体播放机的网页上显示视频和动画</strong>”：默认是“禁用”，改成“<strong>启用</strong>”（解决部分网站的网页视频无法播放的问题）；</p>
<p>“<strong>允许对剪贴板进行编程访问</strong>”：默认是“提示”，改成“<strong>启用</strong>”（解决每次在页面上点击复制、或点击“复制”按钮都会弹出提示框询问是否允许的问题）；</p>
<p>“<strong>允许网站使用脚本窗口获得提示信息</strong>”：默认是“禁用”，改成“<strong>启用</strong>”（解决一些网站用js弹出框让你填信息的问题——比如云南信息港的聊天室）；</p>
<p>“<strong>将文件上载到服务器时包含本地目录路径</strong>”：默认是“禁用”，改成“<strong>启用</strong>”（解决论坛不能上传附件的问题）；</p>
<p>“<strong>显示混合内容</strong>”：默认是“<strong>提示</strong>”，改成启用（某些使用ssl的网页中包含有非ssl资源时就会提示，很麻烦）；</p>
<p>&nbsp;</p>
<p>如果你是工行U盾的用户，那么在安装了工行U盾的驱动后，对浏览器安全性会做出修改，其中包括把我这里设置为“提示”的项目改成“启用”，大大增加了中流氓软件的几率，严重降低了IE安全性，实际上改成提示就可以了。当然，工行的网银很麻烦，经常是进了页面之后弹出ActiveX提示，等你同意之后，页面刷新又要你重新登录，登录之后又弹出提示……循环N次才可能正常使用，而工行U盾式的修改后，就可以正常使用。工行的行为属于典型的为了自己的方便损害用户的安全。能不用工行就别用了，招行的用户体验极佳。</p>
<h3  class="related_post_title">相关日志</h3><ul class="related_post"><li>2012-03-30 -- <a href="http://ofcss.com/2012/03/30/disable-firefox-built-in-inspector.html" title="禁用Firefox自带的元素查看工具">禁用Firefox自带的元素查看工具</a></li><li>2009-06-17 -- <a href="http://ofcss.com/2009/06/17/regular-expression-in-dreamweaver.html" title="Dreamweaver中的正则表达式">Dreamweaver中的正则表达式</a></li><li>2011-03-20 -- <a href="http://ofcss.com/2011/03/20/misunderstood-of-overflow-hidden.html" title="容易被误解的overflow:hidden">容易被误解的overflow:hidden</a></li><li>2011-03-12 -- <a href="http://ofcss.com/2011/03/12/flexible-two-column-layout-reloaded.html" title="自适应的多列图文混排改进">自适应的多列图文混排改进</a></li><li>2011-03-10 -- <a href="http://ofcss.com/2011/03/10/css-border-tricks-with-collapsed-boxes-translation.html" title="CSS边框实现&ldquo;无图化&rdquo;设计【译】">CSS边框实现&ldquo;无图化&rdquo;设计【译】</a></li><li>2010-10-31 -- <a href="http://ofcss.com/2010/10/31/prevent-a-float-drop-in-ie6-translation.html" title="CSS技巧:如何避免IE6中的&quot;浮动下坠&quot;【译】">CSS技巧:如何避免IE6中的&quot;浮动下坠&quot;【译】</a></li><li>2010-10-30 -- <a href="http://ofcss.com/2010/10/30/bfc-element-margin-bug-in-webkit.html" title="webkit中BFC元素临近浮动元素时的边距bug">webkit中BFC元素临近浮动元素时的边距bug</a></li><li>2010-10-10 -- <a href="http://ofcss.com/2010/10/10/360-network-monitor-driver-issue.html" title="卸载360安全卫士造成网络异常问题解决方案">卸载360安全卫士造成网络异常问题解决方案</a></li><li>2010-04-14 -- <a href="http://ofcss.com/2010/04/14/vs2010-rtm-avaliable-on-msdn.html" title="Visual Studio 2010 Ultimate RTM 版开放MSDN下载">Visual Studio 2010 Ultimate RTM 版开放MSDN下载</a></li><li>2009-06-20 -- <a href="http://ofcss.com/2009/06/20/icbc-u-key-in-windows-7-x64.html" title="工行U盾在Windows 7 x64版下的使用">工行U盾在Windows 7 x64版下的使用</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://ofcss.com/2011/03/07/ie8-compatibility-settings.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 0.526 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2012-05-17 13:53:17 -->
<!-- Compression = gzip -->
