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

<channel>
	<title>裁纸刀下 &#187; 技巧</title>
	<atom:link href="http://ofcss.com/tags/tips/feed" rel="self" type="application/rss+xml" />
	<link>http://ofcss.com</link>
	<description>独立 自由 诚信 宽容 责任 平常心</description>
	<lastBuildDate>Thu, 19 Jan 2012 14:24:38 +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>容易被误解的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[<p>为了页面的健壮性，我们常常需要使用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 &#8230; <a href="http://ofcss.com/2011/03/20/misunderstood-of-overflow-hidden.html">Continue reading <span class="meta-nav">&#8594;</span></a></p>
]]></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's box. It affects the clipping of all of the element'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>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><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-10-10 -- <a href="http://ofcss.com/2010/10/10/360-network-monitor-driver-issue.html" title="卸载360安全卫士造成网络异常问题解决方案">卸载360安全卫士造成网络异常问题解决方案</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/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[<p>关于网页两栏、三栏的布局讨论由来已久，有各种各样上佳的方案。本文重点讨论的不是两栏、三栏布局这样通用的解决方案，而是一个专门针对两栏图文混排的特定需求的改进型方案。当然其中的原理也可以被应用于两栏布局甚至更多，那是你举一反三，不是本文讨论的重点。你也可以先看一下最终的示例页面。 开始之前，首先来看一下我们的需求： 一个通用的结构，可以放在不同宽度的布局列中； 该结构基本构成为左图（头像）右文（多种结构），左右宽度均不固定； 左栏宽度由内容最小宽度确定，右栏无论内容多少要占满容器剩余宽度； 右栏可能有定位元素超出自身范围，要予以显示，且右栏的内容不能环绕左栏； 右栏中可能会再包含浮动，因此右栏需要清除自身内容的浮动。 实际上针对类似需求，网上也有不少方案，建议参考阅读这篇长文以及涛哥简练实用的自适应的图文混排。根据需求，我们能确定出最基本的结构： &#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: &#8230; <a href="http://ofcss.com/2011/03/12/flexible-two-column-layout-reloaded.html">Continue reading <span class="meta-nav">&#8594;</span></a></p>
]]></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>3</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[<p>原文：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; &#8230; <a href="http://ofcss.com/2011/03/10/css-border-tricks-with-collapsed-boxes-translation.html">Continue reading <span class="meta-nav">&#8594;</span></a></p>
]]></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>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><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-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/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[<p>从使用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盾式的修改后，就可以正常使用。工行的行为属于典型的为了自己的方便损害用户的安全。能不用工行就别用了，招行的用户体验极佳。 相关日志2009-06-17 &#8212; Dreamweaver中的正则表达式2011-03-20 &#8212; 容易被误解的overflow:hidden2011-03-12 &#8212; 自适应的多列图文混排改进2011-03-10 &#8212; CSS边框实现&#8220;无图化&#8221;设计【译】2010-10-31 &#8212; CSS技巧:如何避免IE6中的&#34;浮动下坠&#34;【译】2010-10-30 &#8212; &#8230; <a href="http://ofcss.com/2011/03/07/ie8-compatibility-settings.html">Continue reading <span class="meta-nav">&#8594;</span></a></p>
]]></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>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><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/2011/03/07/ie8-compatibility-settings.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>卸载360安全卫士造成网络异常问题解决方案</title>
		<link>http://ofcss.com/2010/10/10/360-network-monitor-driver-issue.html</link>
		<comments>http://ofcss.com/2010/10/10/360-network-monitor-driver-issue.html#comments</comments>
		<pubDate>Sun, 10 Oct 2010 02:08:51 +0000</pubDate>
		<dc:creator>小李刀刀</dc:creator>
				<category><![CDATA[乱七八糟]]></category>
		<category><![CDATA[360]]></category>
		<category><![CDATA[技巧]]></category>
		<category><![CDATA[故障排除]]></category>
		<category><![CDATA[网络]]></category>
		<category><![CDATA[驱动]]></category>

		<guid isPermaLink="false">http://ofcss.com/2010/10/10/360-network-monitor-driver-issue.html</guid>
		<description><![CDATA[<p>最近360以“隐私保护器”发起对QQ的攻势以来，双方的支持者在网上也是热议不已。网易天涯等都发起调查，看如果必须二选一的话是卸QQ的人多还是卸360的人多。从调查来看貌似选择卸QQ的多一些。不过调查是一回事，动手是另一回事。另外也没听说谁卸载QQ之后会造成系统功能方面影响的。 不过我卸载360之后倒是遇到了几个非常“诡异”的问题——之所以加双引号是因为那是在没找到原因的时候确实觉得很奇怪——然后我通过墙外的google来搜索也没找到较明确的解决办法。所以在找到原因并顺利解决了问题之后我决定把方法写下来，以方便遇到和我相同或类似问题的朋友。 问题描述： 1. Internet Explorer和Chrome设置自动代理pac文件无效； 2. 访问QQ空间会偶尔遇到完全没样式，js数据加载不出来的问题； 3. 访问QQ校友的应用时，偶尔会出现域名无法解析的问题（cdn镜像域名无法解析）； 4. QQ旋风提示“获取积分失效”，由于无法获得积分信息和等级，所以和年费会员或会员VIP5以上身份挂钩的离线下载就莫名消失了。 以上就是这两三天困扰我的问题。我想尽了各种办法都没解决，但是后来通过一些工具软件逐步定位到是域名解析不成功造成。 解决过程： 既然定位到是域名解析导致的问题，当然要从域名解析着手。一开始以为是设置pac自动代理文件不成功造成的（因为基本上是chrome和ie出现问题，firefox出问题相当少），所以就完全去掉了pac自动代理，结果问题依旧。 然后我考虑可能真的是QQ相关业务的CDN镜像的域名的Name Server出问题了（chrome可以查看到是哪个Name Server解析哪个域名失败），如果是这样，那就只能等了。但是后来发现在公司的电脑上一切正常，只有在家里才会遇到这些问题。所以应该可以排除域名服务器出问题的可能了。 再回到自己电脑上找原因，我当时有两个怀疑：一是长城宽带的线路问题；二是我自己的本地Name Server设置问题。因为我一直是用OpenDNS的Name Server，不排除OpenDNS被墙或者像google一样“被抽风”的可能。所以我决定去掉OpenDNS，改为全自动获取，用长宽自己的Name Server。 就在打开本地连接属性的时候我一下子看到了本来应该已经被卸载的360 Network Monitor Driver: （发此文时我的已被卸载，图片借用网络上的） 360 Network Monitor Driver是360安全卫士和360防火墙用来拦截和监控网络连接的重要组件。一般如果有安装虚拟机的话（比如VMWare，VMWare Player，VitualBox，XPMode）也都会在本地连接增加相应的驱动或者协议，这是很正常的。 但是当时我的360已经卸载了，所以这个驱动留下来就不正常了，它已经没有存在的意义了。我当时忘了去看一下，360安装目录下的文件是否还有留下的，就直接卸载了这个驱动。 结果卸载完后，我的旋风离线下载功能立刻恢复正常。我很激动地重新去设置IE和Chrome的Pac自动代理文件，也正常了。再打开校友和空间的几个页面不断刷新坚持了五六分钟，没有再出现问题。 由此我觉得由于这个360残留驱动导致问题的可能性比较大，当然，没有理论知识和更具体的实验数据做支撑我也就不能下定论。只能说这是一个可能正确的判断和处理办法。 如果你也打算卸载掉360，或者和我一样已经卸载了，那么建议你应该去看看你的360 Network Monitor Driver是否也一起被卸载了。如果没有的话，还是自己动手卸载一下。主程序都卸载了，留下的这个驱动是肯定没有用的。 相关日志2011-03-20 &#8230; <a href="http://ofcss.com/2010/10/10/360-network-monitor-driver-issue.html">Continue reading <span class="meta-nav">&#8594;</span></a></p>
]]></description>
			<content:encoded><![CDATA[<p>最近360以“隐私保护器”发起对QQ的攻势以来，双方的支持者在网上也是热议不已。网易天涯等都发起调查，看如果必须二选一的话是卸QQ的人多还是卸360的人多。从调查来看貌似选择卸QQ的多一些。不过调查是一回事，动手是另一回事。另外也没听说谁卸载QQ之后会造成系统功能方面影响的。</p>
<p>不过我卸载360之后倒是遇到了几个非常“诡异”的问题——之所以加双引号是因为那是在没找到原因的时候确实觉得很奇怪——然后我通过墙外的google来搜索也没找到较明确的解决办法。所以在找到原因并顺利解决了问题之后我决定把方法写下来，以方便遇到和我相同或类似问题的朋友。</p>
<p>  <span id="more-965"></span>
<p>问题描述：</p>
<p>1. Internet Explorer和Chrome设置自动代理pac文件无效；</p>
<p>2. 访问QQ空间会偶尔遇到完全没样式，js数据加载不出来的问题；</p>
<p>3. 访问QQ校友的应用时，偶尔会出现域名无法解析的问题（cdn镜像域名无法解析）；</p>
<p>4. QQ旋风提示“获取积分失效”，由于无法获得积分信息和等级，所以和年费会员或会员VIP5以上身份挂钩的离线下载就莫名消失了。</p>
<p>以上就是这两三天困扰我的问题。我想尽了各种办法都没解决，但是后来通过一些工具软件逐步定位到是域名解析不成功造成。</p>
<p>解决过程：</p>
<p>既然定位到是域名解析导致的问题，当然要从域名解析着手。一开始以为是设置pac自动代理文件不成功造成的（因为基本上是chrome和ie出现问题，firefox出问题相当少），所以就完全去掉了pac自动代理，结果问题依旧。</p>
<p>然后我考虑可能真的是QQ相关业务的CDN镜像的域名的Name Server出问题了（chrome可以查看到是哪个Name Server解析哪个域名失败），如果是这样，那就只能等了。但是后来发现在公司的电脑上一切正常，只有在家里才会遇到这些问题。所以应该可以排除域名服务器出问题的可能了。</p>
<p>再回到自己电脑上找原因，我当时有两个怀疑：一是长城宽带的线路问题；二是我自己的本地Name Server设置问题。因为我一直是用OpenDNS的Name Server，不排除OpenDNS被墙或者像google一样“被抽风”的可能。所以我决定去掉OpenDNS，改为全自动获取，用长宽自己的Name Server。</p>
<p>就在打开本地连接属性的时候我一下子看到了本来应该已经被卸载的360 Network Monitor Driver:</p>
<p align="center"><a href="http://file.wukangrui.com/attachments/2010/10/360networkmonitordriver.jpg"><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="360-network-monitor-driver" border="0" alt="360-network-monitor-driver" src="http://file.wukangrui.com/attachments/2010/10/360networkmonitordriver_thumb.jpg" width="403" height="446" /></a>     <br />（发此文时我的已被卸载，图片借用网络上的）</p>
<p align="left">360 Network Monitor Driver是360安全卫士和360防火墙用来拦截和监控网络连接的重要组件。一般如果有安装虚拟机的话（比如VMWare，VMWare Player，VitualBox，XPMode）也都会在本地连接增加相应的驱动或者协议，这是很正常的。</p>
<p align="left">但是当时我的360已经卸载了，所以这个驱动留下来就不正常了，它已经没有存在的意义了。我当时忘了去看一下，360安装目录下的文件是否还有留下的，就直接卸载了这个驱动。</p>
<p align="left">结果卸载完后，我的旋风离线下载功能立刻恢复正常。我很激动地重新去设置IE和Chrome的Pac自动代理文件，也正常了。再打开校友和空间的几个页面不断刷新坚持了五六分钟，没有再出现问题。</p>
<p align="left">由此我觉得由于这个360残留驱动导致问题的可能性比较大，当然，没有理论知识和更具体的实验数据做支撑我也就不能下定论。只能说这是一个可能正确的判断和处理办法。</p>
<p align="left">如果你也打算卸载掉360，或者和我一样已经卸载了，那么建议你应该去看看你的360 Network Monitor Driver是否也一起被卸载了。如果没有的话，还是自己动手卸载一下。主程序都卸载了，留下的这个驱动是肯定没有用的。</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-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-07 -- <a href="http://ofcss.com/2011/03/07/ie8-compatibility-settings.html" title="IE8/9兼容性设置">IE8/9兼容性设置</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></ul>]]></content:encoded>
			<wfw:commentRss>http://ofcss.com/2010/10/10/360-network-monitor-driver-issue.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>工行U盾在Windows 7 x64版下的使用</title>
		<link>http://ofcss.com/2009/06/20/icbc-u-key-in-windows-7-x64.html</link>
		<comments>http://ofcss.com/2009/06/20/icbc-u-key-in-windows-7-x64.html#comments</comments>
		<pubDate>Fri, 19 Jun 2009 19:32:24 +0000</pubDate>
		<dc:creator>小李刀刀</dc:creator>
				<category><![CDATA[乱七八糟]]></category>
		<category><![CDATA[Windows 7]]></category>
		<category><![CDATA[技巧]]></category>
		<category><![CDATA[操作系统]]></category>

		<guid isPermaLink="false">http://wukangrui.net/2009/06/20/icbc-u-key-in-windows-7-x64.html</guid>
		<description><![CDATA[<p>第一次遇到工行U盾的问题是在Windows XP SP3系统上，同事因为用不了U盾而不愿意安装SP3集成版，后来我通过从网上银行下载驱动而不从光盘里安装，问题解决了。现在在Windows 7 x64下又遇到了工行U盾的问题，这次不是驱动装不了或者识别不了U盾的问题了，而是一切似乎都正常但是却不能下载证书……我是先用了Windows 7 x64很久，才去领的U盾。折腾了半个多小时以后，成功给同事转了5000块钱。以下是具体方法： 问题的根源不在于驱动程序，从我上面描述的情形就能看出来，关键在于不能下载证书，我觉得很有可能是IE 8 兼容性的问题。 先不管问题是什么吧，暂时最方便快捷的方法是： 1、在另外一台电脑（非 Windows 7 x64 版操作系统，最好是 Windows XP 或者 Windows 2003， Vista也可以）上，安装工行U盾的驱动和软件； 2、装完以后在该电脑上插上U盾，登陆网上银行，按照提示安装证书。建议顺便把U盾的密码也设置好； 3、回到 Windows 7 x64 版所在的电脑，安装U盾驱动和软件； 4、装完以后，插入U盾，登陆网上银行，你会发现已经可以正常使用了。 以后再到任意其它的 Windows 7 x64 系统的电脑上，只要安装了工行U盾的驱动，都可以正常使用U盾。 说点题外话，在 Windows 7 x64 系统下，如果只是浏览普通网页（比如看新闻、逛论坛），可以使用 Internet &#8230; <a href="http://ofcss.com/2009/06/20/icbc-u-key-in-windows-7-x64.html">Continue reading <span class="meta-nav">&#8594;</span></a></p>
]]></description>
			<content:encoded><![CDATA[<p>第一次遇到工行U盾的问题是在Windows XP SP3系统上，同事因为用不了U盾而不愿意安装SP3集成版，后来我通过从网上银行下载驱动而不从光盘里安装，问题解决了。现在在Windows 7 x64下又遇到了工行U盾的问题，这次不是驱动装不了或者识别不了U盾的问题了，而是一切似乎都正常但是却不能下载证书……我是先用了Windows 7 x64很久，才去领的U盾。折腾了半个多小时以后，成功给同事转了5000块钱。以下是具体方法：</p>
<p> <span id="more-759"></span>
<p>问题的根源不在于驱动程序，从我上面描述的情形就能看出来，关键在于不能下载证书，我觉得很有可能是IE 8 兼容性的问题。</p>
<p>先不管问题是什么吧，暂时最方便快捷的方法是：</p>
<p>1、在另外一台电脑（非 Windows 7 x64 版操作系统，最好是 Windows XP 或者 Windows 2003， Vista也可以）上，安装工行U盾的驱动和软件；</p>
<p>2、装完以后在该电脑上插上U盾，登陆网上银行，按照提示安装证书。建议顺便把U盾的密码也设置好；</p>
<p>3、回到 Windows 7 x64 版所在的电脑，安装U盾驱动和软件；</p>
<p>4、装完以后，插入U盾，登陆网上银行，你会发现已经可以正常使用了。</p>
<p>以后再到任意其它的 Windows 7 x64 系统的电脑上，只要安装了工行U盾的驱动，都可以正常使用U盾。</p>
<p>说点题外话，在 Windows 7 x64 系统下，如果只是浏览普通网页（比如看新闻、逛论坛），可以使用 Internet Explorer 8.0 x64版，因为连Flash Player在内的绝大部分合法有签名的ActivX插件和IE控件都还不能在64位IE下正常运行，则没有签名的流氓软件、木马也一样很难兼容，因此安全性得到提高；</p>
<p>但是如果要使用网页多媒体或者一些功能较强的web界面的话，最好还是用32位的IE 8.0（开始菜单、桌面和快捷方式上的默认IE就是32位的），这样能更好的兼容绝大部分网站。</p>
<p>下次我把使用Windows 7 x64以来遇到的和IE相关的问题都整理一下，单独发一篇。</p>
<h3  class="related_post_title">相关日志</h3><ul class="related_post"><li>2009-06-05 -- <a href="http://ofcss.com/2009/06/05/uncharted-waters-4-in-windows7-x64.html" title="Windows 7 兼容性展示：大航海时代4">Windows 7 兼容性展示：大航海时代4</a></li><li>2009-05-16 -- <a href="http://ofcss.com/2009/05/16/window7-beta-dvd-from-microsoft.html" title="微软发放的Windows 7测试版光盘">微软发放的Windows 7测试版光盘</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>2011-03-07 -- <a href="http://ofcss.com/2011/03/07/ie8-compatibility-settings.html" title="IE8/9兼容性设置">IE8/9兼容性设置</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-17 -- <a href="http://ofcss.com/2009/06/17/regular-expression-in-dreamweaver.html" title="Dreamweaver中的正则表达式">Dreamweaver中的正则表达式</a></li><li>2009-06-08 -- <a href="http://ofcss.com/2009/06/08/using-fastcgi-to-host-php-applications-on-iis-7x.html" title="在 IIS 7.x 中用 FastCGI 运行 PHP">在 IIS 7.x 中用 FastCGI 运行 PHP</a></li><li>2009-05-24 -- <a href="http://ofcss.com/2009/05/24/sql-express-2008-x64-integration-with-visual-studio-2008-sp1.html" title="Visual Studio 2008 搭配64位SQL Server的问题解决方案">Visual Studio 2008 搭配64位SQL Server的问题解决方案</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://ofcss.com/2009/06/20/icbc-u-key-in-windows-7-x64.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Dreamweaver中的正则表达式</title>
		<link>http://ofcss.com/2009/06/17/regular-expression-in-dreamweaver.html</link>
		<comments>http://ofcss.com/2009/06/17/regular-expression-in-dreamweaver.html#comments</comments>
		<pubDate>Tue, 16 Jun 2009 16:20:12 +0000</pubDate>
		<dc:creator>小李刀刀</dc:creator>
				<category><![CDATA[所谓技术]]></category>
		<category><![CDATA[Dreamweaver]]></category>
		<category><![CDATA[技巧]]></category>
		<category><![CDATA[软件]]></category>

		<guid isPermaLink="false">http://wukangrui.net/2009/06/17/dreamweaver%e4%b8%ad%e7%9a%84%e6%ad%a3%e5%88%99%e8%a1%a8%e8%be%be%e5%bc%8f.html</guid>
		<description><![CDATA[<p>编辑源代码的时候，经常会用到正则表达式（特别是清理别人的代码的时候）来搜索替换。但是在我用做网页设计的主工具的 Dreamweaver&#160; 里，我却一直用不好它的正则表达式，不管是查找还是替换，经常都是折腾半天把我搞郁闷了。 今天在 百度知道 上给人回答问题的时候，遇到一个要做复杂替换的问题，而且提问者明确说是在 Dreamweaver 里面做。我终于不懒了一次，上 adobe 的网站上查了一下。把 Dreamweaver 里面的正则表达式部分好好看了一遍。全部内容如下： 下表列出了在正则表达式中使用的特殊字符、其含义和用法示例。若要搜索包含该表中某一特殊字符的文本，请在特殊字符前面附加一个反斜杠，令其转义。例如，若要在 some conditions apply* 短语中搜索实际的星号，您的搜索模式应类似于：apply\*。如果您没有令星号转义，您将找到“apply”的所有匹配项（以及“appl”、“applyy”和“applyyy”的所有匹配项），而不只是后面跟有星号的那些匹配项。 字符 匹配 示例 ^ 输入或行的起始部分。 ^T 与“This good earth”中的“T”匹配，但是与“Uncle Tom’s Cabin”无匹配内容 $ 输入或行的结尾部分。 h$ 与“teach”中的“h”匹配，但是与“teacher”无匹配内容 * 0 个或多个前置字符。 um* 与“rum”中的“um”、“yummy”中的“umm”和“huge”中的“u”匹配 + 1 个或多个前置字符。 &#8230; <a href="http://ofcss.com/2009/06/17/regular-expression-in-dreamweaver.html">Continue reading <span class="meta-nav">&#8594;</span></a></p>
]]></description>
			<content:encoded><![CDATA[<p>编辑源代码的时候，经常会用到正则表达式（特别是清理别人的代码的时候）来搜索替换。但是在我用做网页设计的主工具的 <a title="Dreamweaver 产品主页" href="http://www.adobe.com/products/dreamweaver/" rel="nofollow" target="_blank">Dreamweaver</a>&#160; 里，我却一直用不好它的正则表达式，不管是查找还是替换，经常都是折腾半天把我搞郁闷了。</p>
<p> <span id="more-680"></span>
<p>今天在 <a title="百度一下，你就知道" href="http://zhidao.baidu.com/" rel="nofollow" target="_blank">百度知道</a> 上给人回答问题的时候，遇到一个要做复杂替换的问题，而且提问者明确说是在 <a title="Dreamweaver 产品主页" href="http://www.adobe.com/products/dreamweaver/" rel="nofollow" target="_blank">Dreamweaver</a> 里面做。我终于不懒了一次，上 <a title="Adobe主页" href="http://www.adobe.com/" rel="nofollow" target="_blank">adobe</a> 的网站上查了一下。把 <a title="Dreamweaver 产品主页" href="http://www.adobe.com/products/dreamweaver/" rel="nofollow" target="_blank">Dreamweaver</a> 里面的正则表达式部分好好看了一遍。全部内容如下：</p>
<p>下表列出了在正则表达式中使用的特殊字符、其含义和用法示例。若要搜索包含该表中某一特殊字符的文本，请在特殊字符前面附加一个反斜杠，令其转义。例如，若要在 <samp class="codeph">some conditions apply*</samp> 短语中搜索实际的星号，您的搜索模式应类似于：<dfn class="term">apply\*</dfn>。如果您没有令星号转义，您将找到“apply”的所有匹配项（以及“appl”、“applyy”和“applyyy”的所有匹配项），而不只是后面跟有星号的那些匹配项。</p>
<div class="tablenoborder">
<table border="1" cellspacing="0" cellpadding="4">
<thead align="left">
<tr>
<th id="d17e26803" valign="top">
<p>字符</p>
</th>
<th id="d17e26806" valign="top">
<p>匹配</p>
</th>
<th id="d17e26809" valign="top">
<p>示例</p>
</th>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" headers="d17e26803 ">
<p>^</p>
</td>
<td valign="top" headers="d17e26806 ">
<p>输入或行的起始部分。</p>
</td>
<td valign="top" headers="d17e26809 ">
<p><samp class="codeph">^T</samp> 与“This good earth”中的“T”匹配，但是与“Uncle Tom’s Cabin”无匹配内容</p>
</td>
</tr>
<tr>
<td valign="top" headers="d17e26803 ">
<p>$</p>
</td>
<td valign="top" headers="d17e26806 ">
<p>输入或行的结尾部分。</p>
</td>
<td valign="top" headers="d17e26809 ">
<p><samp class="codeph">h$</samp> 与“teach”中的“h”匹配，但是与“teacher”无匹配内容</p>
</td>
</tr>
<tr>
<td valign="top" headers="d17e26803 ">
<p>*</p>
</td>
<td valign="top" headers="d17e26806 ">
<p>0 个或多个前置字符。</p>
</td>
<td valign="top" headers="d17e26809 ">
<p><samp class="codeph">um*</samp> 与“rum”中的“um”、“yummy”中的“umm”和“huge”中的“u”匹配</p>
</td>
</tr>
<tr>
<td valign="top" headers="d17e26803 ">
<p>+</p>
</td>
<td valign="top" headers="d17e26806 ">
<p>1 个或多个前置字符。</p>
</td>
<td valign="top" headers="d17e26809 ">
<p><samp class="codeph">um+</samp> 与“rum”中的“um”和“yummy”中的“umm”匹配，但是和“huge”无匹配内容</p>
</td>
</tr>
<tr>
<td valign="top" headers="d17e26803 ">
<p>?</p>
</td>
<td valign="top" headers="d17e26806 ">
<p>前置字符最多出现一次（即，指示前置字符是可选的）。</p>
</td>
<td valign="top" headers="d17e26809 ">
<p><samp class="codeph">st?on</samp> 与“Johnson”中的“son”和“Johnston”中的“ston”匹配，但是与“Appleton”或“tension”无匹配内容</p>
</td>
</tr>
<tr>
<td valign="top" headers="d17e26803 ">
<p>.</p>
</td>
<td valign="top" headers="d17e26806 ">
<p>除换行符外的任何单字符。</p>
</td>
<td valign="top" headers="d17e26809 ">
<p><samp class="codeph">.an</samp> 与“bran muffins can be tasty”短语中的“ran”和“can”匹配</p>
</td>
</tr>
<tr>
<td valign="top" headers="d17e26803 ">
<p>x|y</p>
</td>
<td valign="top" headers="d17e26806 ">
<p>x 或 y。</p>
</td>
<td valign="top" headers="d17e26809 ">
<p><samp class="codeph">FF0000|0000FF</samp> 与 <samp class="codeph">bgcolor=&quot;#FF0000&quot;</samp> 中的“FF0000”和 <samp class="codeph">font color=&quot;#0000FF&quot;</samp> 中的“0000FF”匹配</p>
</td>
</tr>
<tr>
<td valign="top" headers="d17e26803 ">
<p>{n}</p>
</td>
<td valign="top" headers="d17e26806 ">
<p>恰好 n 个前置字符。</p>
</td>
<td valign="top" headers="d17e26809 ">
<p><samp class="codeph">o{2}</samp> 与“loom”中的“oo”和“mooooo”中的前两个字母 o 匹配，但是与“money”无匹配内容</p>
</td>
</tr>
<tr>
<td valign="top" headers="d17e26803 ">
<p>{n,m}</p>
</td>
<td valign="top" headers="d17e26806 ">
<p>至少 n 个、至多 m 个前置字符。</p>
</td>
<td valign="top" headers="d17e26809 ">
<p><samp class="codeph">F{2,4}</samp> 与“#FF0000”中的“FF”和“#FFFFFF”中的前四个字母 F 匹配</p>
</td>
</tr>
<tr>
<td valign="top" headers="d17e26803 ">
<p>[abc]</p>
</td>
<td valign="top" headers="d17e26806 ">
<p>用括号括起来的字符中的任何一个字符。用连字符指定某一范围的字符（例如，[a-f] 等效于 [abcdef]）。 </p>
</td>
<td valign="top" headers="d17e26809 ">
<p><samp class="codeph">[e-g]</samp> 与“bed”中的“e”、“folly”中的“f”和“guard”中的“g”匹配</p>
</td>
</tr>
<tr>
<td valign="top" headers="d17e26803 ">
<p>[^abc]</p>
</td>
<td valign="top" headers="d17e26806 ">
<p>未在括号中括起来的任何字符。用连字符指定某一范围的字符（例如，[^a-f] 等效于[^abcdef]）。</p>
</td>
<td valign="top" headers="d17e26809 ">
<p><samp class="codeph">[^aeiou]</samp> 最初与“orange”中的“r”、“book”中的“b”和“eek!”中的“k”匹配</p>
</td>
</tr>
<tr>
<td valign="top" headers="d17e26803 ">
<p>\b</p>
</td>
<td valign="top" headers="d17e26806 ">
<p>词边界（例如空格或回车符）。</p>
</td>
<td valign="top" headers="d17e26809 ">
<p><samp class="codeph">\bb</samp> 与“book”中的“b”匹配，但是与“goober”或“snob”无匹配内容</p>
</td>
</tr>
<tr>
<td valign="top" headers="d17e26803 ">
<p>\B</p>
</td>
<td valign="top" headers="d17e26806 ">
<p>词边界之外的任何内容。</p>
</td>
<td valign="top" headers="d17e26809 ">
<p><samp class="codeph">\Bb</samp> 与“goober”中的“b”匹配，但是与“book”无匹配内容</p>
</td>
</tr>
<tr>
<td valign="top" headers="d17e26803 ">
<p>\d</p>
</td>
<td valign="top" headers="d17e26806 ">
<p>任何数字字符。等效于 [0-9]。</p>
</td>
<td valign="top" headers="d17e26809 ">
<p><samp class="codeph">\d</samp> 与“C3PO”中的“3”和“apartment 2G”中的“2”匹配</p>
</td>
</tr>
<tr>
<td valign="top" headers="d17e26803 ">
<p>\D</p>
</td>
<td valign="top" headers="d17e26806 ">
<p>任何非数字字符。等效于 [^0-9]。</p>
</td>
<td valign="top" headers="d17e26809 ">
<p><samp class="codeph">\D</samp> 与“900S”中的“S”和“Q45”中的“Q”匹配</p>
</td>
</tr>
<tr>
<td valign="top" headers="d17e26803 ">
<p>\f</p>
</td>
<td valign="top" headers="d17e26806 ">
<p>换页符。</p>
</td>
<td valign="top" headers="d17e26809 ">&#160;</td>
</tr>
<tr>
<td valign="top" headers="d17e26803 ">
<p>\n</p>
</td>
<td valign="top" headers="d17e26806 ">
<p>换行符。</p>
</td>
<td valign="top" headers="d17e26809 ">&#160;</td>
</tr>
<tr>
<td valign="top" headers="d17e26803 ">
<p>\r</p>
</td>
<td valign="top" headers="d17e26806 ">
<p>回车符。</p>
</td>
<td valign="top" headers="d17e26809 ">&#160;</td>
</tr>
<tr>
<td valign="top" headers="d17e26803 ">
<p>\s</p>
</td>
<td valign="top" headers="d17e26806 ">
<p>任何单个空白字符，包括空格、制表符、换页符或换行符。</p>
</td>
<td valign="top" headers="d17e26809 ">
<p><samp class="codeph">\sbook</samp> 与“blue book”中的“book”匹配，但是与“notebook”无匹配内容</p>
</td>
</tr>
<tr>
<td valign="top" headers="d17e26803 ">
<p>\S</p>
</td>
<td valign="top" headers="d17e26806 ">
<p>任何单个非空白字符。</p>
</td>
<td valign="top" headers="d17e26809 ">
<p><samp class="codeph">\Sbook</samp> 与“notebook”中的“book”匹配，但是与“blue book”无匹配内容</p>
</td>
</tr>
<tr>
<td valign="top" headers="d17e26803 ">
<p>\t</p>
</td>
<td valign="top" headers="d17e26806 ">
<p>制表符。</p>
</td>
<td valign="top" headers="d17e26809 ">&#160;</td>
</tr>
<tr>
<td valign="top" headers="d17e26803 ">
<p>\w</p>
</td>
<td valign="top" headers="d17e26806 ">
<p>任何字母数字字符，包括下划线。等效于 [A-Za-z0-9_]。</p>
</td>
<td valign="top" headers="d17e26809 ">
<p>b\w* 与“the barking dog”中的“barking”以及“the big black dog”中的“big”和“black”匹配</p>
</td>
</tr>
<tr>
<td valign="top" headers="d17e26803 ">
<p>\W</p>
</td>
<td valign="top" headers="d17e26806 ">
<p>任何非字母数字字符。等效于 [^A-Za-z0-9_]。</p>
</td>
<td valign="top" headers="d17e26809 ">
<p>\W 与“Jake&amp;Mattie”中的“&amp;”和“100%”中的“%”匹配</p>
</td>
</tr>
<tr>
<td valign="top" headers="d17e26803 ">
<p>Ctrl+Enter 或 Shift+Enter (Windows)、或者 Ctrl+Return 或 Shift+Return 或 Command+ Return (Macintosh)</p>
</td>
<td valign="top" headers="d17e26806 ">
<p>回车符。确保如果没有使用正则表达式，则在搜索时取消对“忽略空白差别”的选择。请注意，该字符是特定字符，而不是一般意义上的换行符；例如，它并不是 <samp class="codeph">&lt;br&gt;</samp> 标签或 <samp class="codeph">&lt;p&gt;</samp> 标签。回车符在“设计”视图中显示为空格而不是换行符。</p>
</td>
<td valign="top" headers="d17e26809 ">&#160;</td>
</tr>
</tbody>
</table></div>
<p>使用括号在正则表达式内分隔出以后要引用的分组。然后在“替换”域中使用 $1、$2、$3 等来引用第一个、第二个、第三个和更后面的括号分组。</p>
<div class="note"><span class="notetitle">注： </span>在“查找内容”框中使用 \1、\2、\3 等（而不是 $1、$2、$3）来引用正则表达式中更早的括号分组。</div>
<p>例如，通过搜索 (\d+)\/(\d+)\/(\d+) 并用 $2/$1/$3 替换它，可以在由斜杠分隔的日期中交换日和月（因此可以在美国样式日期和欧洲样式日期之间进行转换）。</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-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><li>2009-04-16 -- <a href="http://ofcss.com/2009/04/16/tencent-qq-2009-rtm-released.html" title="QQ2009正式版发布">QQ2009正式版发布</a></li><li>2008-06-09 -- <a href="http://ofcss.com/2008/06/09/download-firefox3-to-make-world-record.html" title="参加火狐3下载日，帮助Firefox创造世界记录！">参加火狐3下载日，帮助Firefox创造世界记录！</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></ul>]]></content:encoded>
			<wfw:commentRss>http://ofcss.com/2009/06/17/regular-expression-in-dreamweaver.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

