<?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; css</title>
	<atom:link href="http://blog.istef.info/tag/css/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.istef.info</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Sun, 06 Jun 2010 05:52:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
	<atom:link rel='hub' href='http://blog.istef.info/?pushpress=hub'/>
		<item>
		<title>跨浏览器的 inline-block 实现[CSS]</title>
		<link>http://blog.istef.info/2008/10/13/cross-browser-inline-block-css/</link>
		<comments>http://blog.istef.info/2008/10/13/cross-browser-inline-block-css/#comments</comments>
		<pubDate>Sun, 12 Oct 2008 16:45:59 +0000</pubDate>
		<dc:creator>iStef</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Experiences]]></category>
		<category><![CDATA[cross browser]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[ie]]></category>
		<category><![CDATA[inline-block]]></category>

		<guid isPermaLink="false">http://blog.istef.info/?p=1861</guid>
		<description><![CDATA[最近在为自己做个新站，想到了些效果，实现时碰到了些小麻烦，比如这个 inline block。所幸大多数问题都解决了，所以写出来分享一下。 我们在制作网页时，有时会希望一个元素既能像 block 一样定义宽度和高度，又可以像普通的 inline 一样不断行。例如下面这张图片中红线标出的地方： 通常我们实现这样的效果会使用这样的代码： &#60;a href=&#8221;#&#8221;&#62;&#60;img src=&#8221;&#8230;.&#8221; alt=&#8221;&#8230;.&#8221; /&#62;&#60;/a&#62; 这样虽然可以达到目的，但相对来说代码还是不够精炼，也不够灵活。而理想的方式，我们仅通过下面的代码即可实现： &#60;a href=&#8221;#&#8221;&#62;Yangliu.name&#60;/a&#62; 这样一来，我们就需要对 a 标签指定 width height 和 background-image。但 a 标签默认的 display 属性是 inline，width、height 是无效的。而如果对 a 设置 display:block，虽然可以解决宽度高度的问题，但元素会自动断行，无法达到我们需要的效果。有没有什么方式可以实现类似 img 标签那样，既可以设定高度宽度，又不会自动断行呢？ 答案是肯定的。在 Opera 和 Webkit 中支持一个 CSS2 的属性 display: inline-block。利用这个属性，在 Opera 下即可完全实现我们所需的效果，但在其它浏览器下就不行了。 display 属性另外还有一个不太常用的值 display: inline-table。利用这个值也可以完全实现我们所需的效果。这个属性被除了 IE 以外的所有浏览器正确支持，但是&#8230;&#8230; 呃，又是 IE。虽然在面对 CSS [...]]]></description>
			<content:encoded><![CDATA[<p>最近在为自己做个新站，想到了些效果，实现时碰到了些小麻烦，比如这个 inline block。所幸大多数问题都解决了，所以写出来分享一下。</p>
<p>我们在制作网页时，有时会希望一个元素既能像 block 一样定义宽度和高度，又可以像普通的 inline 一样不断行。例如下面这张图片中红线标出的地方：</p>
<p><a href="http://blog.istef.info/wp-content/uploads/2008/10/final-result.jpg"><img class="alignnone size-full wp-image-1862" title="inline-block" src="http://blog.istef.info/wp-content/uploads/2008/10/final-result.jpg" alt="" width="397" height="81" /></a></p>
<p>通常我们实现这样的效果会使用这样的代码：</p>
<blockquote><p>&lt;a href=&#8221;#&#8221;&gt;&lt;img src=&#8221;&#8230;.&#8221; alt=&#8221;&#8230;.&#8221; /&gt;&lt;/a&gt;</p></blockquote>
<p>这样虽然可以达到目的，但相对来说代码还是不够精炼，也不够灵活。而理想的方式，我们仅通过下面的代码即可实现：</p>
<blockquote><p>&lt;a href=&#8221;#&#8221;&gt;Yangliu.name&lt;/a&gt;</p></blockquote>
<p>这样一来，我们就需要对 a 标签指定 width height 和 background-image。但 a 标签默认的 display 属性是 inline，width、height 是无效的。而如果对 a 设置 display:block，虽然可以解决宽度高度的问题，但元素会自动断行，无法达到我们需要的效果。有没有什么方式可以实现类似 img 标签那样，既可以设定高度宽度，又不会自动断行呢？</p>
<p>答案是肯定的。在 Opera 和 Webkit 中支持一个 CSS2 的属性 display: inline-block。利用这个属性，在 Opera 下即可完全实现我们所需的效果，但在其它浏览器下就不行了。</p>
<p>display 属性另外还有一个不太常用的值 display: inline-table。利用这个值也可以完全实现我们所需的效果。这个属性被除了 IE 以外的所有浏览器正确支持，但是&#8230;&#8230; 呃，又是 IE。虽然在面对 CSS 的时候所有 Web Developer 都会恨之入骨，但放弃 IE 就等于放弃 70% 的用户，所以我们还是得找出其它的解决方案。</p>
<p>没辙了，只好 Google，结果还真给我<a href="http://foohack.com/2007/11/cross-browser-support-for-inline-block-styling/" target="_blank">找到了</a>。在这篇文章中指出，如果你首先触发 IE 的 hasLayout，然后再设置它的 display: inline，这个元素将变为 inline-block! 这样一来，我们就可以利用 IE 这个不可理喻的特点，结合一些 CSS Hacks，给出兼容各种浏览器的 CSS 代码：</p>
<blockquote>
<pre>.<strong><em>element-class</em></strong> {
    display: -moz-inline-stack;  //Firefox only code
    display: inline-block;       //some standard browsers
    zoom: 1;                     //IE only
    *display: inline;            //Only IE know this code (CSS Hack)
}</pre>
</blockquote>
<p>通过这样的代码就可以实现在各种浏览器中表现一致的 inline-block 了。不过这种方式有个小缺憾，就是无法通过 W3C CSS 验证。当然，要想通过验证也很简单，可以对除了 IE 之外的浏览器发出 inline-table 属性的样式表，对于 IE 单独发出一份 IE Only 的 CSS。
<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.istef.info%2F2008%2F10%2F13%2Fcross-browser-inline-block-css%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.istef.info%2F2008%2F10%2F13%2Fcross-browser-inline-block-css%2F&amp;style=compact&amp;service=bit.ly&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.istef.info/2008/10/13/cross-browser-inline-block-css/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>让 IE &lt; 7 支持 position:fixed 的通用方法</title>
		<link>http://blog.istef.info/2008/04/13/css-position-fixed-for-ie6/</link>
		<comments>http://blog.istef.info/2008/04/13/css-position-fixed-for-ie6/#comments</comments>
		<pubDate>Sun, 13 Apr 2008 07:13:09 +0000</pubDate>
		<dc:creator>iStef</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[fixed]]></category>
		<category><![CDATA[position]]></category>

		<guid isPermaLink="false">http://blog.istef.info/2008/04/13/css-position-fixed-for-ie6/</guid>
		<description><![CDATA[每个 Web Developer / Designer 都知道 CSS 的 position:fixed 的妙用。利用这个属性，我们可以轻松的将一个元素“固定”在页面的某个位置。这在我们做一些特殊的效果，例如页边角的小角旗，或是固定页面底下的脚注都是非常有用的。但是万恶的 IE 却对这个属性支持有问题，尽管 IE7/8 已经能够正确处理这个属性，但 IE6 的份额还是很高，所以当我们用这个属性时，还得想办法解决这个问题。 今天在一位德国朋友的博客上，看到了一个不错的通用解决方案。这里我简单介绍，或者说翻译一下作者的方法： 在 Firefox/Opera 等良好支持 W3C 标准的浏览器中，如果我们希望将某个元素固定在页面底部，我们可以给它指派这样的 CSS： position: fixed;bottom: 0; 对于 IE7 来说，它虽然可以正确的将这个元素 fix 在底部，但它却错误的处理了水平方向的位置。对于这个问题，我们可以利用一个原有的 hack 来解决： left: 50%;margin-left: -390px; 这里 margin-left 的值应该修改为您页面主要区域宽度的一半。这样 IE7 下基本也就完美了。剩下需要解决的就是 IE6, IE5.5 的问题了，他们不懂得 position: fixed 属性，所以我们需要单独解决一下： 首先我们为这些浏览器单独创建一个样式表，我们可以利用条件注释语句，让 IE&#60;7 的浏览器单独载入这个“多于”的样式表： &#60;!&#8211;[if IE lt 7]&#62;&#60;link rel=&#8221;stylesheet&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p>每个 Web Developer / Designer 都知道 CSS 的 position:fixed 的妙用。利用这个属性，我们可以轻松的将一个元素“固定”在页面的某个位置。这在我们做一些特殊的效果，例如页边角的小角旗，或是固定页面底下的脚注都是非常有用的。但是万恶的 IE 却对这个属性支持有问题，尽管 IE7/8 已经能够正确处理这个属性，但 IE6 的份额还是很高，所以当我们用这个属性时，还得想办法解决这个问题。</p>
<p>今天在一位<a href="http://bassistance.de/2006/11/02/position-fixed-for-ie-7/">德国朋友的博客</a>上，看到了一个不错的通用解决方案。这里我简单介绍，或者说翻译一下作者的方法：</p>
<p>在 Firefox/Opera 等良好支持 W3C 标准的浏览器中，如果我们希望将某个元素固定在页面底部，我们可以给它指派这样的 CSS：</p>
<blockquote><p>position: fixed;<br />bottom: 0;</p>
</blockquote>
<p>对于 IE7 来说，它虽然可以正确的将这个元素 fix 在底部，但它却错误的处理了水平方向的位置。对于这个问题，我们可以利用一个原有的 hack 来解决：</p>
<blockquote><p>left: 50%;<br />margin-left: -390px;</p>
</blockquote>
<p>这里 margin-left 的值应该修改为您页面主要区域宽度的一半。这样 IE7 下基本也就完美了。剩下需要解决的就是 IE6, IE5.5 的问题了，他们不懂得 position: fixed 属性，所以我们需要单独解决一下：</p>
<p>首先我们为这些浏览器单独创建一个样式表，我们可以利用条件注释语句，让 IE&lt;7 的浏览器单独载入这个“多于”的样式表：</p>
<blockquote><p>&lt;!&#8211;[if IE lt 7]&gt;<br />&lt;link rel=&#8221;stylesheet&#8221; href=&#8221;path/to/stylesheet/ie-stuff.css&#8221; type=&#8221;text/css&#8221; media=&#8221;screen&#8221; /&gt;<br />&lt;![endif]&#8211;&gt;</p>
</blockquote>
<p>然后我们在这个 CSS 文件中，对这个需要固定在页面底部的元素添加 CSS 属性：</p>
<blockquote><p>postion: absolute;<br />bottom: auto;<br />top: expression( eval(document.compatMode &amp;&amp; document.compatMode==&#8217;CSS1Compat&#8217;) ? documentElement.scrollTop + (documentElement.clientHeight &#8211; this.clientHeight) &#8211; 1 : document.body.scrollTop + (document.body.clientHeight &#8211; this.clientHeight) &#8211; 1);</p>
</blockquote>
<p>这里事实上就是利用了 IE 中特有的 CSS 运算符 expression。在 expression 中我们可以利用 Javascript 计算出需要的 top 值，这样就达到了与 position: fixed 同样的效果。</p>
<p>这种方法原理上来说和以前的 Javascript 方案是相同的，但这种方法显然通用性更好一点。当然，如果您不介意用 Javascript 的话，实现同样的效果会更直观更简单一点。</p>
<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.istef.info%2F2008%2F04%2F13%2Fcss-position-fixed-for-ie6%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.istef.info%2F2008%2F04%2F13%2Fcss-position-fixed-for-ie6%2F&amp;style=compact&amp;service=bit.ly&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.istef.info/2008/04/13/css-position-fixed-for-ie6/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>如何写一个很小的 CSS 文件</title>
		<link>http://blog.istef.info/2007/09/24/how-to-create-small-css-files/</link>
		<comments>http://blog.istef.info/2007/09/24/how-to-create-small-css-files/#comments</comments>
		<pubDate>Mon, 24 Sep 2007 15:39:54 +0000</pubDate>
		<dc:creator>iStef</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[compress]]></category>
		<category><![CDATA[css]]></category>

		<guid isPermaLink="false">http://blog.istef.info/2007/09/24/how-to-create-small-css-files/</guid>
		<description><![CDATA[看了这篇文章，想想自己也经常和 CSS 打交道，对于压缩 CSS 还是有一点心得。总结一下，和大家分享。 我们知道，在 XHTML+CSS 布局流行的今天，CSS 已经成为一个网站事实上的“门面”。那么为什么我们需要一个尽可能小的 CSS 文件呢？这主要是基于流量和读取速度两方面考虑。小的 CSS 文件可以节省你的服务器流量，同时缩短用户打开你网页所需的时间。既节省了流量开支，又获得了更好的用户体验，何乐不为呢？下面我们一起看看有哪些缩小 CSS 的方法。 简化你的注释很多情况下，特别是曾经从事过 C/Java 等语言开发工作的程序员，可能会喜欢写多行注释，例如：/*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;*//*&#8212;comments&#8212;&#8212;&#8211;*//*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;*/在编译语言中这样的注释当然没有问题，但在 CSS 中他们会显著的增大 CSS 文件的体积，应该尝试简化成这样：/*Comments*/这样在保持可读性的同时，减小了文件体积。事实上，在一个真正发布版本的 CSS 文件中，你完全可以去掉这些注释。 简化颜色代码在 CSS 中，我们经常会跟十六进制颜色代码打交道。你可能习惯于写成以下“标准形式”：color: #ffffff;color: #ff88ff;事实上，在 CSS 中是可以简化这个写法的，我们可以写成：color: #fff;color: #f8f; 使用单行属性代替多行属性在 CSS 中像 margin/padding/font/border 等属性均可以用一行来代替很多行设置，例如：padding-top: 10px;padding-bottom: 10px;padding-left: 0;padding-right: 0;我们可以写成：padding: 10px 0 10px 0;顺序为上、右、下、左，当然，对于 margin 和 padding 属性，当左右/上下的值相同时，还可以写的更简单，例如上面的例子，可写为：padding: 10px 0;上下左右都相同时，甚至可以写成：padding: 10px;对于其它缩写方法，可以参考网上一些资料。当然，我更推荐使用 TopStyle 这款软件在写 [...]]]></description>
			<content:encoded><![CDATA[<p align="center"><img height="181" alt="2007-9-34" src="http://blog.istef.info/wp-content/uploads/wlw-upload/CSS_143CE/2007934.jpg" width="429" border="0"> </p>
<p>看了<a href="http://www.divitodesign.com/blog/2007/09/create-smaller-css-files/">这篇文章</a>，想想自己也经常和 CSS 打交道，对于压缩 CSS 还是有一点心得。总结一下，和大家分享。</p>
<p>我们知道，在 XHTML+CSS 布局流行的今天，CSS 已经成为一个网站事实上的“门面”。那么为什么我们需要一个尽可能小的 CSS 文件呢？这主要是基于流量和读取速度两方面考虑。小的 CSS 文件可以节省你的服务器流量，同时缩短用户打开你网页所需的时间。既节省了流量开支，又获得了更好的用户体验，何乐不为呢？下面我们一起看看有哪些缩小 CSS 的方法。</p>
<ol>
<li><strong>简化你的注释</strong><br />很多情况下，特别是曾经从事过 C/Java 等语言开发工作的程序员，可能会喜欢写多行注释，例如：<br /><em>/*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;*/<br />/*&#8212;comments&#8212;&#8212;&#8211;*/<br />/*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;*/<br /></em>在编译语言中这样的注释当然没有问题，但在 CSS 中他们会显著的增大 CSS 文件的体积，应该尝试简化成这样：<br /><em>/*Comments*/<br /></em>这样在保持可读性的同时，减小了文件体积。事实上，在一个真正发布版本的 CSS 文件中，你完全可以去掉这些注释。
<li><strong>简化颜色代码</strong><br />在 CSS 中，我们经常会跟十六进制颜色代码打交道。你可能习惯于写成以下“标准形式”：<br /><em>color: #ffffff;<br />color: #ff88ff;<br /></em>事实上，在 CSS 中是可以简化这个写法的，我们可以写成：<br /><em>color: #fff;<br />color: #f8f;</em>
<li><strong>使用单行属性代替多行属性</strong><br />在 CSS 中像 margin/padding/font/border 等属性均可以用一行来代替很多行设置，例如：<br /><em>padding-top: 10px;<br />padding-bottom: 10px;<br />padding-left: 0;<br />padding-right: 0;<br /></em>我们可以写成：<br /><em>padding: 10px 0 10px 0;</em><br />顺序为上、右、下、左，当然，对于 margin 和 padding 属性，当左右/上下的值相同时，还可以写的更简单，例如上面的例子，可写为：<br /><em>padding: 10px 0;<br /></em>上下左右都相同时，甚至可以写成：<br /><em>padding: 10px;</em><br />对于其它缩写方法，可以参考网上一些资料。当然，我更推荐使用 TopStyle 这款软件在写 CSS 的过程中学习，它会给出具体提示。
<li><strong>当值为 0 时可省略掉单位</strong><br />例如：<em>padding: 0;</em>
<li><strong>同时设定多个元素的属性<br /></strong>举例说明。例如：<br /><em>h1 {<br />&nbsp;&nbsp;&nbsp; margin: 0;<br />&nbsp;&nbsp;&nbsp; padding: 0;<br />}<br />h2 {<br />&nbsp;&nbsp;&nbsp; margin: 0;<br />&nbsp;&nbsp;&nbsp; padding: 0;<br />}<br />h3 {<br />&nbsp;&nbsp;&nbsp; margin: 0;<br />&nbsp;&nbsp;&nbsp; padding: 0;<br />}<br /></em>更赞的写法是这样：<br /><em>h1,h2,h3 {<br />&nbsp;&nbsp;&nbsp; margin: 0;<br />&nbsp;&nbsp;&nbsp; padding: 0;<br />}</em>
<li><strong>删除空白和换行<br /></strong>这是个很不起眼的操作，但对于脱离了开发阶段，而要应用在网络上的 CSS 而言应该进行这样的处理，至少 Google 所有应用都是这样做的。举个例子：<br /><em>h1&nbsp; {<br />&nbsp;&nbsp;&nbsp; margin: 0;<br />&nbsp;&nbsp;&nbsp; padding: 0;<br />}<br />blockquote {<br />&nbsp;&nbsp;&nbsp; background-color: #ffcccc;<br />}<br /></em>应该处理成：<br /><em>h1{margin:0;padding:0;}<br />blockquote{background:#fcc;}<br /></em>事实上，在 CSS 文件中可以不需要任何换行的。但是为了保持代码那么一点点可读性，我还是比较建议每个元素写成一行。现在可以利用一些工具来进行类似的操作，因此它将不会影响你的开发过程。
<li><strong>设定过期时间，使用 GZip<br /></strong>如果有条件的话，我们应该设定 CSS 文件的过期时间，并开启 GZip 来传输 CSS 文件。设定前者可以让流行的浏览器缓存你的 CSS 文件，从而避免每次 Load 都要读取文件，大大加快速度同时也降低流量消耗。而开启 GZip 则可以让你的 CSS 文件缩小的难以想象的程度，而且如今流行的浏览器都是支持 GZip 的。</li>
</ol>
<div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:1ed3da80-b5c5-4fc0-9839-a47cfcb736ef" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"></div>
<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.istef.info%2F2007%2F09%2F24%2Fhow-to-create-small-css-files%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.istef.info%2F2007%2F09%2F24%2Fhow-to-create-small-css-files%2F&amp;style=compact&amp;service=bit.ly&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.istef.info/2007/09/24/how-to-create-small-css-files/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>如何制作一个漂亮的 CSS 按钮</title>
		<link>http://blog.istef.info/2007/05/09/how-to-make-a-sexy-css-button/</link>
		<comments>http://blog.istef.info/2007/05/09/how-to-make-a-sexy-css-button/#comments</comments>
		<pubDate>Wed, 09 May 2007 12:06:15 +0000</pubDate>
		<dc:creator>iStef</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[howto]]></category>

		<guid isPermaLink="false">http://blog.istef.info/2007/05/09/how-to-make-a-sexy-css-button/</guid>
		<description><![CDATA[如今 Web Application 横行，在 Web 2.0 网站的各种设计元素中，按钮是无法或缺的。如何用最简洁的方法制作最漂亮的按钮就成为了一个问题。本文讲述的方法，代码上简洁，符合 XHTML 标准，不需要 Javascript，只需要纯 CSS 即可完成，而且通用性很好，使用起来也很方便。上图即为最终成品的例子，您也可以通过演示页面体验一下。下面我将详述整个制作过程，相信通过这个教程您肯定可以学会。 第一步：准备图片 对于一个好的 UI，一个很重要的方面就是要能及时的与用户发生交互。对于按钮来说，我们需要让按钮相应各种鼠标事件，让用户知道它是可以按下的。如上图，我们要制作的按钮共有三种状态：正常状态、鼠标划过、鼠标按下。通常情况下，我们会想到利用 onclick、onmouseover 这样的事件来控制，而事实上，我们完全可以利用通用性、便捷性更好的 CSS 代替 Javascript 来完成这个过程。尽可能将表现的事情交给 CSS 来做，这也是良好设计的原则之一。 为了能够实现这种效果，我们需要准备三个状态的图片。利用 CSS 的 background-position 属性，我们完全可以将三种状态的图片放在一张图片中，这样可以获得更好的缓存效果。 此外，按钮两侧的圆角也是比较烦人的问题。因为我们要制作的按钮需要能够自动适应内部文字的长度，因此我们需要应用一种叫做“拉门技术 (Sliding door technique)”的 CSS 技巧。具体原理不讲了，这里只介绍具体做法： 我们使用超链接来生成按钮，为了使用 Sliding door technique，我们需要按照如下方式书写 HTML 代码： &#60;a class=&#34;button&#34; href=&#34;http://some_where&#34;&#62;&#60;span&#62;Button Text&#60;/span&#62;&#60;/a&#62; 随后，我们需要准备两张图片，作为按钮的背景（分别为 span 标签和 a 标签的），具体示意图如下： 这里需要指出，280px 并不是绝对的，它代表了这个按钮在您的应用中可能用到的最大值。此外，所有的值都可以根据您实际的背景图做出更改。 第二步：书写 CSS 代码 为了能够让 [...]]]></description>
			<content:encoded><![CDATA[<p><!--SPONSOR=[PAGEFLAKES]-->
<p style="text-indent:0;text-align:center"><img src='http://blog.istef.info/wp-content/uploads/2007/05/2007-5-9.jpg' alt='CSS Button' /></p>
<p>如今 Web Application 横行，在 Web 2.0 网站的各种设计元素中，按钮是无法或缺的。如何用最简洁的方法制作最漂亮的按钮就成为了一个问题。本文讲述的方法，代码上简洁，符合 XHTML 标准，不需要 Javascript，只需要纯 CSS 即可完成，而且通用性很好，使用起来也很方便。上图即为最终成品的例子，您也可以通过<a href="http://blog.istef.info/demo/cssbutton">演示页面</a>体验一下。下面我将详述整个制作过程，相信通过这个教程您肯定可以学会。</p>
<p><strong>第一步：准备图片</strong></p>
<p style="text-indent:0;text-align:center"><img src='http://blog.istef.info/wp-content/uploads/2007/05/2007-5-9-1.jpg' alt='按钮状态' /></p>
<p>对于一个好的 UI，一个很重要的方面就是要能及时的与用户发生交互。对于按钮来说，我们需要让按钮相应各种鼠标事件，让用户知道<strong>它是可以按下的</strong>。如上图，我们要制作的按钮共有三种状态：<strong>正常状态</strong>、<strong>鼠标划过</strong>、<strong>鼠标按下</strong>。通常情况下，我们会想到利用 onclick、onmouseover 这样的事件来控制，而事实上，我们完全可以利用通用性、便捷性更好的 CSS 代替 Javascript 来完成这个过程。尽可能将表现的事情交给 CSS 来做，这也是良好设计的原则之一。</p>
<p>为了能够实现这种效果，我们需要准备三个状态的图片。利用 CSS 的 background-position 属性，我们完全可以将三种状态的图片放在一张图片中，这样可以获得更好的缓存效果。</p>
<p>此外，按钮两侧的圆角也是比较烦人的问题。因为我们要制作的按钮需要<strong>能够自动适应内部文字的长度</strong>，因此我们需要应用一种叫做“<a href="http://alistapart.com/articles/slidingdoors/">拉门技术 (Sliding door technique)</a>”的 CSS 技巧。具体原理不讲了，这里只介绍具体做法：</p>
<p>我们使用超链接来生成按钮，为了使用 Sliding door technique，我们需要按照如下方式书写 HTML 代码：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Olive;">&lt;</span><span style="color: Green;">a</span><span style="color: Gray;"> </span><span style="color: #00008b;">class</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">button</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">href</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">http://some_where</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;&lt;</span><span style="color: Green;">span</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">Button Text</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">span</span><span style="color: Olive;">&gt;&lt;/</span><span style="color: Green;">a</span><span style="color: Olive;">&gt;</span></li></ol></div>
<p>随后，我们需要准备两张图片，作为按钮的背景（分别为 span 标签和 a 标签的），具体示意图如下：</p>
<p style="text-indent:0;text-align:center"><img src='http://blog.istef.info/wp-content/uploads/2007/05/2007-5-9-2.jpg' alt='背景图及布局示意图' /></p>
<p>这里需要指出，280px 并不是绝对的，它代表了这个按钮在您的应用中可能用到的最大值。此外，所有的值都可以根据您实际的背景图做出更改。</p>
<p><strong>第二步：书写 CSS 代码</strong></p>
<p>为了能够让 A 标签准确的显示我们需要的效果，我们需要设定其 display 属性为 block，但是，很多情况下，我们需要在同一行中显示多个按钮，我们可以通过设定 float:left 或 float:right 来达到。提醒一下，这样设定後，当您放置完按钮后不要忘记 clear 一下 <img src='http://blog.istef.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> 。</p>
<p>首先看看显示基本布局的代码，本例中，两侧圆角部分为 10px，按钮高度为 24px，保留区域为 1px：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Blue;">a.button</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; </span><span style="color: Green;">background:</span><span style="color: Gray;">&nbsp;</span><span style="color: Red;">transparent</span><span style="color: Gray;"> url(a.gif) </span><span style="color: Red;">no-repeat</span><span style="color: Gray;"> </span><span style="color: Red;">scroll</span><span style="color: Gray;"> </span><span style="color: Red;">right</span><span style="color: Gray;"> </span><span style="color: Red;">top</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; </span><span style="color: Green;">color:</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">White</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; </span><span style="color: Green;">display:</span><span style="color: Gray;">&nbsp;</span><span style="color: Red;">block</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; </span><span style="color: Green;">float:</span><span style="color: Gray;">&nbsp;</span><span style="color: Red;">left</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; </span><span style="color: Green;">height:</span><span style="color: Gray;">&nbsp;</span><span style="color: Maroon;">24</span><span style="color: Red;">px</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; </span><span style="color: Green;">padding-right:</span><span style="color: Gray;">&nbsp;</span><span style="color: Maroon;">10</span><span style="color: Red;">px</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; </span><span style="color: Green;">font:</span><span style="color: Gray;">&nbsp;</span><span style="color: Red;">normal</span><span style="color: Gray;"> </span><span style="color: Maroon;">12</span><span style="color: Red;">px</span><span style="color: Gray;"> </span><span style="color: Red;">sans-serif</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; </span><span style="color: Green;">margin-right:</span><span style="color: Gray;">&nbsp;</span><span style="color: Maroon;">10</span><span style="color: Red;">px</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; </span><span style="color: Green;">text-decoration:</span><span style="color: Gray;">&nbsp;</span><span style="color: Red;">none</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">a.button</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">span</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; </span><span style="color: Green;">background:</span><span style="color: Gray;">&nbsp;</span><span style="color: Red;">transparent</span><span style="color: Gray;"> url(span.gif) </span><span style="color: Red;">no-repeat</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; </span><span style="color: Green;">display:</span><span style="color: Gray;">&nbsp;</span><span style="color: Red;">block</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; </span><span style="color: Green;">padding:</span><span style="color: Gray;">&nbsp;</span><span style="color: Maroon;">5</span><span style="color: Red;">px</span><span style="color: Gray;"> </span><span style="color: Maroon;">1</span><span style="color: Red;">px</span><span style="color: Gray;"> </span><span style="color: Maroon;">5</span><span style="color: Red;">px</span><span style="color: Gray;"> </span><span style="color: Maroon;">11</span><span style="color: Red;">px</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; </span><span style="color: Green;">line-height:</span><span style="color: Gray;">&nbsp;</span><span style="color: Maroon;">14</span><span style="color: Red;">px</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li></ol></div>
<p>这里需要指出的是：1. 保留区 (1px) 是包含在 SPAN 中的，具体可以注意看 padding 的设置；2. SPAN  的 <em>line-height</em> + <em>padding-top</em> + <em>padding-bottom</em>  = A 的 <em>height</em>。</p>
<p>经过这样设定后，我们的按钮的基本样式就完成了，但它还没有交互效果，我们通过设定 a:hover 和 a:active 来实现：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Blue;">a.button</span><span style="color: Navy;">:hover</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; </span><span style="color: Green;">background-position:</span><span style="color: Gray;">&nbsp;</span><span style="color: Red;">right</span><span style="color: Gray;"> -</span><span style="color: Maroon;">24</span><span style="color: Red;">px</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">a.button</span><span style="color: Navy;">:hover</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">span</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; </span><span style="color: Green;">background-position:</span><span style="color: Gray;">&nbsp;</span><span style="color: Red;">left</span><span style="color: Gray;"> -</span><span style="color: Maroon;">24</span><span style="color: Red;">px</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">a.button</span><span style="color: Navy;">:active</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; </span><span style="color: Green;">background-position:</span><span style="color: Gray;">&nbsp;</span><span style="color: Red;">right</span><span style="color: Gray;"> -</span><span style="color: Maroon;">48</span><span style="color: Red;">px</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">a.button</span><span style="color: Navy;">:active</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">span</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; </span><span style="color: Green;">background-position:</span><span style="color: Gray;">&nbsp;</span><span style="color: Red;">left</span><span style="color: Gray;"> -</span><span style="color: Maroon;">48</span><span style="color: Red;">px</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; </span><span style="color: Green;">padding:</span><span style="color: Gray;">&nbsp;</span><span style="color: Maroon;">6</span><span style="color: Red;">px</span><span style="color: Gray;"> </span><span style="color: Maroon;">0</span><span style="color: Gray;"> </span><span style="color: Maroon;">4</span><span style="color: Red;">px</span><span style="color: Gray;"> </span><span style="color: Maroon;">12</span><span style="color: Red;">px</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li></ol></div>
<p>我们看到，主要是应用了 background-position 属性调整背景图片的位置，这比使用多张图片效果更好。在 <em>a.button:active span</em> 中，我们重新设定了 padding 的值，使字符向右下方移动 1px，按下的效果更明显，这也是之前提到的保留区的作用。</p>
<p><strong>第三部：最后完善</strong></p>
<p>其实做完上面两部，我们的按钮基本上已经完工了。但是在各种浏览器中都有一个讨厌的问题，就是当超链接被点击后，会留下一个讨厌的虚线框。这个破坏美观的东西，我们当然要干掉它。</p>
<p>Firefox、Safari 等支持 W3C CSS2 的浏览器，可以通过设定 CSS 的 outline 属性来做到这一点。在我们这个例子中，只需做如下改动：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Blue;">a.button</span><span style="color: Navy;">:active</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; </span><span style="color: Green;">background-position:</span><span style="color: Gray;">&nbsp;</span><span style="color: Red;">right</span><span style="color: Gray;"> -</span><span style="color: Maroon;">48</span><span style="color: Red;">px</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; </span><span style="color: Green;">outline:</span><span style="color: Gray;">&nbsp;</span><span style="color: Red;">none</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li></ol></div>
<p>在 Firefox 中看看，虚框已经消失了。</p>
<p>但 Internet Explore 不吃这一套，对付它就比较麻烦了，单单 CSS 无法解决问题，需要从 HTML 下手。我们需要将按钮的 HTML 代码改为以下形式：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Olive;">&lt;</span><span style="color: Green;">a</span><span style="color: Gray;"> </span><span style="color: #00008b;">class</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">button</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">href</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">http://some_where</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">onclick</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">this.blur();</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;&lt;</span><span style="color: Green;">span</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">Button Text</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">span</span><span style="color: Olive;">&gt;&lt;/</span><span style="color: Green;">a</span><span style="color: Olive;">&gt;</span></li></ol></div>
<p>这样，我们可以让超链接在点击后迅速失去焦点，从而避免虚框的出现。当然，如果我们应用中按钮比较少，这个方法还不错。但按钮比较多的情况下，我们还是应该用 DOM 方法来为 className 为 button 的 A 修改 onclick 事件（用 jQuery 或 Prototype 实现会很省心），不过这不在本文讨论的范围内了。</p>
<p>到这里，我们的按钮就算做好了，我相信您一定已经学会了。如果还有什么不明白的地方，您可以参考这个<a href="http://istef.info/demo/cssbutton/">简单的范例</a>，查看它的源代码来解决。当然，您也可以直接在本文後提问，我很乐意为您解答。</p>
<p><strong>UPDATE:</strong>谢谢 Dan Li 发来邮件提醒，我确实发现本文与<a href="http://www.oscaralexander.com/tutorials/how-to-make-sexy-buttons-with-css.html">这篇文章</a>如出一辙。早看到直接转过来就好了，白白折腾了两个小时。不知道留言中 DV 大侠所指的是不是这篇。不过我在写本文时并没有看过这篇文章，而且本文与原文还是有很大不同，而且原文中 CSS 有误 (background-position 的参数顺序不对)，虽然可以实现它所叙述的效果，但不符合 CSS 标准，也不能够进一步扩展，希望看了原文的朋友能够注意。</p>
<p><strong>如需在 <a href="http://creativecommons.org/licenses/by-nc/2.5/deed.zh">CC-BY-NC</a> 协议下引用，请保留以下链接，商业网站引用请<a href="/about#contact">与我联系</a>，谢谢合作。</strong><a href="http://blog.istef.info/2007/05/09/how-to-make-a-sexy-css-button">http://blog.istef.info/2007/05/09/how-to-make-a-sexy-css-button</a>
<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.istef.info%2F2007%2F05%2F09%2Fhow-to-make-a-sexy-css-button%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.istef.info%2F2007%2F05%2F09%2Fhow-to-make-a-sexy-css-button%2F&amp;style=compact&amp;service=bit.ly&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.istef.info/2007/05/09/how-to-make-a-sexy-css-button/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>将 Javascript 和 CSS 写进一个文件</title>
		<link>http://blog.istef.info/2007/05/05/combine-css-and-javascript-into-one-file/</link>
		<comments>http://blog.istef.info/2007/05/05/combine-css-and-javascript-into-one-file/#comments</comments>
		<pubDate>Fri, 04 May 2007 16:13:17 +0000</pubDate>
		<dc:creator>iStef</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[trick]]></category>

		<guid isPermaLink="false">http://blog.istef.info/2007/05/05/combine-css-and-javascript-into-one-file/</guid>
		<description><![CDATA[我们在优化页面载入速度时，其中一个原则就是减少外部引用资源的数量。但是由于主流浏览器对于外部引用的 Javascript 和 CSS 都会有缓存，因此我们习惯于将他们分别存入单独的文件中。你有没有想过，这两种文件可以写进同一个文件中呢？让我们来看看具体的实现方法吧。via msdn blog &#60;!-- /* function t(){} // 这里写入 Javascript &#60;!-- */ &#60;!-- body { background-color: Aqua; } 上面这段代码即可实现这个神奇的效果。当它被当作 Javascript 载入时，它其中的 JS 代码就会被执行，CSS 代码都会被忽略；而当它被当作 CSS 载入时，结果恰好相反。 为什么会这样呢？其实原理很简单，这是由于当今主流浏览器（IE &#038; Firefox）对于 JS 和 CSS 解释的方法。我们注意到，这段代码中多了很多不必要的 &#60;!&#8211; 以及 /* */，其实这就是奥妙所在。当代码被当作 Javascript 载入时，所有的 &#60;!&#8211; 都会被解释为 // 也就是 Javascript 的单行注释符号，所以，上面的代码变为： // /* function t(){} // 这里写入 [...]]]></description>
			<content:encoded><![CDATA[<p><!--SPONSOR=[PAGEFLAKES]-->我们在优化页面载入速度时，其中一个原则就是减少外部引用资源的数量。但是由于主流浏览器对于外部引用的 Javascript 和 CSS 都会有缓存，因此我们习惯于将他们分别存入单独的文件中。你有没有想过，这两种文件可以写进同一个文件中呢？让我们来看看具体的实现方法吧。via <a href="http://blogs.msdn.com/shivap/archive/2007/05/01/combine-css-with-js-and-make-it-into-a-single-download.aspx">msdn blog</a></p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: #ffa500;">&lt;!-- /*</span></li>
<li><span style="color: #ffa500;">function t(){} // 这里写入 Javascript</span></li>
<li><span style="color: #ffa500;">&lt;!-- */</span></li>
<li><span style="color: #ffa500;">&lt;!-- body { background-color: Aqua; }</span></li></ol></div>
<p>上面这段代码即可实现这个神奇的效果。当它被当作 Javascript 载入时，它其中的 JS 代码就会被执行，CSS 代码都会被忽略；而当它被当作 CSS 载入时，结果恰好相反。</p>
<p>为什么会这样呢？其实原理很简单，这是由于当今主流浏览器（IE &#038; Firefox）对于 JS 和 CSS 解释的方法。我们注意到，这段代码中多了很多不必要的 <strong>&lt;!&#8211;</strong> 以及 <strong>/*</strong> <strong>*/</strong>，其实这就是奥妙所在。当代码被当作 Javascript 载入时，所有的 &lt;!&#8211; 都会被解释为 // 也就是 Javascript 的单行注释符号，所以，上面的代码变为：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">// /*</li>
<li>function t(){} // 这里写入 Javascript</li>
<li>// */</li>
<li>// body { background-color: Aqua; }</li></ol></div>
<p>CSS 被注释掉，而 Javascript 则被顺利的执行了。当代码被当作 CSS 载入时，所有的 &lt;!&#8211; 都会被忽略，于是代码变为：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">/*</li>
<li>function t(){} // 这里写入 Javascript</li>
<li>&nbsp;*/</li>
<li>&nbsp;body { background-color: Aqua; }</li></ol></div>
<p>/* */ 为 CSS 注释符，包含在之间的文字被认为是 CSS 注释。因此上面的代码中 Javascript 被注释掉了，只剩下正常的 CSS 可以被解释。</p>
<p>这段代码构思非常精巧，很好的利用了 Javascript 和 CSS 解释器的特性。但是我个人并不推荐将此方法推广，原因如下：1. 增加了代码的复杂度，阅读和修改都不是很方便；2. 多于的 &lt;!&#8211; /* 会占用不少字节，实际上也是在浪费宝贵的带宽，延长载入时间。我个人还是推荐使用 Javascript 或 CSS 压缩的办法来提高效率。当然，如果您的应用确实需要尽可能少的载入文件的话，这倒不失为一个解决问题的好办法。
<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.istef.info%2F2007%2F05%2F05%2Fcombine-css-and-javascript-into-one-file%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.istef.info%2F2007%2F05%2F05%2Fcombine-css-and-javascript-into-one-file%2F&amp;style=compact&amp;service=bit.ly&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.istef.info/2007/05/05/combine-css-and-javascript-into-one-file/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>付费写网页的 XHTMLGenius</title>
		<link>http://blog.istef.info/2006/12/15/xhtmlgenius/</link>
		<comments>http://blog.istef.info/2006/12/15/xhtmlgenius/#comments</comments>
		<pubDate>Fri, 15 Dec 2006 07:35:37 +0000</pubDate>
		<dc:creator>iStef</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://blog.istef.info/2006/12/15/%e4%bb%98%e8%b4%b9%e5%86%99%e7%bd%91%e9%a1%b5%e7%9a%84-xhtmlgenius/</guid>
		<description><![CDATA[写 XHTML 和 CSS 确实是件累活，而且越是对这个东西熟悉的人，越觉得它就像是体力活毫无趣味。XHTMLGenius 的出现，为解决这一问题提供了一套方案。 从 XHTMLGenius 的网站上看，这应该是一项人工服务。客户只需要将设计图给他们，并接受他们的报价（至少 $250），他们就会在 3 个工作日内为您写好 XHTML 和 CSS，并承诺其作品为良好构建的，整洁的并可以通过验证的 XHTML 和 CSS。同时，他们也保证最终作品可以在 IE，Firefox 和 Safari 中均能正常显示，真正实现了跨平台的要求。 在 Shook.ca 上有一篇文章对这个服务进行了简单评价，貌似结果还是很令人满意的。不过 $250+ 的价格真是不便宜，给我设计图 + $200 估计至多 4-5 天我也能够达 XHTMLGenius 提出的要求。不过对于那些工作任务繁重的设计大牛们来说，花上 $250 把自己从乏味的 HTML 代码中解放出来，从而专心于设计，应该还是有一定意义的。 btw: Shook.ca 上还有另一篇 Web 设计方面的好文，推荐去看看。]]></description>
			<content:encoded><![CDATA[<p><!--SPONSOR=[PAGEFLAKES]--><img id="image603" src="http://blog.istef.info/wp-content/uploads/2006/12/2006-12-15.jpg" alt="XHTMLGenius" style="float:left" />写 XHTML 和 CSS 确实是件累活，而且越是对这个东西熟悉的人，越觉得它就像是体力活毫无趣味。<a href="http://www.xhtmlgenius.com/">XHTMLGenius</a> 的出现，为解决这一问题提供了一套方案。</p>
<p>从 XHTMLGenius 的网站上看，这应该是一项人工服务。客户只需要将设计图给他们，并接受他们的报价（至少 $250），他们就会在 3 个工作日内为您写好 XHTML 和 CSS，并承诺其作品为良好构建的，整洁的并可以通过验证的 XHTML 和 CSS。同时，他们也保证最终作品可以在 IE，Firefox 和 Safari 中均能正常显示，真正实现了跨平台的要求。</p>
<p>在 <a href="http://www.snook.ca/">Shook.ca</a> 上<a href="http://www.snook.ca/archives/html_and_css/review_xhtmlgenius/">有一篇文章</a>对这个服务进行了简单评价，貌似结果还是很令人满意的。不过 $250+ 的价格真是不便宜，给我设计图 + $200 估计至多 4-5 天我也能够达 XHTMLGenius 提出的要求。不过对于那些工作任务繁重的设计大牛们来说，花上 $250 把自己从乏味的 HTML 代码中解放出来，从而专心于设计，应该还是有一定意义的。</p>
<p>btw: Shook.ca 上还有另一篇 Web 设计方面的好文，推荐<a href="http://www.snook.ca/archives/design/how_i_design/">去看看</a>。
<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.istef.info%2F2006%2F12%2F15%2Fxhtmlgenius%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.istef.info%2F2006%2F12%2F15%2Fxhtmlgenius%2F&amp;style=compact&amp;service=bit.ly&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.istef.info/2006/12/15/xhtmlgenius/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>两篇 CSS 相关的文章</title>
		<link>http://blog.istef.info/2006/07/09/two-articles-about-css/</link>
		<comments>http://blog.istef.info/2006/07/09/two-articles-about-css/#comments</comments>
		<pubDate>Sun, 09 Jul 2006 07:00:11 +0000</pubDate>
		<dc:creator>iStef</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[column]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[form]]></category>

		<guid isPermaLink="false">http://blog.istef.info/2006/07/09/two-articles-about-css/</guid>
		<description><![CDATA[今天看到两篇关于 CSS 的文章，感觉挺不错的。对于学习 CSS 布局以及未来的 CSS3 来说还是有点用的。毕竟现在网站 CSS 布局已经是大势所趋啦。 第一篇是讲利用 CSS 美化表单的，原文在这里。作者用一个很简单的例子讲述了如果将通常很单调的表单利用 CSS 美化，从而增强用户体验。在这篇文章中，作者还强调了一下如果用 HTML 规范的书写表单，很值得借鉴。国内很多的网站，为了表单布局通常不惜代价的乱用表格之类的东西，这样对于用户使用和开发者阅读代码来说都是一种负担。灵活的运用fieldset, legend, label 这几个标签，完全可以替代传统的表格布局写出漂亮的表单，而且代码干净易读。这篇文章就是个很好的例子，很是值得 Web 开发者借鉴。 第二篇文章是讲 CSS 分栏的，而且说的是 CSS3 分栏，原文在这里。DIV+CSS 布局后，CSS 分栏真是个令人头痛的问题，float 来 float 去麻烦不说，还要考虑浏览器兼容性等等问题。这篇文章作者演示了 CSS3 分栏的效果，从文章中可以看出是那么的简单，而且效果非常的酷。如今能支持 CSS3 的浏览器恐怕只有 WebKit 和 Safari 了，可惜这两个都是 Mac 平台上的东西，像我这样的穷人就没法体验了 T.T。想想 CSS3 众多超炫的特效，今后的网页必定比现在漂亮很多，很是期待呀。]]></description>
			<content:encoded><![CDATA[<p><img id="image463" src="http://blog.istef.info/wp-content/uploads/2006/07/2006-07-09.jpg" alt="CSS Layout" style="float:left" />今天看到两篇关于 CSS 的文章，感觉挺不错的。对于学习 CSS 布局以及未来的 CSS3 来说还是有点用的。毕竟现在网站 CSS 布局已经是大势所趋啦。</p>
<p>第一篇是讲利用 CSS 美化表单的，原文在<a href="http://www.picment.com/articles/css/funwithforms/">这里</a>。作者用一个很简单的例子讲述了如果将通常很单调的表单利用 CSS 美化，从而增强用户体验。在这篇文章中，作者还强调了一下如果用 HTML 规范的书写表单，很值得借鉴。国内很多的网站，为了表单布局通常不惜代价的乱用表格之类的东西，这样对于用户使用和开发者阅读代码来说都是一种负担。灵活的运用fieldset, legend, label 这几个标签，完全可以替代传统的表格布局写出漂亮的表单，而且代码干净易读。这篇文章就是个很好的例子，很是值得 Web 开发者借鉴。</p>
<p>第二篇文章是讲 CSS 分栏的，而且说的是 CSS3 分栏，原文在<a href="http://blogs.pathf.com/uxd/2006/07/multi_column_la_1.html">这里</a>。DIV+CSS 布局后，CSS 分栏真是个令人头痛的问题，float 来 float 去麻烦不说，还要考虑浏览器兼容性等等问题。这篇文章作者演示了 CSS3 分栏的效果，从文章中可以看出是那么的简单，而且效果非常的酷。如今能支持 CSS3 的浏览器恐怕只有 WebKit 和 Safari 了，可惜这两个都是 Mac 平台上的东西，像我这样的穷人就没法体验了 T.T。想想 CSS3 众多超炫的特效，今后的网页必定比现在漂亮很多，很是期待呀。
<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.istef.info%2F2006%2F07%2F09%2Ftwo-articles-about-css%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.istef.info%2F2006%2F07%2F09%2Ftwo-articles-about-css%2F&amp;style=compact&amp;service=bit.ly&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.istef.info/2006/07/09/two-articles-about-css/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>很酷的 CSS 画廊</title>
		<link>http://blog.istef.info/2006/04/18/cool-css-gallery/</link>
		<comments>http://blog.istef.info/2006/04/18/cool-css-gallery/#comments</comments>
		<pubDate>Tue, 18 Apr 2006 15:26:28 +0000</pubDate>
		<dc:creator>iStef</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[gallery]]></category>

		<guid isPermaLink="false">http://blog.istef.info/2006/04/18/cool-css-gallery/</guid>
		<description><![CDATA[这两天一直在做页面，也就顺便好好研究了一下 CSS。今天又发现了一个很酷的 CSS 网站，一个用纯 CSS 实现的画廊页面。页面干净简洁，效果一流，最令人称道的是作者还写了一个教程，详细讲解了如何实现这个效果。不过貌似这个教程已经有一个月了，看来这次我又“火星”了 突然有个想法，要是和 LightBox 2 结合起来，应该可以做一个很酷的相册程序吧，谁要是做好了一定发我一份哦 UPDATE: EMI 做了一个 HoverGallery 和 LightBox 2 结合的画廊，效果真的很酷，不妨去看看。]]></description>
			<content:encoded><![CDATA[<p style="text-indent:0;text-align:center"><img id="image394" src="http://blog.istef.info/wp-content/uploads/2006/04/2006-4-18.jpg" alt="Css Gallery" /></p>
<p>这两天一直在做页面，也就顺便好好研究了一下 CSS。今天又发现了一个很酷的 CSS 网站，一个用纯 CSS 实现的<a href="http://host.sonspring.com/hoverbox/">画廊页面</a>。页面干净简洁，效果一流，最令人称道的是作者还写了一个<a href="http://sonspring.com/journal/hoverbox-image-gallery">教程</a>，详细讲解了如何实现这个效果。不过貌似这个教程已经有一个月了，看来这次我又“火星”了 <img src='http://blog.istef.info/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<p>突然有个想法，要是和 LightBox 2 结合起来，应该可以做一个很酷的相册程序吧，谁要是做好了一定发我一份哦 <img src='http://blog.istef.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><ins datetime="2006-04-19T14:47:07+00:00"><strong style="color:red">UPDATE:</strong> EMI 做了一个 HoverGallery 和 LightBox 2 <a href="http://www.ihao.net/index.php?job=art&#038;articleid=a_20060419_140316">结合的画廊</a>，效果真的很酷，不妨去看看。</ins>
<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.istef.info%2F2006%2F04%2F18%2Fcool-css-gallery%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.istef.info%2F2006%2F04%2F18%2Fcool-css-gallery%2F&amp;style=compact&amp;service=bit.ly&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.istef.info/2006/04/18/cool-css-gallery/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>CSS House</title>
		<link>http://blog.istef.info/2006/04/18/css-house/</link>
		<comments>http://blog.istef.info/2006/04/18/css-house/#comments</comments>
		<pubDate>Mon, 17 Apr 2006 16:03:22 +0000</pubDate>
		<dc:creator>iStef</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[css]]></category>

		<guid isPermaLink="false">http://blog.istef.info/2006/04/18/css-house/</guid>
		<description><![CDATA[你能相信上面图中这个立体感很强的房子是完全用 CSS “写”出来的吗？看看这里就知道了。说实话，我第一次看到时也不太相信这张网页竟然没有使用一副图片，看过源码后，不得不佩服作者高超的 CSS 技艺。当然，作者做这个主要也是用来“秀”的，虽然 CSS 是个很强大的东西，但正常情况下也决不能这样用。几年前的老机器开这张网页估计是比较费劲了。 好了，欣赏完上面那个网页后，看看作者的新房子吧。]]></description>
			<content:encoded><![CDATA[<p style="text-indent:0;text-align:center"><img id="image390" src="http://blog.istef.info/wp-content/uploads/2006/04/2006-4-17.jpg" alt="CSS House" /></p>
<p>你能相信上面图中这个立体感很强的房子是完全用 CSS “写”出来的吗？看看<a href="http://www.designdetector.com/tips/3DBorderDemo2.html">这里</a>就知道了。说实话，我第一次看到时也不太相信这张网页竟然没有使用一副图片，看过源码后，不得不佩服作者高超的 CSS 技艺。当然，作者做这个主要也是用来“秀”的，虽然 CSS 是个很强大的东西，但正常情况下也决不能这样用。几年前的老机器开这张网页估计是比较费劲了。</p>
<p>好了，欣赏完上面那个网页后，看看作者的<a href="http://www.designdetector.com/demos/css-house-2.html">新房子</a>吧。
<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.istef.info%2F2006%2F04%2F18%2Fcss-house%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.istef.info%2F2006%2F04%2F18%2Fcss-house%2F&amp;style=compact&amp;service=bit.ly&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.istef.info/2006/04/18/css-house/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>V4 模板修正：IE6 兼容性问题</title>
		<link>http://blog.istef.info/2005/12/26/theme-v4-is-compatible-with-ie6/</link>
		<comments>http://blog.istef.info/2005/12/26/theme-v4-is-compatible-with-ie6/#comments</comments>
		<pubDate>Sun, 25 Dec 2005 16:37:16 +0000</pubDate>
		<dc:creator>iStef</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[this site]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[ie]]></category>
		<category><![CDATA[myblog]]></category>
		<category><![CDATA[theme]]></category>
		<category><![CDATA[w3c]]></category>
		<category><![CDATA[web design]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://blog.istef.info/2005/12/26/theme-v4-is-compatible-with-ie6/</guid>
		<description><![CDATA[昨天放出新模板时，很多朋友反应版面“有点乱”。开始我还认为是大家审美观点不同，对于这样大红大紫的页面难以接受，看着眼晕，所以感觉乱，后来还是小圈同学的一张截图惊醒了我。IE6 下面看何止是有点乱呀，简直是乱的惨不忍睹。 由于我平时都是用 Firefox 浏览的，所以在后期测试时就没有用其它浏览器看看。根据经验，肯定又是 Box 定义的问题，但是明明在做 HTML 效果页面的时候是好好的（ IE6 FF Opera 都测试通过），怎么做成模板后 IE6 又不认账了呢？ 仔细对比了一下代码，发现在最终生成的页面中比效果页多出一行，就是第一行那个 &#60;?xml version=&#8221;1.0&#8243; encoding=&#8221;UTF-8&#8243; ?&#62; ，原来是犯了大忌！从模板中去掉这一行，IE6 下面的效果瞬间就正常了。 众所周知，IE 在处理 CSS Box 定义方面与 W3C CSS 有所不同，但对于 IE6 这个不同不是绝对的。IE6 内部事实上有两套 Box 定义，如果网页第一行为 &#60;?xml version=&#8221;1.0&#8243; encoding=&#8221;UTF-8&#8243; ?&#62; （一般 xhtml 网页都会有这一行），IE6 就会使用针对 xhtml 的引擎，并使用不规范的 box 定义，于是也就产生了页面错位等现象。IE 在处理 xhtml 文件时，事实上仍然使用的是 HTML 解析引擎（IE7 也仍然如此），所以根本没有必要在开头加上那一行。不加的话，IE6 的 Box [...]]]></description>
			<content:encoded><![CDATA[<p>昨天放出新模板时，很多朋友反应版面“有点乱”。开始我还认为是大家审美观点不同，对于这样大红大紫的页面难以接受，看着眼晕，所以感觉乱，后来还是<a href="http://iqwolf.blogbus.com">小圈</a>同学的一张截图惊醒了我。IE6 下面看何止是有点乱呀，简直是乱的惨不忍睹。</p>
<p>由于我平时都是用 <a href="http://www.mozilla.org/firefox">Firefox</a> 浏览的，所以在后期测试时就没有用其它浏览器看看。根据经验，肯定又是 Box 定义的问题，但是明明在做 HTML 效果页面的时候是好好的（ IE6 FF Opera 都测试通过），怎么做成模板后 IE6 又不认账了呢？</p>
<p>仔细对比了一下代码，发现在最终生成的页面中比效果页多出一行，就是第一行那个 &lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;UTF-8&#8243; ?&gt; ，原来是犯了大忌！从模板中去掉这一行，IE6 下面的效果瞬间就正常了。</p>
<p>众所周知，IE 在处理 CSS Box 定义方面与 W3C CSS 有所不同，但对于 IE6 这个不同不是绝对的。IE6 内部事实上有两套 Box 定义，如果网页第一行为 &lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;UTF-8&#8243; ?&gt; （一般 xhtml 网页都会有这一行），IE6 就会使用针对 xhtml 的引擎，并使用不规范的 box 定义，于是也就产生了页面错位等现象。IE 在处理 xhtml 文件时，事实上仍然使用的是 HTML 解析引擎（IE7 也仍然如此），所以根本没有必要在开头加上那一行。不加的话，IE6 的 Box 定义和 W3C CSS Box 定义基本上一致，可以有效的降低编写 CSS 的工作量。如果加上坏处主要有两点，第一就是 IE Box 模型的使用会导致页面错位，另一点就是对于像 Firefox 这样的浏览器会使用 XML 引擎来处理页面，一旦页面中出现任何不符合 XML 规范的内容（例如某个访客的留言中 HTML 标签未封闭），整个页面就无法显示了。所以现阶段，还是不要加这一行的好。</p>
<p>目前已知的问题，IE5 浏览还是不行，不仅CSS有问题，Javascript 也执行不了。不过 IE5 都是淘汰货了，还有必要支持它吗？其它浏览器（如 Konqueror Safari 之类）我还没有时间、条件来测试，有条件的朋友帮忙测一下，最好能把有问题的截图发给我，谢谢啦。</p>
<p>此外，接着这个机会，好好调整了一下页面，现在可以通过 XHTML 1.1 标准了 <img src='http://blog.istef.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><tags></tags>
<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.istef.info%2F2005%2F12%2F26%2Ftheme-v4-is-compatible-with-ie6%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.istef.info%2F2005%2F12%2F26%2Ftheme-v4-is-compatible-with-ie6%2F&amp;style=compact&amp;service=bit.ly&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.istef.info/2005/12/26/theme-v4-is-compatible-with-ie6/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using memcached
Page Caching using memcached
Database Caching 1/45 queries in 0.031 seconds using memcached
Object Caching 1423/1532 objects using memcached

Served from: blog.istef.info @ 2012-02-13 08:04:35 -->
