<?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>Bolo的博客 &#187; CSS</title>
	<atom:link href="http://blog.imbolo.com/tag/css/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.imbolo.com</link>
	<description>一个设计爱好者杂七杂八的博客</description>
	<lastBuildDate>Wed, 23 Nov 2011 16:19:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>CSS 屏蔽 Webkit 浏览器 input 高亮和 textarea 缩放</title>
		<link>http://blog.imbolo.com/css-turn-off-webkit-browsers-input-highlight-and-textarea-resize/</link>
		<comments>http://blog.imbolo.com/css-turn-off-webkit-browsers-input-highlight-and-textarea-resize/#comments</comments>
		<pubDate>Thu, 22 Jul 2010 06:03:02 +0000</pubDate>
		<dc:creator>bolo</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[WEB]]></category>
		<category><![CDATA[Webkit]]></category>

		<guid isPermaLink="false">http://blog.imbolo.com/?p=1918</guid>
		<description><![CDATA[采用 Webkit 核心的浏览器主要有苹果的 Safari 和 Google 的 Chrome，Webkit 核心有着良好的性能，并且在某些细节对用户非常友好，页面输入框（input 标签）聚焦高亮和文本框（textarea 标签）缩放功能就是其中的两个对用户非常友好的设计。可是这两个设计在对用户友好的同时，却会对页面设计产生影响。]]></description>
			<content:encoded><![CDATA[<p><strong>采用 Webkit 核心的浏览器主要有苹果的 Safari 和 Google 的 Chrome</strong>，Webkit 核心有着良好的性能，并且在某些细节对用户非常友好，页面输入框（input 标签）聚焦高亮和文本框（textarea 标签）缩放功能就是其中的两个对用户非常友好的设计。可是这两个设计在对用户友好的同时，却会对页面设计产生影响。</p>
<h3>CSS 屏蔽 Webkit 输入框高亮</h3>
<p>下面是默认情况下，Webkit 浏览器里输入框获取焦点时的情况。<br />
<img src="http://i1001.photobucket.com/albums/af131/bolo1988/1-4.png" alt="Webkit input 聚焦高亮" /><br />
我们可以发现 Webkit 对输入框的高亮已经使页面呈现出的样式和设计样式不同了。如果<strong>你的网站已经对输入框获取焦点时定义了特殊的样式</strong>，不妨把 Webkit 这个多此一举的功能屏蔽掉。加上下面的 CSS 就可以轻松地把高亮去掉。<span id="more-1918"></span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="css" style="font-family:monospace;">input <span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">outline</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">none</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
<span style="color: #808080; font-style: italic;">/* 屏蔽文本框高亮 */</span>
textarea <span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">outline</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">none</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<h3>CSS 屏蔽 Webkit 文本框缩放</h3>
<p>Webkit 的文本框缩放功能原本是方便用户进行大量文本输入而设计的，但有时果度的缩放会造成下图的效果，打乱了页面的布局。如果你的网站已经为用户提供了足够大的空间让用户进行输入，那么你可以屏蔽这个功能，用 CSS 有两种方法。<br />
<img src="http://i1001.photobucket.com/albums/af131/bolo1988/2-4.png" alt="CSS 屏蔽 Webkit 文本框缩放" /></p>
<h5>CSS 2.1 的方法：</h5>
<p>原理：限制文本框的最大宽度和最大高度，使其和设计的大小一样。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="css" style="font-family:monospace;">textarea <span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span> <span style="color: #933;">400px</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">max-width</span><span style="color: #00AA00;">:</span> <span style="color: #933;">400px</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span> <span style="color: #933;">400px</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">max-height</span><span style="color: #00AA00;">:</span> <span style="color: #933;">400px</span><span style="color: #00AA00;">;</span></pre></td></tr></table></div>

<h5>CSS3 的方法：</h5>
<p>通过 resize 属性禁止对元素进行缩放，因为 Chrome 对 CSS3 支持良好，因此推荐使用这个方法。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="css" style="font-family:monospace;">texearea <span style="color: #00AA00;">&#123;</span>
	resize<span style="color: #00AA00;">:</span> <span style="color: #993333;">none</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<p  class="related_post_title">Related Posts</p><ul class="related_post"><li><a href="http://blog.imbolo.com/center-multiple-divs-with-css/" title="CSS 多个子框架居中">CSS 多个子框架居中</a></li><li><a href="http://blog.imbolo.com/the-css3-flexible-box-model/" title="CSS3 灵活的盒子模型(Flexible Box Module) &#8211; 1">CSS3 灵活的盒子模型(Flexible Box Module) &#8211; 1</a></li><li><a href="http://blog.imbolo.com/web-rounded-conner-choice/" title="网页圆角的取舍">网页圆角的取舍</a></li><li><a href="http://blog.imbolo.com/10-css-snippets-to-save-time/" title="10个节约开发时间的CSS技巧">10个节约开发时间的CSS技巧</a></li><li><a href="http://blog.imbolo.com/css-beveled-corners/" title="纯CSS打造斜角">纯CSS打造斜角</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://blog.imbolo.com/css-turn-off-webkit-browsers-input-highlight-and-textarea-resize/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>jQuery选择器详解（一）</title>
		<link>http://blog.imbolo.com/jquery-selectors/</link>
		<comments>http://blog.imbolo.com/jquery-selectors/#comments</comments>
		<pubDate>Sun, 18 Jul 2010 01:57:18 +0000</pubDate>
		<dc:creator>bolo</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://blog.imbolo.com/?p=1890</guid>
		<description><![CDATA[jQuery 的选择器借鉴了大量 CSS1 ~ CSS3 标准的特点，并且整理成一个强大的对象选择工具集。]]></description>
			<content:encoded><![CDATA[<p>jQuery 的选择器借鉴了大量 CSS1 ~ CSS3 标准的特点，并且整理成一个强大的对象选择工具集。但要注意的是如果你的对象名里包含 “<em>#;&#038;,.+*~&#8217;:&#8221;!^$[]()=>|/</em>” 这些元字符时，你必须用 “<em>\\</em>” 进行转义。例如你要选择文档里包含 “<em>name=&#8221;names[]&#8220;</em>” 的 input 元素时，在编写过滤规则时你必须先对 “<em>[]</em>” 进行转义，所以我们应该这样定义选择器：“<em>$(&#8220;input[name=names\\[\\]]&#8221;)</em>”。<span id="more-1890"></span></p>
<h3>泛选择器（*）</h3>
<p>在 jQuery 选择器里，“*” 号是一个通配符，表示所有。例如：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;*&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">css</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;border&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;3px solid red&quot;</span><span style="color: #009900;">&#41;</span></pre></td></tr></table></div>

<p>上面的一句表示遍历页面里的所有容器，并且全部赋予一个线宽为 3px 的红色实线边框。还有一种情况是我们只需要对某些容器里的内容进行操作，我们可以这样写：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#test&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">find</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;*&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">css</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;border&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;3px solid red&quot;</span><span style="color: #009900;">&#41;</span></pre></td></tr></table></div>

<p>上一句只对 ID 为 test 的容器里的子容器产生效果，为它们加上线宽为 3px 的红色实现边框。</p>
<h3>:animated 选择器</h3>
<p>:animated 选择器是用来选择当前执行 jQuery 动画的元素的，严格来说是一个特征过滤器。例如：在空 HTML 文档里建一些 Div ，其中一个 ID 为 mover ，然后编写以下的 jQuery 语句</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#mover&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">slideToggle</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;slow&quot;</span><span style="color: #339933;">,</span> animateIt<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;div:animated&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">toggleClass</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;colored&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>上面的代码执行后将先找到 ID 为 mover 的元素，并不断地进行展开和收缩的动画。然后浏览器遍历页面里所有的 Div 标签，如果该 Div （在这个例子里也就是 ID 为 mover 的 Div 了）正在执行动画的话，jQuery 将为这个 Div 加上 class=&#8221;colored&#8221;。具体的 Demo 可以看<a href="http://api.jquery.com/animated-selector/">这个页面</a>。</p>
<h3>属性选择器</h3>
<p>jQuery 的属性选择器是其所有选择器最强大的一个，也是最灵活复杂的，具体情况还可以继续进行细分。</p>
<h4>属性字头选择器（Attribute Contains Prefix Selector）</h4>
<p>jQuery 属性字头选择器的使用格式是 <strong>jQuery(&#8216;[attribute|=value]&#8216;)</strong> ，例如 <strong>jQuery(&#8216;[herflang|=en]&#8216;)</strong> 这句代码执行时将会选择文档中所有含有 herflang 属性，并且 herflang 的值以 “en” 开头的元素，即使 “en” 后面紧跟着连字符 “-” 也能进行选择。</p>
<h4>属性开头选择器（Attribute Starts With Selector）</h4>
<p><strong>jQuery(&#8216;[attribute^=value]&#8216;)</strong> ，用于选择属性的值以某个字符串开头的元素，但和 <strong>jQuery(&#8216;[attribute|=value]&#8216;)</strong> 的区别是，如果 value 的后面是一个连字符的话，这个元素不会被选择。例如 <strong>jQuery(&#8216;[rel^=no]&#8216;)</strong> 将会选择所有 rel 的值以 “no” 开头的元素，但类似于 rel=&#8221;no-****&#8221; 的元素不会被选择。</p>
<h4>属性包含选择器（Attribute Contains Selector）</h4>
<p>基本使用方法为 <strong>jQuery(&#8216;[attribute*=value]&#8216;)</strong>，例如 <strong>jQuery(&#8216;[rel*=no]&#8216;)</strong>，表示所有带有 rel 属性，并且 rel 的值里包含子字符串 “no” 的元素（如 rel=&#8221;nofollow&#8221;，rel=&#8221;yesorno&#8221; 等等）都将会被选择。</p>
<h4>属性单词选择器（Attribute Contains Word Selector）</h4>
<p><strong>jQuery(&#8216;[attribute~=value]&#8216;)</strong>，这个选择器的特别之处在于 value 的值只能必须是一个独立的单词（或者是字符串），例如 <strong>jQuery(&#8216;[rel~=no]&#8216;)</strong> ，此句在执行的时候会选择带有 rel=&#8221;yes or no&#8221; 的元素，但不会选择带有 rel=&#8221;yesorno&#8221; 的元素。这个选择器可以看做属性包含选择器的补充品，用于需要进行严格匹配的时候。</p>
<h4>属性结尾选择器（Attribute Ends With Selector）</h4>
<p><strong>jQuery(&#8216;[attribute$=value]&#8216;)</strong> ，用于选择特定属性的值以某个字符串结尾的元素，例如 <strong>jQuery(&#8216;[rel$=no]&#8216;)</strong> 将会选择 rel 属性的值以 “no” 结尾的元素。</p>
<h4>属性均等选择器（Attribute Equals Selector）</h4>
<p><strong>jQuery(&#8216;[attribute=value]&#8216;)</strong> ，只选择属性的值完全相等的元素，如：<strong>jQuery(&#8216;[rel=nofollow]&#8216;)</strong>，则只选择 rel=&#8221;nofollow&#8221; 的元素，差一点都不行！</p>
<h4>属性非等选择器（Attribute Not Equal Selector）</h4>
<p><strong>jQuery(&#8216;[attribute!=value]&#8216;)</strong> ，和 <strong>:not([attr=value])</strong> 的效果一样，用于选择属性不等于某个值的元素，例如 <strong>jQuery(&#8216;[rel!=nofollow]&#8216;)</strong>，所有 rel=&#8221;nofollow&#8221; 的元素都不会被选择。</p>
<h3>按钮选择器（:button Selector）</h3>
<p><strong>jQuery(&#8216;:button&#8217;)</strong> ，所有的 &#60;input type=&#8221;button&#8221;&#62; 和 &#60;button&#62; 元素都会被选择。</p>
<h3>Checkbox 选择器（:checkbox Selector）</h3>
<p><strong>jQuery(&#8216;:checkbox&#8217;)</strong> ，所有的 &#60;input type=&#8221;checkbox&#8221;&#62; 元素都会被选择。</p>
<h3>Checked 选择器（:checked Selector）</h3>
<p><strong>jQuery(&#8216;:checked&#8217;)</strong> ，可以看做是 Checkbox 选择器的补充，用于选择所有已经被勾选的 Checkbox 对象。</p>
<h3>子元素选择器（Child Selector）</h3>
<p><strong>jQuery(&#8216;parent > child&#8217;)</strong>，只选择 parent 的子元素（下一级元素），不对子元素以下的元素进行选择。</p>
<hr />
<p>近期忙，少更新。</p>
<p  class="related_post_title">Related Posts</p><ul class="related_post"><li><a href="http://blog.imbolo.com/css-turn-off-webkit-browsers-input-highlight-and-textarea-resize/" title="CSS 屏蔽 Webkit 浏览器 input 高亮和 textarea 缩放">CSS 屏蔽 Webkit 浏览器 input 高亮和 textarea 缩放</a></li><li><a href="http://blog.imbolo.com/create-a-simple-ajax-rss-widget-with-jquery-and-yahoo-pipes/" title="利用 Yahoo Pipes 和 jQuery 做一个 RSS 挂件">利用 Yahoo Pipes 和 jQuery 做一个 RSS 挂件</a></li><li><a href="http://blog.imbolo.com/customizing-the-new-wordpress-3-0-custom-menus-adding-different-icons-to-each-link/" title="为 WordPress 3.0 的自定义菜单链接添加栏目图标">为 WordPress 3.0 的自定义菜单链接添加栏目图标</a></li><li><a href="http://blog.imbolo.com/center-multiple-divs-with-css/" title="CSS 多个子框架居中">CSS 多个子框架居中</a></li><li><a href="http://blog.imbolo.com/the-css3-flexible-box-model-2/" title="CSS3 灵活的盒子模型(Flexible Box Module) – 2">CSS3 灵活的盒子模型(Flexible Box Module) – 2</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://blog.imbolo.com/jquery-selectors/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>为 WordPress 3.0 的自定义菜单链接添加栏目图标</title>
		<link>http://blog.imbolo.com/customizing-the-new-wordpress-3-0-custom-menus-adding-different-icons-to-each-link/</link>
		<comments>http://blog.imbolo.com/customizing-the-new-wordpress-3-0-custom-menus-adding-different-icons-to-each-link/#comments</comments>
		<pubDate>Tue, 25 May 2010 15:18:57 +0000</pubDate>
		<dc:creator>bolo</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Theme]]></category>

		<guid isPermaLink="false">http://blog.imbolo.com/?p=1854</guid>
		<description><![CDATA[WordPress 3.0 为了增强 CMS 功能，加入了自定义菜单的功能，除了定义菜单项目外，还可以菜单定义各个项目的 CSS Class。我们可以利用这个功能来为菜单项目添加一个个性图标。]]></description>
			<content:encoded><![CDATA[<p><img src="http://i1001.photobucket.com/albums/af131/bolo1988/custompagemenuitemicon.png" alt="WordPress 3.0 自定义菜单栏目图标" /></p>
<p>WordPress 3.0 为了增强 CMS 功能，加入了自定义菜单的功能，除了定义菜单项目外，还可以菜单定义各个项目的 CSS Class。我们可以利用这个功能来为菜单项目添加一个个性图标。</p>
<p>在 WordPress 3.0 的 Appearance（外观）-> Menus（菜单）面板里我们可以看到自定义菜单的设置，首先点击“Creat Menu”，再在左栏勾选需要的菜单项目后点击“Add to Menu”可以把勾选的项目添加到刚才建立的自定义菜单里。这是展开菜单项可以看到相关项目的参数。<span id="more-1854"></span></p>
<p><img src="http://i1001.photobucket.com/albums/af131/bolo1988/Captura-de-pantalla-2010-05-24-a-la.png" alt="默认自定义菜单项目参数" /></p>
<p>默认情况下能修改的参数很少，这时点击屏幕左上角的“Screen Options（屏幕参数）”，把“Show advanced menu properties（显示高级菜单属性）”里的项目全部勾选，我们就可以看到更多的参数。以本文题图为例，为各个项目分别加上 Home、Advertise、Contact、Archives 和 About 的 CSS Class，这样在前台调用菜单时，这些项目将拥有一个自定义的 CSS Class，接下来我们可以通过 CSS 为这些项目加上图标。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
</pre></td><td class="code"><pre class="css" style="font-family:monospace;"><span style="color: #cc00cc;">#header</span> ul<span style="color: #6666ff;">.navigation</span> li a<span style="color: #6666ff;">.home</span> <span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span><span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000;">&quot;images/home.png&quot;</span><span style="color: #00AA00;">&#41;</span> <span style="color: #993333;">no-repeat</span> <span style="color: #cc66cc;">0</span> <span style="color: #933;">1px</span> <span style="color: #993333;">transparent</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
<span style="color: #cc00cc;">#header</span> ul<span style="color: #6666ff;">.navigation</span> li a<span style="color: #6666ff;">.about</span> <span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span><span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000;">&quot;images/about.png&quot;</span><span style="color: #00AA00;">&#41;</span> <span style="color: #993333;">no-repeat</span> <span style="color: #cc66cc;">0</span> <span style="color: #933;">0px</span> <span style="color: #993333;">transparent</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
<span style="color: #cc00cc;">#header</span> ul<span style="color: #6666ff;">.navigation</span> li a<span style="color: #6666ff;">.advertise</span> <span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span><span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000;">&quot;images/advertise.png&quot;</span><span style="color: #00AA00;">&#41;</span> <span style="color: #993333;">no-repeat</span> <span style="color: #cc66cc;">0</span> <span style="color: #933;">0px</span> <span style="color: #993333;">transparent</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
<span style="color: #cc00cc;">#header</span> ul<span style="color: #6666ff;">.navigation</span> li a<span style="color: #6666ff;">.archive</span> <span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span><span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000;">&quot;images/archive.png&quot;</span><span style="color: #00AA00;">&#41;</span> <span style="color: #993333;">no-repeat</span> <span style="color: #933;">1px</span> <span style="color: #933;">2px</span> <span style="color: #993333;">transparent</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
<span style="color: #cc00cc;">#header</span> ul<span style="color: #6666ff;">.navigation</span> li a<span style="color: #6666ff;">.contact</span> <span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span><span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000;">&quot;images/contact.png&quot;</span><span style="color: #00AA00;">&#41;</span> <span style="color: #993333;">no-repeat</span> <span style="color: #cc66cc;">0</span> <span style="color: #933;">3px</span> <span style="color: #993333;">transparent</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<p>在 WordPress 3.0 之前的版本里，我们可以通过 JavaScript 等方法为菜单项目加上图标。原理是获取菜单项的 title 值，再为它加上一个和 title 值相同的 Class，在 jQuery 里可以这样写：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">$<span style="color: #009900;">&#40;</span>document<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">ready</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'ul.navigation li a'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">addClass</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">return</span> $<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">attr</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'title'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p  class="related_post_title">Related Posts</p><ul class="related_post"><li><a href="http://blog.imbolo.com/improve-wordpress-navigation-menu-output/" title="为 WordPress 3.0 自定义菜单添加描述">为 WordPress 3.0 自定义菜单添加描述</a></li><li><a href="http://blog.imbolo.com/inpad/" title="主题发布：Inpad">主题发布：Inpad</a></li><li><a href="http://blog.imbolo.com/custom-gravatar/" title="自定义默认Gravatar头像">自定义默认Gravatar头像</a></li><li><a href="http://blog.imbolo.com/show-the-date-of-each-post/" title="显示每篇文章的日期">显示每篇文章的日期</a></li><li><a href="http://blog.imbolo.com/ajax-posting-comments/" title="为主题添加AJAX提交评论功能">为主题添加AJAX提交评论功能</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://blog.imbolo.com/customizing-the-new-wordpress-3-0-custom-menus-adding-different-icons-to-each-link/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>CSS 多个子框架居中</title>
		<link>http://blog.imbolo.com/center-multiple-divs-with-css/</link>
		<comments>http://blog.imbolo.com/center-multiple-divs-with-css/#comments</comments>
		<pubDate>Sat, 15 May 2010 13:29:44 +0000</pubDate>
		<dc:creator>bolo</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[WEB]]></category>

		<guid isPermaLink="false">http://blog.imbolo.com/?p=1844</guid>
		<description><![CDATA[有时我们需要令一个宽度固定的容器里的子框架居中（例如一个 Div ，或者其他 block 级元素），如果子框架只有一个的话，我们只需要为子框架加上 CSS 属性 margin: auto 就可以了。]]></description>
			<content:encoded><![CDATA[<p>有时我们需要令一个宽度固定的容器里的子框架居中（例如一个 Div ，或者其他 block 级元素），如果子框架只有一个的话，我们只需要为子框架加上 CSS 属性 margin: auto 就可以了。</p>
<p>但如果我们要让多个子框架居中，并且等分父框架剩余的空间的话，我们对所有子框架使用 CSS <strong>box-align: center</strong> 来实现这种效果。</p>
<p>可是目前还有相当一部分主流浏览器不支持 <strong>box-align 属性</strong>，那么我们应该如何编写 CSS，使这种效果能兼容大部分的浏览器呢？</p>
<h3>通常的方法</h3>
<p>为了使多个 block 级元素排列在同一行里，我们习惯使用 float 属性使子框架浮动，然后利用 margin 属性让每一个子框架之间都留出一些空白的间距。可是这样做会触发经典的 IE6 双倍 margin BUG，这样反而要投入额外的时间去调试 IE6 的 Hack。</p>
<p>虽然我们还可以通过 display: inline 来避开 IE6 的 BUG，但我们仍然需要调整这些子框架间的间距，防止最后一个自框架被挤到下一行。<span id="more-1844"></span></p>
<h3>改变子框架级别并且控制剩余的空白</h3>
<p>使用 float 和 margin 来让多个子框架居中并且等分父框架剩余空间的做法缺点很多。为了避开这些缺点，我们还可以使用另一种方法：把子框架的级别改为 inline-block ，并且通过 <strong>letter-spacing 属性</strong> 控制自框架之间的间距。</p>
<p>假设在一个父框架里有四个 block 级的子容器，每个子容器的大小均为 100px x 100px。为了让这些子框架能排列在同一行内，我们可以把它们改为 inline-block 级，由于子框架和父框架之间并没有其它的内容，应此要控制子框架的空间分配将易如反掌。姑且假设父框架 id=parent，子框架 class=child，那么 CSS 可以这样写：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
</pre></td><td class="code"><pre class="css" style="font-family:monospace;"><span style="color: #cc00cc;">#parent</span> <span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span> <span style="color: #933;">615px</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">border</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">solid</span> <span style="color: #933;">1px</span> <span style="color: #cc00cc;">#aaa</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">text-align</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">center</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">font-size</span><span style="color: #00AA00;">:</span> <span style="color: #933;">20px</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">letter-spacing</span><span style="color: #00AA00;">:</span> <span style="color: #933;">35px</span><span style="color: #00AA00;">;</span>
	whitewhite-space<span style="color: #00AA00;">:</span> <span style="color: #993333;">nowrap</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">line-height</span><span style="color: #00AA00;">:</span> <span style="color: #933;">12px</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">overflow</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">hidden</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
<span style="color: #6666ff;">.child</span> <span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span> <span style="color: #933;">100px</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span> <span style="color: #933;">100px</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">border</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">solid</span> <span style="color: #933;">1px</span> <span style="color: #cc00cc;">#ccc</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">display</span><span style="color: #00AA00;">:</span> inline-<span style="color: #993333;">block</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">vertical-align</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">middle</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<p>在这段样式里，#parent 的 text-align、letter-spacing、white-space、overflow 和 .child 的 vertical-align、display 这些属性是实现预想效果的关键，下面解释一下这些属性起了什么作用。</p>
<ul>
<li><strong>text-align</strong>：使 #parent 里的所有内容都居中</li>
<li><strong>letter-spacing</strong>：控制每个子框架之间的空白大小</li>
<li><strong>white-space: nowrap</strong>：防止最后一个子框架被挤到下一行</li>
<li><strong>overflow: hidden</strong>：隐藏超出 #parent 范围的内容</li>
<li><strong>vertical-align: middle</strong>：使所有子框架都垂直居中</li>
<li><strong>display: inline-block</strong>：是所有子框架都排列在同一行，并且保持 block 级元素的特性</li>
</ul>
<h3>兼容 IE</h3>
<p>在今时今日，老版本的 IE 浏览器已经成为网页设计师的心头大恨，虽然上面的 CSS 能兼容 IE8，但由于 IE6 和 IE7 并不完全支持 inline-block 级元素，因此我们还需要写下面的一段 Hack，确保在 IE6 和 IE7 里能保持和现代浏览器一致的效果。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="css" style="font-family:monospace;"><span style="color: #6666ff;">.child</span> <span style="color: #00AA00;">&#123;</span>
	<span style="color: #00AA00;">*</span><span style="color: #000000; font-weight: bold;">display</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">inline</span><span style="color: #00AA00;">;</span>
	<span style="color: #00AA00;">*</span><span style="color: #000000; font-weight: bold;">margin</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">0</span> <span style="color: #933;">20px</span> <span style="color: #cc66cc;">0</span> <span style="color: #933;">20px</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<p>本文所举例子的最终效果可以看这个 <a href="http://blog.imbolo.com/wp-content/uploads/2010/05/center-multiple-divs.html">DEMO</a>。</p>
<h3>后记</h3>
<p>本文所举的例子虽然只有短短的两句 IE Hack，但在实际开发中大家要写的 Hack 肯定要多很多，因此淘汰老版本 IE 的任务已经刻不容缓。我听过很多人说：“我不用 IE 浏览器的，我用傲游和世界之窗”，在这里我提醒一下大家，对这些无法解释清楚的人，我们可以简单地和他们说：“凡是能用支付宝的浏览器都是落后的，请放弃使用。”。</p>
<p  class="related_post_title">Related Posts</p><ul class="related_post"><li><a href="http://blog.imbolo.com/css-turn-off-webkit-browsers-input-highlight-and-textarea-resize/" title="CSS 屏蔽 Webkit 浏览器 input 高亮和 textarea 缩放">CSS 屏蔽 Webkit 浏览器 input 高亮和 textarea 缩放</a></li><li><a href="http://blog.imbolo.com/the-css3-flexible-box-model/" title="CSS3 灵活的盒子模型(Flexible Box Module) &#8211; 1">CSS3 灵活的盒子模型(Flexible Box Module) &#8211; 1</a></li><li><a href="http://blog.imbolo.com/web-rounded-conner-choice/" title="网页圆角的取舍">网页圆角的取舍</a></li><li><a href="http://blog.imbolo.com/10-css-snippets-to-save-time/" title="10个节约开发时间的CSS技巧">10个节约开发时间的CSS技巧</a></li><li><a href="http://blog.imbolo.com/css-beveled-corners/" title="纯CSS打造斜角">纯CSS打造斜角</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://blog.imbolo.com/center-multiple-divs-with-css/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>CSS3 灵活的盒子模型(Flexible Box Module) – 2</title>
		<link>http://blog.imbolo.com/the-css3-flexible-box-model-2/</link>
		<comments>http://blog.imbolo.com/the-css3-flexible-box-model-2/#comments</comments>
		<pubDate>Sun, 09 May 2010 08:55:06 +0000</pubDate>
		<dc:creator>bolo</dc:creator>
				<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://blog.imbolo.com/?p=1838</guid>
		<description><![CDATA[继上一篇《CSS3 灵活的盒子模型(Flexible Box Module) – 1》后继续深入，说说 CSS3 里盒子模型的尺寸。]]></description>
			<content:encoded><![CDATA[<p>继上一篇《<a href="http://blog.imbolo.com/the-css3-flexible-box-model/">CSS3 灵活的盒子模型(Flexible Box Module) – 1</a>》后继续深入，说说 CSS3 里盒子模型的尺寸。本文的 HTML 框架继续沿用《<a href="http://blog.imbolo.com/the-css3-flexible-box-model/">CSS3 灵活的盒子模型(Flexible Box Module) – 1</a>》。</p>
<p>在 CSS2 里，要把一个容器分成三栏的话比较简便的方法是把三个字容器的 width 都设为 33.3%，这种方法无法把父容器的宽度完全填充，在父容器的宽度足够大的时候留下的空白会是页面变得很不美观。令一种方法是通过计算把子容器的 width 都设为一个固定值，这种方法比较繁琐，而且在一些情况下无法使子容器的宽度完全相等（例如父容器的宽度为 100px）。当我们迈入 CSS3 时代后，这种问题将迎刃而解。</p>
<h3>box-flex 属性</h3>
<p>box-flex 应用在需要分栏的子容器上，它的值必须是一个自然数或小数。当父容器里有多个带有 box-flex 属性的子容器时，浏览器将会把这些子容器的 box-flex 的值相加，然后根据它们各自的值占总值的比例，再在父容器剩余的空间里分配它们的尺寸（说的啰嗦，其实一看 DEMO 就懂）。也就是说，我们需要注意 <strong>box-flex 属性必须在父框架具有具体的 width 或者 height 的时候才能正常渲染</strong>。<span id="more-1838"></span></p>
<h4>灵活的尺寸</h4>
<p>在这个例子里，我将使子容器2和3的宽度相等，并且子容器1的宽度为它们的两倍。由于使用了 box-flex 属性，如果再插入一个子容器的话，已有的容器宽度将会自动调整。CSS 如下：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
</pre></td><td class="code"><pre class="css" style="font-family:monospace;"><span style="color: #cc00cc;">#exemple4</span> .<span style="color: #000000; font-weight: bold;">content</span><span style="color: #00AA00;">&#123;</span>
	-moz-box-orient <span style="color: #00AA00;">:</span> horizontal<span style="color: #00AA00;">;</span>
	-webkit-box-orient <span style="color: #00AA00;">:</span> horizontal<span style="color: #00AA00;">;</span>
	box-orient <span style="color: #00AA00;">:</span> horizontal<span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
<span style="color: #cc00cc;">#exemple4</span> .v1<span style="color: #00AA00;">&#123;</span>
	-moz-box-flex<span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">2</span><span style="color: #00AA00;">;</span>
	-webkit-box-flex<span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">2</span><span style="color: #00AA00;">;</span>
	box-flex<span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">2</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
<span style="color: #cc00cc;">#exemple4</span> .v2<span style="color: #00AA00;">&#123;</span>
	-moz-box-flex<span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">1</span><span style="color: #00AA00;">;</span>
	-webkit-box-flex<span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">1</span><span style="color: #00AA00;">;</span>
	box-flex<span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">1</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
<span style="color: #cc00cc;">#exemple4</span> .v3<span style="color: #00AA00;">&#123;</span>
	-moz-box-flex<span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">1</span><span style="color: #00AA00;">;</span>
	-webkit-box-flex<span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">1</span><span style="color: #00AA00;">;</span>
	box-flex<span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">1</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<p>效果可以看这个 <a href='http://blog.imbolo.com/wp-content/uploads/2010/05/exemple-css3-box-2.html#exemple4'>DEMO</a>。大家也可以下载这个 DEMO，尝试添加一个新的子容器，它是不是自动适应了。</p>
<h4>自适应子容器和固定尺寸子容器的混合使用</h4>
<p>box-flex 的另一个强大之处是可以和具有固定尺寸的容器混合使用。我把上面的例子改一改，子容器3改成固定宽度160px，其它的保持不变，看看有什么效果。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
</pre></td><td class="code"><pre class="css" style="font-family:monospace;"><span style="color: #cc00cc;">#exemple5</span> .<span style="color: #000000; font-weight: bold;">content</span><span style="color: #00AA00;">&#123;</span>
	-moz-box-orient<span style="color: #00AA00;">:</span> horizontal<span style="color: #00AA00;">;</span>
	-webkit-box-orient<span style="color: #00AA00;">:</span> horizontal<span style="color: #00AA00;">;</span>
	box-orient<span style="color: #00AA00;">:</span> horizontal<span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
<span style="color: #cc00cc;">#exemple5</span> .v1<span style="color: #00AA00;">&#123;</span>
	-moz-box-flex<span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">2</span><span style="color: #00AA00;">;</span>
	-webkit-box-flex<span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">2</span><span style="color: #00AA00;">;</span>
	box-flex<span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">2</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
<span style="color: #cc00cc;">#exemple5</span> .v2<span style="color: #00AA00;">&#123;</span>
	-moz-box-flex<span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">1</span><span style="color: #00AA00;">;</span>
	-webkit-box-flex<span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">1</span><span style="color: #00AA00;">;</span>
	box-flex<span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">1</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #cc00cc;">#exemple5</span> .v3<span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span> <span style="color: #933;">160px</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<p>大家可以看这个 <a href='http://blog.imbolo.com/wp-content/uploads/2010/05/exemple-css3-box-2.html#exemple5'>DEMO</a> 的效果。我们可以发现，子容器1和子容器2的宽度是在父容器宽度减去子容器3的宽度以后剩下的空间里分配的，这点和使用百分比作为 width 时直接根据父容器的宽度进行计算有很大的不同，<strong>使用 box-flex 能使子容器自动适应尺寸的变化</strong>，节省了很多调试时间。</p>
<h3>空间的分配</h3>
<p>因为我们可以把具有固定尺寸和灵活尺寸的子容器混合使用，并且也可以给父容器赋予灵活的尺寸。因此在最终的成品里我们可能会遇到父容器空间过余或者不足的情况。为了更合理地利用父容器提供的空间，box-align 和 box-pack 属性可以帮助我们。</p>
<h4>box-pack 属性</h4>
<p>box-pack 属性可以用于设置子容器在水平轴上的空间分配方式，它共有四种可能值：start，end，justify 和 center。这些值的含义如下：</p>
<ul>
<li>start ：所有子容器都分布在父容器的左侧，右侧留空</li>
<li>end ：所有子容器都分布在父容器的右侧，左侧留空</li>
<li>justify ：所有子容器平均分布（默认值）</li>
<li>center ：平均分配父容器剩余的空间（能压缩子容器的大小，并且有全局居中的效果）</li>
</ul>
<h4>box-align 属性</h4>
<p>box-align 属性用于管理子容器在竖轴上的空间分配方式，共有五个值：start，end，center，baseline 和 stretch。</p>
<ul>
<li>start ：子容器从父容器顶部开始排列</li>
<li>end ：子容器从父容器底部开始排列</li>
<li>center ：子容器横向居中（有点奇怪）</li>
<li>baseline ：所有子容器沿同一基线排列（很难理解）</li>
<li>stretch ：所有子容器和父容器保持同一高度（默认值）</li>
</ul>
<p>box-align 和 box-pack 属性通常混合使用，我们可以用下面的 CSS 测试一下：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
</pre></td><td class="code"><pre class="css" style="font-family:monospace;"><span style="color: #cc00cc;">#exemple6</span> .<span style="color: #000000; font-weight: bold;">content</span><span style="color: #00AA00;">&#123;</span>
	-moz-box-orient<span style="color: #00AA00;">:</span> horizontal<span style="color: #00AA00;">;</span>
	-moz-box-pack<span style="color: #00AA00;">:</span> <span style="color: #993333;">center</span><span style="color: #00AA00;">;</span>
	-moz-box-align<span style="color: #00AA00;">:</span> <span style="color: #993333;">center</span><span style="color: #00AA00;">;</span>
&nbsp;
	-webkit-box-orient<span style="color: #00AA00;">:</span> horizontal<span style="color: #00AA00;">;</span>
	-webkit-box-pack<span style="color: #00AA00;">:</span> <span style="color: #993333;">center</span><span style="color: #00AA00;">;</span>
	-webkit-box-align<span style="color: #00AA00;">:</span> <span style="color: #993333;">center</span><span style="color: #00AA00;">;</span>
&nbsp;
	box-orient<span style="color: #00AA00;">:</span> horizontal<span style="color: #00AA00;">;</span>
	box-pack<span style="color: #00AA00;">:</span> <span style="color: #993333;">center</span><span style="color: #00AA00;">;</span>
	box-align<span style="color: #00AA00;">:</span> <span style="color: #993333;">center</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<p>在线的 <a href='http://blog.imbolo.com/wp-content/uploads/2010/05/exemple-css3-box-2.html#exemple6'>DEMO</a>，大家可以 Firebug 禁用 box-align 和 box-pack 属性看看它们的区别和效果。</p>
<h4>防止子容器溢出</h4>
<p>CSS3 并没有更好地解决内容溢出的问题，反而在加入和新的盒子模型参数后，溢出的情况变得更加频繁。因此最好的方法还是多做试验，更好地管理你的内容。overflow: hidden 正能临时起点作用而已。</p>
<p  class="related_post_title">Related Posts</p><ul class="related_post"><li><a href="http://blog.imbolo.com/css-turn-off-webkit-browsers-input-highlight-and-textarea-resize/" title="CSS 屏蔽 Webkit 浏览器 input 高亮和 textarea 缩放">CSS 屏蔽 Webkit 浏览器 input 高亮和 textarea 缩放</a></li><li><a href="http://blog.imbolo.com/jquery-selectors/" title="jQuery选择器详解（一）">jQuery选择器详解（一）</a></li><li><a href="http://blog.imbolo.com/customizing-the-new-wordpress-3-0-custom-menus-adding-different-icons-to-each-link/" title="为 WordPress 3.0 的自定义菜单链接添加栏目图标">为 WordPress 3.0 的自定义菜单链接添加栏目图标</a></li><li><a href="http://blog.imbolo.com/center-multiple-divs-with-css/" title="CSS 多个子框架居中">CSS 多个子框架居中</a></li><li><a href="http://blog.imbolo.com/the-css3-flexible-box-model/" title="CSS3 灵活的盒子模型(Flexible Box Module) &#8211; 1">CSS3 灵活的盒子模型(Flexible Box Module) &#8211; 1</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://blog.imbolo.com/the-css3-flexible-box-model-2/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>CSS3 灵活的盒子模型(Flexible Box Module) &#8211; 1</title>
		<link>http://blog.imbolo.com/the-css3-flexible-box-model/</link>
		<comments>http://blog.imbolo.com/the-css3-flexible-box-model/#comments</comments>
		<pubDate>Tue, 04 May 2010 08:03:26 +0000</pubDate>
		<dc:creator>bolo</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[WEB]]></category>

		<guid isPermaLink="false">http://blog.imbolo.com/?p=1829</guid>
		<description><![CDATA[CSS3 标准里引入了一些新的盒子模型参数，在 CSS2 的基础上，我们将能更灵活地调整页面上各个容器的大小和位置。]]></description>
			<content:encoded><![CDATA[<p>CSS3 标准里引入了一些新的盒子模型参数，在 CSS2 的基础上，我们将能更灵活地调整页面上各个容器的大小和位置。详细的说明可以看<a href="http://www.w3.org/TR/css3-flexbox/">这个文档</a>。</p>
<p>通过学习和测试，我发现这种新的盒子模型布局对建立自适应布局的页面带来很大的好处。在这篇文章中，我的所有例子都基于以下 HTML代码：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="html4strick" style="font-family:monospace;">&lt;body&gt;
	&lt;div id=&quot;box1&quot;&gt;1&lt;/div&gt;
	&lt;div id=&quot;box2&quot;&gt;2&lt;/div&gt;
	&lt;div id=&quot;box3&quot;&gt;3&lt;/div&gt;
&lt;/body&gt;</pre></td></tr></table></div>

<h3>容器的排列</h3>
<p>在通常的情况下，页面上所有容器的顺序都按照载入的顺序排列。而使用 CSS3 提供的功能后，我们可以在不改变 HTML 结构的前提下随意改变容器显示的位置，这样不但给排版带来极大的方便，我们也可以利用这些功能进行流量整形。<span id="more-1829"></span></p>
<p>在需用使用灵活盒子模型(Flexible Box Module)的时候，我们需要先把其父容器的 Display 属性设置为 box 或者 inline-box 。</p>
<h4>水平分布和垂直分布</h4>
<p>我们可以通过 box-orient 属性指定容器的分布轴，当这个属性的值为 vertical 时其子容器将垂直分布（也可以为 block-axis ），当值为 horizontal 时其子容器讲水平分布（也可以为 inline-axis ）。在本文的第一个例子里我使用了以下的 CSS ：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
</pre></td><td class="code"><pre class="css" style="font-family:monospace;"><span style="color: #cc00cc;">#exemple1</span> .<span style="color: #000000; font-weight: bold;">content</span><span style="color: #00AA00;">&#123;</span>
	-moz-box-orient <span style="color: #00AA00;">:</span> horizontal<span style="color: #00AA00;">;</span>
	-webkit-box-orient <span style="color: #00AA00;">:</span> horizontal<span style="color: #00AA00;">;</span>
	box-orient <span style="color: #00AA00;">:</span> horizontal<span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #cc00cc;">#exemple1</span> .boite<span style="color: #00AA00;">&#123;</span>
	-moz-box-flex <span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">1</span><span style="color: #00AA00;">;</span>
	-webkit-box-flex <span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">1</span><span style="color: #00AA00;">;</span>
	box-flex <span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">1</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<p>具体的效果可以看这个 <a href="http://blog.imbolo.com/wp-content/uploads/2010/05/exemple-css3-box.html#exemple1">DEMO</a> ，三个子 Div 容器都横向并列了。</p>
<p><em>注：这个效果在 CSS2 里理论上也可以通过 Display: inline; 实现，但由于某些浏览器的 BUG ，没人会这样做。</em></p>
<h4>反序排列</h4>
<p>box-direction 属性可以让我们随意改变容器的显示顺序。我们知道，在默认的情况下，block 级元素是按照加载顺序从上到下排列， inline 级元素是从左到右排列的，但现在通过 box-direction 属性我们可以让最后加载的 block 级元素显示在最顶部，最后加载的 inline 级元素显示在左边。</p>
<p>但在使用这个属性的时候要注意它可能会改变元素的某些属性，产生一些不能控制的效果。</p>
<p>在第二个例子里，我使用了以下的 CSS ：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
</pre></td><td class="code"><pre class="css" style="font-family:monospace;"><span style="color: #cc00cc;">#exemple2</span> .<span style="color: #000000; font-weight: bold;">content</span><span style="color: #00AA00;">&#123;</span>
	-moz-box-orient <span style="color: #00AA00;">:</span> vertical<span style="color: #00AA00;">;</span>
	-moz-box-<span style="color: #000000; font-weight: bold;">direction</span> <span style="color: #00AA00;">:</span> reverse<span style="color: #00AA00;">;</span>
&nbsp;
	-webkit-box-orient <span style="color: #00AA00;">:</span> vertical<span style="color: #00AA00;">;</span>
	-webkit-box-<span style="color: #000000; font-weight: bold;">direction</span> <span style="color: #00AA00;">:</span> reverse<span style="color: #00AA00;">;</span>
&nbsp;
	box-orient <span style="color: #00AA00;">:</span> vertical<span style="color: #00AA00;">;</span>
	box-<span style="color: #000000; font-weight: bold;">direction</span> <span style="color: #00AA00;">:</span> reverse<span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #cc00cc;">#exemple2</span> .boite<span style="color: #00AA00;">&#123;</span>
	-moz-box-flex <span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">1</span><span style="color: #00AA00;">;</span>
	-webkit-box-flex <span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">1</span><span style="color: #00AA00;">;</span>
	box-flex <span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">1</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<p>效果大家可以看这个 <a href="http://blog.imbolo.com/wp-content/uploads/2010/05/exemple-css3-box.html#exemple2">DEMO</a>。可以发现，在不改变 HTML 结构的情况下，容器的排列顺序改变了。</p>
<h4>按指定顺序排列</h4>
<p>我们不但可以让一组同级容器反序排列，而且还可以让它们按自己喜欢的顺序排列，box-ordinal-group 属性可以帮我们做到这一点。通过 box-ordinal-group 为各个容器指定一个序号，默认情况下他们将会按照序号递增的顺序排列。要注意的是：没有指定序号的容器默认都为 1 ，并且序号相同的元素将按照加载顺序排列。大家可以看一下下面的 CSS ：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
</pre></td><td class="code"><pre class="css" style="font-family:monospace;"><span style="color: #cc00cc;">#exemple3</span> .<span style="color: #000000; font-weight: bold;">content</span><span style="color: #00AA00;">&#123;</span>
	-moz-box-orient <span style="color: #00AA00;">:</span> vertical<span style="color: #00AA00;">;</span>
	-moz-box-<span style="color: #000000; font-weight: bold;">direction</span> <span style="color: #00AA00;">:</span> reverse<span style="color: #00AA00;">;</span>
&nbsp;
	-webkit-box-orient <span style="color: #00AA00;">:</span> vertical<span style="color: #00AA00;">;</span>
	-webkit-box-<span style="color: #000000; font-weight: bold;">direction</span> <span style="color: #00AA00;">:</span> reverse<span style="color: #00AA00;">;</span>
&nbsp;
	box-orient <span style="color: #00AA00;">:</span> vertical<span style="color: #00AA00;">;</span>
	box-<span style="color: #000000; font-weight: bold;">direction</span> <span style="color: #00AA00;">:</span> reverse<span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #cc00cc;">#exemple3</span> .boite<span style="color: #00AA00;">&#123;</span>
	-moz-box-flex <span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">1</span><span style="color: #00AA00;">;</span>
	-webkit-box-flex <span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">1</span><span style="color: #00AA00;">;</span>
	box-flex <span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">1</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #cc00cc;">#exemple3</span> .v1<span style="color: #00AA00;">&#123;</span>
	-moz-box-ordinal-group <span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">2</span><span style="color: #00AA00;">;</span>
	-webkit-box-ordinal-group <span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">2</span><span style="color: #00AA00;">;</span>
	box-ordinal-group <span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">2</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #cc00cc;">#exemple3</span> .v2<span style="color: #00AA00;">&#123;</span>
	-moz-box-ordinal-group <span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">2</span><span style="color: #00AA00;">;</span>
	-webkit-box-ordinal-group <span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">2</span><span style="color: #00AA00;">;</span>
	box-ordinal-group <span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">2</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #cc00cc;">#exemple3</span> .v3<span style="color: #00AA00;">&#123;</span>
	-moz-box-ordinal-group <span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">1</span><span style="color: #00AA00;">;</span>
	-webkit-box-ordinal-group <span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">1</span><span style="color: #00AA00;">;</span>
	box-ordinal-group <span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">1</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<p>在上面的 CSS 里，我把第一和第二个容器的序号都定为 2 ，第三个容器序号为 1 ，因此最终效果应该是 v3 排在第一，v1 和 v2 则根据加载顺序，v1 排在 v2 前面。效果可以看这个 <a href="http://blog.imbolo.com/wp-content/uploads/2010/05/exemple-css3-box.html#exemple3">DEMO</a>。</p>
<h3>后记</h3>
<p>CSS3 真的非常强大，我相信在它普及以后，我们做网页的时候将可以减少大量的 JavaScript 。关于 CSS3 盒子模型的介绍还没完，这篇文章只介绍了一下容器的排序，下一次将说说容器的尺寸。欢迎订阅本博客，以即时获知最新的更新。</p>
<p  class="related_post_title">Related Posts</p><ul class="related_post"><li><a href="http://blog.imbolo.com/css-turn-off-webkit-browsers-input-highlight-and-textarea-resize/" title="CSS 屏蔽 Webkit 浏览器 input 高亮和 textarea 缩放">CSS 屏蔽 Webkit 浏览器 input 高亮和 textarea 缩放</a></li><li><a href="http://blog.imbolo.com/center-multiple-divs-with-css/" title="CSS 多个子框架居中">CSS 多个子框架居中</a></li><li><a href="http://blog.imbolo.com/web-rounded-conner-choice/" title="网页圆角的取舍">网页圆角的取舍</a></li><li><a href="http://blog.imbolo.com/10-css-snippets-to-save-time/" title="10个节约开发时间的CSS技巧">10个节约开发时间的CSS技巧</a></li><li><a href="http://blog.imbolo.com/css-beveled-corners/" title="纯CSS打造斜角">纯CSS打造斜角</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://blog.imbolo.com/the-css3-flexible-box-model/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>CSS：跨浏览器复合背景</title>
		<link>http://blog.imbolo.com/cross-browser-css-mutiple-background/</link>
		<comments>http://blog.imbolo.com/cross-browser-css-mutiple-background/#comments</comments>
		<pubDate>Wed, 28 Apr 2010 05:15:21 +0000</pubDate>
		<dc:creator>bolo</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Browser]]></category>

		<guid isPermaLink="false">http://blog.imbolo.com/?p=1818</guid>
		<description><![CDATA[最近发现了一个让 IE6~8 也能呈现 CSS3 Multiple Backgrounds（复合背景）的方法，当时我小小的震惊了一下。看来 IE6 曾经的辉煌不单是微软的捆绑和网银的支持造成的，在当年，它强大的功能也令其它浏览器难以追赶。]]></description>
			<content:encoded><![CDATA[<p>最近发现了一个让 IE6~8 也能呈现 CSS3 Multiple Backgrounds（复合背景）的方法，当时我小小的震惊了一下。看来 IE6 曾经的辉煌不单是微软的捆绑和网银的支持造成的，在当年，它强大的功能也令其它浏览器难以追赶。废话不说了，先说说 CSS3 里的标准做法。</p>
<p>在 CSS3 标准里，Background 属性被赋予更加强大的功能，在 CSS2.1 的基础上，我们可以对一个对象同时使用多个背景图片。例如如下的样式：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="css" style="font-family:monospace;"><span style="color: #cc00cc;">#multiple-bg</span> <span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">background-image</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000; font-style: italic;">top.png</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">,</span> <span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000; font-style: italic;">middle.png</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">,</span> <span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000; font-style: italic;">bottom.png</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<p>添加符合背景图片的时候先从最顶层开始添加，按从高到低的顺序写样式。大家可以看这个 <a href="http://blog.imbolo.com/wp-content/uploads/2010/04/css-mutiple-bg.html" title="跨浏览器复合背景演示">Demo</a>。可以尝试用 IE 打开看看效果。<span id="more-1818"></span></p>
<p>用 IE 打开过 Demo 的同学可以发现 IE 也能显示复合背景了，如果你查看过 DEMO 的源码，你可以发现我是通过 IE 滤镜来实现的。方法是先用标准的 CSS 加一个底层的背景，再通过滤镜添加上一层的背景。整个 Demo 的样式如下：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
</pre></td><td class="code"><pre class="html4strick" style="font-family:monospace;">&lt;style&gt;
#demo {
	width: 410px;
	height: 290px;
	border: #CCC dotted 1px;
	margin: 120px auto 0;
	background: url(anti-ie6-logo.png) left top no-repeat, url(bg.jpg) center top repeat; /* CSS3 */
}
&lt;/style&gt;
&lt;!--[if IE]&gt;
&lt;style&gt;
#demo {
	background: transparent url(bg.jpg) center top no-repeat;
	filter: progid:DXImageTransform.Microsoft.AlphaImageLoader (src='anti-ie6-logo.png', sizingMethod='crop'); /* IE6~7 */
	-ms-filter: &quot;progid:DXImageTransform.Microsoft.AlphaImageLoader(src='anti-ie6-logo.png', sizingMethod='crop')&quot;; /* IE8 */
}
&lt;/style&gt;
&lt; ![endif]--&gt;</pre></td></tr></table></div>

<h3>IE 的不足</h3>
<p>看到当年 IE 的强大了吧？最早开始支持复合背景的 Safari 3.1 诞生以前，IE6 早就可以通过滤镜制作出这种效果了。但IE也存在明显的不足：</p>
<ul>
<li>本例使用的滤镜没有提供调整图片位置的参数，至少我在 MSDN 的技术文档里没找到。</li>
<li>目前 IE 只能制作出两层复合背景。</li>
</ul>
<p>本文权当开开眼界了，为了更快地拥抱 CSS3 ，请在不使用网银和支付宝时弃用 IE。</p>
<p  class="related_post_title">Related Posts</p><ul class="related_post"><li><a href="http://blog.imbolo.com/firefox-input-button-line-height-bug/" title="Firefox Input Button Line-Height Bug">Firefox Input Button Line-Height Bug</a></li><li><a href="http://blog.imbolo.com/ie9-released/" title="IE9 发布">IE9 发布</a></li><li><a href="http://blog.imbolo.com/css-turn-off-webkit-browsers-input-highlight-and-textarea-resize/" title="CSS 屏蔽 Webkit 浏览器 input 高亮和 textarea 缩放">CSS 屏蔽 Webkit 浏览器 input 高亮和 textarea 缩放</a></li><li><a href="http://blog.imbolo.com/jquery-selectors/" title="jQuery选择器详解（一）">jQuery选择器详解（一）</a></li><li><a href="http://blog.imbolo.com/customizing-the-new-wordpress-3-0-custom-menus-adding-different-icons-to-each-link/" title="为 WordPress 3.0 的自定义菜单链接添加栏目图标">为 WordPress 3.0 的自定义菜单链接添加栏目图标</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://blog.imbolo.com/cross-browser-css-mutiple-background/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>网页圆角的取舍</title>
		<link>http://blog.imbolo.com/web-rounded-conner-choice/</link>
		<comments>http://blog.imbolo.com/web-rounded-conner-choice/#comments</comments>
		<pubDate>Tue, 20 Apr 2010 13:52:51 +0000</pubDate>
		<dc:creator>bolo</dc:creator>
				<category><![CDATA[Develop]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[WEB]]></category>

		<guid isPermaLink="false">http://blog.imbolo.com/?p=1797</guid>
		<description><![CDATA[在网页里使用圆角效果是使网页更加美观的一个简单而有效的方法，可是由于 IE 和一些老式浏览器的存在，如何使页面在各个浏览器里的效果一致一直困扰这网页设计人员。]]></description>
			<content:encoded><![CDATA[<p>在网页里使用圆角效果是使网页更加美观的一个简单而有效的方法，可是由于 IE 和一些老式浏览器的存在，如何使页面在各个浏览器里的效果一致一直困扰这网页设计人员。最近我在制作主题时面对一个艰难的抉择，因为我要在主题里使用大量的圆角，我应该如何去协调圆角在不同浏览器里的效果？下面我将列举一些产生圆角的方法，并阐述一下它们的优点和缺点，各位观众在以后遇到这种问题的时候可以根据自己的时间或者技术需要进行取舍。</p>
<h3>CSS 圆角</h3>
<p>关于 CSS 圆角在《<a href="http://blog.imbolo.com/creating-rounded-corners-with-css/">再谈 CSS 圆角</a>》一文里已经有详细的阐述。但纯 CSS 的圆角一些老式浏览器根本不支持。使用框架叠加的话不但会使页面结构变得非常复杂，而且大量的多余框架也会给一些后期开发带来困难。而使用圆角的图片作为背景则很难在一些灵活多变的页面里进行应用。因此 CSS 圆角目前只能在一些框架（主要是宽度）比较固定的页面里，通过图片的方式来实现。<span id="more-1797"></span></p>
<h3>JavaScript 圆角</h3>
<p>有高手为了使像 IE 这样落后的浏览器也能显示非图片和框架叠加产生的圆角开发了一些产生圆角的 JavaScript 库，例如 <a href="http://code.google.com/p/curvycorners/" rel="external">CurvyCorners</a> 是目前我测试过的最强大的一个 JavaScript 圆角效果库，不依赖任何框架。并且通过特定的 CSS Class 就能使 IE 也能产生圆角效果。</p>
<p>通过 JavaScript 框架实现的圆角插件更多，这里不一一介绍。但通过 JavaScript 虽然能解决大部分浏览器的圆角支持问题，但却可能会引起本来正确的一些框架错位，虽然这种错位也能通过 CSS Hack 来修正，但一旦浏览器禁用了 JavaScript 又会产生新的错位。因此 JavaScript 圆角应用并不广泛。</p>
<h3>如何取舍</h3>
<p>在框架固定的页面里，可以用 CSS + 图片的方法实现圆角效果，使 IE 也能显示圆角。但在一些多变的页面里，就只让现代的浏览器能看到圆角吧，老式浏览器被淘汰只是时间问题！</p>
<h3>BTW</h3>
<p>我的新主题正在测试中，如发现问题麻烦大家向我反馈一下。另外推荐使用非 IE 核心的最新版浏览器进行浏览。</p>
<p  class="related_post_title">Related Posts</p><ul class="related_post"><li><a href="http://blog.imbolo.com/css-turn-off-webkit-browsers-input-highlight-and-textarea-resize/" title="CSS 屏蔽 Webkit 浏览器 input 高亮和 textarea 缩放">CSS 屏蔽 Webkit 浏览器 input 高亮和 textarea 缩放</a></li><li><a href="http://blog.imbolo.com/center-multiple-divs-with-css/" title="CSS 多个子框架居中">CSS 多个子框架居中</a></li><li><a href="http://blog.imbolo.com/the-css3-flexible-box-model/" title="CSS3 灵活的盒子模型(Flexible Box Module) &#8211; 1">CSS3 灵活的盒子模型(Flexible Box Module) &#8211; 1</a></li><li><a href="http://blog.imbolo.com/10-css-snippets-to-save-time/" title="10个节约开发时间的CSS技巧">10个节约开发时间的CSS技巧</a></li><li><a href="http://blog.imbolo.com/css-beveled-corners/" title="纯CSS打造斜角">纯CSS打造斜角</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://blog.imbolo.com/web-rounded-conner-choice/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>CSS : Visibility 和 Display 属性的比较</title>
		<link>http://blog.imbolo.com/css-visibility-vs-display/</link>
		<comments>http://blog.imbolo.com/css-visibility-vs-display/#comments</comments>
		<pubDate>Sun, 11 Apr 2010 06:10:41 +0000</pubDate>
		<dc:creator>bolo</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[SEO]]></category>

		<guid isPermaLink="false">http://blog.imbolo.com/?p=1791</guid>
		<description><![CDATA[Visibility 和 Display 属性的比较，Visibility 和 Display 属性的区别，Visibility 属性的用法，Display 属性的用法，Visibility 和 Display 对 SEO 的影响]]></description>
			<content:encoded><![CDATA[<p>如果你想改变一个 HTML 元素的可见性，你会把这个元素的 CSS 属性改为 <strong>visibility: hidden</strong> 还是 <strong>display: none</strong> ？这两个属性有什么不同？在页面元素可见性改变时你如何应对？</p>
<h3>Visibility 和 Display 属性的区别</h3>
<p>这里有个 <a href="http://www.vanseodesign.com/blog/demo/display-visibility.html" rel="external">Demo</a> 可以比较 visibility: hidden 和 display: none 的区别。点击页面上部的链接，页面里绿色的 Div 将会进行相应的改变。请留意一下当绿色的 Div 属性分别被设为 visibility: hidden 和 display: none 时对其它元素会有什么影响。<span id="more-1791"></span></p>
<h4>Visibility 属性的用法</h4>
<p>Visibility 属性共有四个可用的值（visible、hidden、collapse 和 inherit），但常用的值是 visible 和 hidden。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre class="css" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">visibility</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">visible</span>
<span style="color: #808080; font-style: italic;">/* 元素可见，默认值 */</span>
<span style="color: #000000; font-weight: bold;">visibility</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">hidden</span>
<span style="color: #808080; font-style: italic;">/* 元素不可见，但仍然为其保留相应的空间 */</span>
<span style="color: #000000; font-weight: bold;">visibility</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">collapse</span>
<span style="color: #808080; font-style: italic;">/* 只对 table 对象起作用，能移除行或列但不会影响表格的布局。如果这个值用在 table 以外的对象上则表现为 hidden 。 */</span>
<span style="color: #000000; font-weight: bold;">visibility</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">inherit</span>
<span style="color: #808080; font-style: italic;">/* 继承上级元素的 visibility 值。 */</span></pre></td></tr></table></div>

<h4>Display 属性的用法</h4>
<p>Display 属性的可用值有很多，但在这里我们只关注其中的几个值：block、none 和 inline 。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="css" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">display</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">none</span>
<span style="color: #808080; font-style: italic;">/* 元素不可见，并且不为其保留相应的位置 */</span>
<span style="color: #000000; font-weight: bold;">display</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">block</span>
<span style="color: #808080; font-style: italic;">/* 表现为一个块级元素（一般情况下独占一行） */</span>
<span style="color: #000000; font-weight: bold;">display</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">inline</span>
<span style="color: #808080; font-style: italic;">/* 表现为一个行级元素（一般情况下不独占一行） */</span></pre></td></tr></table></div>

<p>从这里可以看出，虽然 Visibility 和 Display 属性都可以隐藏一个元素，但它们之间的不同点在于 <strong>visibility: hidden 在隐藏一个元素的同时仍然在页面上为该元素保留所需的空间</strong>，而 <strong>display: none 则表现得像把元素从页面里删除了，在页面上看不出该元素还存在着</strong>。</p>
<p>另外，display: block 和 display: inline 的区别在于 block 元素会在页面中独占一行，而 inline 元素不会，有的对象默认为 block 元素，而有的对象则默认为 inline 元素，大家在使用时需要注意防止相同属性的重复定义。</p>
<h3>什么时候使用 Visibility 或者 Display 属性？</h3>
<p>Visibility 和 Display 属性虽然都可以达到隐藏页面元素的目的，但它们的区别在于如何回应正常文档流。</p>
<p>如果你想隐藏某元素，但在页面上保留该元素的空间的话，你应该使用 visibility: hidden 。如果你想在隐藏某元素的同时让其它内容填充空白的话应该使用 display: none 。</p>
<p>在现实中我（<em>作者</em>）更多的倾向于使用 display 属性（<em>相信这也是大多数人的习惯，bolo 注</em>）。当你决定用 display: none 来隐藏一个元素时，你必须知道其它内容将填充到该元素留下的空白位置，从而改变页面的布局。</p>
<h3>Visibility 和 Display 对 SEO 的影响</h3>
<p>有时我们会通过把堆砌的关键词隐藏而达到作弊的目的，但不应该使用 visibility: hidden 和 display: none ，而应该把关键词颜色设为和背景色相同，或者把关键词的字号设为非常小，而令访客无法发现。</p>
<p>有的人则因为害怕搜索蜘蛛的的反感而为 visibility: hidden 和 display: none 的使用的烦恼。其实有很多漂亮的效果是通过元素可见性的转换而实现的，搜索引擎也理解这一做法（<em>事实上搜索引擎往往忽略 CSS，bolo 注</em>），因此如果你的目的不是欺骗搜索引擎，你大可以放心地使用 visibility: hidden 和 display: none 去隐藏内容。</p>
<hr />
<p>原文链接：<a href="http://www.vanseodesign.com/css/visibility-vs-display/" rel="external">Visibility vs Display in CSS</a></p>
<p  class="related_post_title">Related Posts</p><ul class="related_post"><li><a href="http://blog.imbolo.com/wordpress-seo-tips/" title="WordPress SEO 技巧：内链优化">WordPress SEO 技巧：内链优化</a></li><li><a href="http://blog.imbolo.com/css-turn-off-webkit-browsers-input-highlight-and-textarea-resize/" title="CSS 屏蔽 Webkit 浏览器 input 高亮和 textarea 缩放">CSS 屏蔽 Webkit 浏览器 input 高亮和 textarea 缩放</a></li><li><a href="http://blog.imbolo.com/jquery-selectors/" title="jQuery选择器详解（一）">jQuery选择器详解（一）</a></li><li><a href="http://blog.imbolo.com/customizing-the-new-wordpress-3-0-custom-menus-adding-different-icons-to-each-link/" title="为 WordPress 3.0 的自定义菜单链接添加栏目图标">为 WordPress 3.0 的自定义菜单链接添加栏目图标</a></li><li><a href="http://blog.imbolo.com/center-multiple-divs-with-css/" title="CSS 多个子框架居中">CSS 多个子框架居中</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://blog.imbolo.com/css-visibility-vs-display/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>跨浏览器 CSS3 规则生成器</title>
		<link>http://blog.imbolo.com/cross-browser-css3-rule-generation/</link>
		<comments>http://blog.imbolo.com/cross-browser-css3-rule-generation/#comments</comments>
		<pubDate>Wed, 31 Mar 2010 17:38:38 +0000</pubDate>
		<dc:creator>bolo</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://blog.imbolo.com/?p=1780</guid>
		<description><![CDATA[CSS3 很强大，但目前各个浏览器对它的支持程度不同一直是 CSS3 不能被应用的主要原因。今天 Bolo 推荐两个在线跨浏览器 CSS3 规则生成器。]]></description>
			<content:encoded><![CDATA[<p>CSS3 很强大，但目前各个浏览器对它的支持程度不同一直是 CSS3 不能被应用的主要原因。今天 Bolo 推荐两个在线跨浏览器 CSS3 规则生成器。</p>
<h3><a href="http://css3please.com/">CSS3, please!</a></h3>
<p><img src="http://i1001.photobucket.com/albums/af131/bolo1988/css3please.jpg" alt="CSS3,Please!" /></p>
<p><strong>CSS3, please!</strong> 只有一个页面，上面以标准的 CSS 语法罗列了一些目前常用的 CSS3 属性在各种浏览器里的 hack ，通过点击各个属性上的 {toggle rule off/on} 可以禁用或启用该属性，页面的 logo 会做出相应的变化。<span id="more-1780"></span></p>
<h4>点评</h4>
<p>CSS3,Please! 的页面非常简洁，而且页面效果也几乎都是用纯 CSS 写成，而且其页面的 HTML 标签写得非常工整。我们不但可以在这里查找 CSS3 hack ，对新手 CSS + DIV 水平的提高也有一定的好处。</p>
<h3><a href="http://www.css3generator.com/">CSS3 Generator</a></h3>
<p><img src="http://i1001.photobucket.com/albums/af131/bolo1988/css3generator.png" alt="CSS3 Generator" /></p>
<p>CSS3 Generator 是一个在线的 CSS3 编辑器，我们可以查找某个 CSS3 属性的写法，并且进行编辑。而且在属性编写页面我们可以看到这个属性支持哪个版本的浏览器。</p>
<h4>点评</h4>
<p>CSS3 Generator 类似一个 CSS3 属性的目录，拥有属性编写功能是一大亮点。但其演示过于简陋。</p>
<h3>后记</h3>
<p>从两个在线 CSS3 规则生成器我们可以看到 CSS3 的强大，但由于标准未定型，我们只能在一部分现代浏览器里体验到 CSS3 带来的震撼效果。在这里 Bolo 再次许愿 CSS3 标准尽快确定下来，并且奉劝各位抛弃<strong>老式浏览器</strong>。</p>
<h3>小知识：老式浏览器</h3>
<p>通常指 IE 7、Firefox 3、Safari 3、Chrome 4 以及 Opera 9 之前的浏览器和使用这些核心的浏览器。我们通常可以看见一些人说：“我不用 IE 这个垃圾浏览器，我用傲游”，其实例如绿色浏览器、糖果浏览器、世界之窗、搜狗浏览器、腾讯TT等都是基于 IE 核心的“壳”，我们不将这些“壳”作为一个独立的浏览器看待。Bolo 建议使用这些“壳”的朋友尽快把本机的 IE 升级到 IE8 。虽然搜狗浏览器和傲游浏览器已经叫出了双核的口号，但我认为目前这种技术并不成熟，而且它们也缺乏自主研发的核心（一般是集成 IE 和 Webkit 两个核心）。</p>
<p  class="related_post_title">Related Posts</p><ul class="related_post"><li><a href="http://blog.imbolo.com/css-turn-off-webkit-browsers-input-highlight-and-textarea-resize/" title="CSS 屏蔽 Webkit 浏览器 input 高亮和 textarea 缩放">CSS 屏蔽 Webkit 浏览器 input 高亮和 textarea 缩放</a></li><li><a href="http://blog.imbolo.com/jquery-selectors/" title="jQuery选择器详解（一）">jQuery选择器详解（一）</a></li><li><a href="http://blog.imbolo.com/customizing-the-new-wordpress-3-0-custom-menus-adding-different-icons-to-each-link/" title="为 WordPress 3.0 的自定义菜单链接添加栏目图标">为 WordPress 3.0 的自定义菜单链接添加栏目图标</a></li><li><a href="http://blog.imbolo.com/center-multiple-divs-with-css/" title="CSS 多个子框架居中">CSS 多个子框架居中</a></li><li><a href="http://blog.imbolo.com/the-css3-flexible-box-model-2/" title="CSS3 灵活的盒子模型(Flexible Box Module) – 2">CSS3 灵活的盒子模型(Flexible Box Module) – 2</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://blog.imbolo.com/cross-browser-css3-rule-generation/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
	</channel>
</rss>

