<?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+HTML</title>
	<atom:link href="http://www.86ue.com/archives/tag/css/feed" rel="self" type="application/rss+xml" />
	<link>http://www.86ue.com</link>
	<description>UED web2.0 前端技术 用户体验 SEO 80后</description>
	<lastBuildDate>Sun, 14 Mar 2010 14:02:08 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>CSS Overflow属性详解</title>
		<link>http://www.86ue.com/archives/794</link>
		<comments>http://www.86ue.com/archives/794#comments</comments>
		<pubDate>Sun, 07 Mar 2010 14:53:14 +0000</pubDate>
		<dc:creator>紫枫印象</dc:creator>
				<category><![CDATA[CSS+HTML]]></category>
		<category><![CDATA[overflow]]></category>

		<guid isPermaLink="false">http://www.86ue.com/?p=794</guid>
		<description><![CDATA[检索或设置当对象的内容超过其指定高度及宽度时如何管理内容。
所有对象的默认值是 visible ，除了 textarea 对象和 body 对象的默认值是 auto 。设置 textarea 对象此属性值为 hidden 将隐藏其滚动条。

overflow属性有四个值：visible (默认), hidden, scroll, 和auto。同样有两个overflow的姐妹属性 overflow-y 和overflow-x，它们很少被采用。

<strong>Visible</strong>

如果你不设置overflow属性，则默认的overflow属性值就是visible。所以一般而言，并没有什么理由特别的设定overflow 的属性为visible除非你想覆盖它在其它地方被设定的值。

<a href="http://www.86ue.com/wp-content/uploads/2010/03/visible-mess.png"><img src="http://www.86ue.com/wp-content/uploads/2010/03/visible-mess.png" alt="" title="visible-mess" width="492" height="302" class="aligncenter size-full wp-image-802" /></a>

这里需要记住的重要的事情是，尽管盒子外面的内容是可见的，内容并不会影响页面的工作流。比如：

<a href="http://www.86ue.com/wp-content/uploads/2010/03/overlap.png"><img src="http://www.86ue.com/wp-content/uploads/2010/03/overlap.png" alt="" title="overlap" width="500" height="172" class="aligncenter size-full wp-image-800" /></a>

一般来说，你至少不用为里面的内容为文字的盒子设置固定的高度，这样就不会遇到这种情况了。

<strong>Hidden</strong>

默认值visible的相反的值就是hidden。它会将所有超出盒子的所有内容都给隐藏掉。

<a href="http://www.86ue.com/wp-content/uploads/2010/03/css-overflow-hidden.png"><img src="http://www.86ue.com/wp-content/uploads/2010/03/css-overflow-hidden.png" alt="" title="css-overflow-hidden" width="499" height="461" class="aligncenter size-full wp-image-796" /></a>

这对应付使用动态的内容，而且可能会由于内容溢出而引起一些布局上的问题的确很有用。尽管如此，请记住用此方法隐藏的内容将彻底的看不到(除非去查看源代码)。 比如有的用户设置他们的浏览器的默认字体比你预期的要大些，你会将一些文字推到盒子的外面然后完全的隐藏之…]]></description>
			<content:encoded><![CDATA[<p>检索或设置当对象的内容超过其指定高度及宽度时如何管理内容。<br />
所有对象的默认值是 visible ，除了 textarea 对象和 body 对象的默认值是 auto 。设置 textarea 对象此属性值为 hidden 将隐藏其滚动条。</p>
<p>overflow属性有四个值：visible (默认), hidden, scroll, 和auto。同样有两个overflow的姐妹属性 overflow-y 和overflow-x，它们很少被采用。</p>
<p><strong>Visible</strong></p>
<p>如果你不设置overflow属性，则默认的overflow属性值就是visible。所以一般而言，并没有什么理由特别的设定overflow 的属性为visible除非你想覆盖它在其它地方被设定的值。</p>
<p><a href="http://www.86ue.com/wp-content/uploads/2010/03/visible-mess.png"><img src="http://www.86ue.com/wp-content/uploads/2010/03/visible-mess.png" alt="" title="visible-mess" width="492" height="302" class="aligncenter size-full wp-image-802" /></a></p>
<p>这里需要记住的重要的事情是，尽管盒子外面的内容是可见的，内容并不会影响页面的工作流。比如：</p>
<p><a href="http://www.86ue.com/wp-content/uploads/2010/03/overlap.png"><img src="http://www.86ue.com/wp-content/uploads/2010/03/overlap.png" alt="" title="overlap" width="500" height="172" class="aligncenter size-full wp-image-800" /></a></p>
<p>一般来说，你至少不用为里面的内容为文字的盒子设置固定的高度，这样就不会遇到这种情况了。</p>
<p><strong>Hidden</strong></p>
<p>默认值visible的相反的值就是hidden。它会将所有超出盒子的所有内容都给隐藏掉。</p>
<p><a href="http://www.86ue.com/wp-content/uploads/2010/03/css-overflow-hidden.png"><img src="http://www.86ue.com/wp-content/uploads/2010/03/css-overflow-hidden.png" alt="" title="css-overflow-hidden" width="499" height="461" class="aligncenter size-full wp-image-796" /></a></p>
<p>这对应付使用动态的内容，而且可能会由于内容溢出而引起一些布局上的问题的确很有用。尽管如此，请记住用此方法隐藏的内容将彻底的看不到(除非去查看源代码)。 比如有的用户设置他们的浏览器的默认字体比你预期的要大些，你会将一些文字推到盒子的外面然后完全的隐藏之…</p>
<p><strong>Scroll</strong></p>
<p>设置一个盒子的overflow值为scroll将会隐藏掉渲染到盒子之外的内容，但是它将会提供一个滚动条在盒子内部滚动，从而可以查看剩下的内容。</p>
<p><a href="http://www.86ue.com/wp-content/uploads/2010/03/css-scroll.png"><img src="http://www.86ue.com/wp-content/uploads/2010/03/css-scroll.png" alt="" title="css-scroll" width="501" height="540" class="aligncenter size-full wp-image-797" /></a></p>
<p>值得注意的是，使用scroll将会同时产生水平和垂直两个滚动条，就算内容只需要其中一个。</p>
<p><strong>Auto</strong></p>
<p>overflow的auto值很像scroll，它唯一解决的是在你不需要的时候也会出现滚动条的问题。</p>
<p><a href="http://www.86ue.com/wp-content/uploads/2010/03/css-overflow-auto.png"><img src="http://www.86ue.com/wp-content/uploads/2010/03/css-overflow-auto.png" alt="" title="css-overflow-auto" width="499" height="540" class="aligncenter size-full wp-image-795" /></a></p>
<p><strong>清除浮动</strong></p>
<p>设置overflow的一个更流行的用处是，说也奇怪，清除浮动。设置overflow并不会在该元素上清除浮动，它将清除自己(self- clear)。意思就是，应用了overflow(auto或hidden)的元素，将会扩展到它需要的大小以包围它里面的浮动的子元素(而不是叠了起来(collapsing))，假设未定义高度。就像这样：</p>
<p><a href="http://www.86ue.com/wp-content/uploads/2010/03/overflow-float.png"><img src="http://www.86ue.com/wp-content/uploads/2010/03/overflow-float.png" alt="" title="overflow-float" width="500" height="301" class="aligncenter size-full wp-image-798" /></a></p>
<p><strong>跨浏览器的烦恼</strong></p>
<p>就像CSS中的很多东东，overflow有很多的跨浏览器的蹊跷的事情。比如这些：<br />
滚动条在盒子里面还是外面?</p>
<p>firefox将其放到盒子外面，而IE则将其放到里面。我认为只有IE是对的(它应该在里面的)。</p>
<p><a href="http://www.86ue.com/wp-content/uploads/2010/03/sizeofbox.png"><img src="http://www.86ue.com/wp-content/uploads/2010/03/sizeofbox.png" alt="" title="sizeofbox" width="500" height="300" class="aligncenter size-full wp-image-801" /></a></p>
<p>看清楚这个明显的不同。</p>
<p><strong>IE 8 扩展盒子的bug</strong></p>
<p>IE8有很多有趣的新bug，包括一些非常严重的隐藏在网页中的。这里有更多的关于IE8的overflow的bug的介绍。</p>
<p><strong>破坏浮动布局</strong></p>
<p>IE 6, 7 和 8都会扭曲默认的overflow visible值并将水平的扩展一个盒子一匹配内容(比如图片)。 这对使用浮动列布局的结构非常痛苦，而且单个扩展的列就能够将其它列挤下去并使布局乱掉！</p>
<p><a href="http://www.86ue.com/wp-content/uploads/2010/03/visible-mess.png"><img src="http://www.86ue.com/wp-content/uploads/2010/03/visible-mess.png" alt="" title="visible-mess" width="492" height="302" class="aligncenter size-full wp-image-802" /></a></p>
<p><strong>滚动条能用CSS控制吗？</strong></p>
<p>IE过去在较老的版本中允许这样，但是之后就收敛了。比如许多表单元素，滚动条就不允许使用CSS控制。我在它是否是件好事情上没有任何具体的意 见，但是我可以说，在网站的所有内容上使用滚动条是很丑陋的和俗气的。如果你需要一个美化的滚动条，你或许需要寻找javascript来模拟。</p>
<p><strong>IE 技巧</strong></p>
<p>无论是否需要，IE都会一直显示一个垂直的滚动条，这对预防水平跳动是有些作用的，但并非总是可取的。要想在IE中移除它，可以在body元素中设置overflow为auto。</p>
<p>演示:</p>
<p>本文的演示页面，可以查看<a href="http://css-tricks.com/examples/OverflowExample/">这个页面</a>。</p>
<p>英文原文：<a href="http://css-tricks.com/the-css-overflow-property/">The CSS Overflow Property</a><br />
中文译文：<a href="http://www.qianduan.net/css-overflow-property.html">CSS Overflow 属性</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.86ue.com/archives/794/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>使用CSS为图片添加的五种特殊效果</title>
		<link>http://www.86ue.com/archives/785</link>
		<comments>http://www.86ue.com/archives/785#comments</comments>
		<pubDate>Sat, 06 Mar 2010 15:00:39 +0000</pubDate>
		<dc:creator>紫枫印象</dc:creator>
				<category><![CDATA[CSS+HTML]]></category>
		<category><![CDATA[图片效果]]></category>

		<guid isPermaLink="false">http://www.86ue.com/?p=785</guid>
		<description><![CDATA[<strong>1、阴影效果</strong>
通过使用带有一些padding之的背景图来添加阴影效果。
演示：
<a href="http://www.sohtanaka.com/web-design/examples/drop-shadow/dropshadow.htm">http://www.sohtanaka.com/web-design/examples/drop-shadow/dropshadow.htm</a>
HTML：

<pre line="1" lang="html"><img class=”shadow” src=”sample.jpg” alt=”" /></pre>

CSS：
<pre line="1" lang="css">
img.shadow {
            background: url(shadow-1000×1000.gif) no-repeat right bottom;
            padding: 5px 10px 10px 5px;
}
</pre>

<strong>2、双边框效果</strong>
这应该是目前最常见的技巧，我们通过以下方式创建说边框。
演示：
<a href="http://www.sohtanaka.com/web-design/examples/drop-shadow/doubleborder.htm">http://www.sohtanaka.com/web-design/examples/drop-shadow/doubleborder.htm</a>

HTML：

<pre line="1" lang="html"><img class="double-border" src="sample.jpg" alt="" /></pre>

CSS：
<pre line="1" lang="css">
img.double-border {
    border: 5px solid #ddd;
    padding: 5px; /*Inner border size*/
    background: #fff; /*Inner border color*/
}
</pre>]]></description>
			<content:encoded><![CDATA[<p><strong>1、阴影效果</strong><br />
通过使用带有一些padding之的背景图来添加阴影效果。<br />
演示：<br />
<a href="http://www.sohtanaka.com/web-design/examples/drop-shadow/dropshadow.htm">http://www.sohtanaka.com/web-design/examples/drop-shadow/dropshadow.htm</a><br />
HTML：</p>
<pre line="1" lang="html"><img class=”shadow” src=”sample.jpg” alt=”" /></pre>
<p>CSS：</p>
<pre line="1" lang="css">
img.shadow {
            background: url(shadow-1000×1000.gif) no-repeat right bottom;
            padding: 5px 10px 10px 5px;
}
</pre>
<p><strong>2、双边框效果</strong><br />
这应该是目前最常见的技巧，我们通过以下方式创建说边框。<br />
演示：<br />
<a href="http://www.sohtanaka.com/web-design/examples/drop-shadow/doubleborder.htm">http://www.sohtanaka.com/web-design/examples/drop-shadow/doubleborder.htm</a></p>
<p>HTML：</p>
<pre line="1" lang="html"><img class="double-border" src="sample.jpg" alt="" /></pre>
<p>CSS：</p>
<pre line="1" lang="css">
img.double-border {
    border: 5px solid #ddd;
    padding: 5px; /*Inner border size*/
    background: #fff; /*Inner border color*/
}
</pre>
<p><strong>3、图片外框效果</strong><br />
webdesignerwall.com上有最好的讲解，这个效果是基于在上面层叠一个有透明度的图片的技术。至于IE6的PNG透明度问题，可以参考这篇教程。<br />
演示：<br />
<a href="http://www.sohtanaka.com/web-design/examples/drop-shadow/framed.htm">http://www.sohtanaka.com/web-design/examples/drop-shadow/framed.htm</a></p>
<p>HTML：</p>
<pre line="1" lang="html">
<div class="frame-block">
    <span> </span>
    <img src="sample.jpg" alt="" />
</div>
</pre>
<p>CSS：</p>
<pre line="1" lang="css">
.frame-block {
    position: relative;
    display: block;
    height:335px;
    width: 575px;
}
.frame-block span {
    background: url(frame.png) no-repeat center top;
    height:335px;
    width: 575px;
    display: block;
    position: absolute;
}
</pre>
<p>4、水印效果<br />
你可以通过降低主图片的透明度来让背景图片透过来显示的方法添加水印。<br />
演示：<br />
<a href="http://www.sohtanaka.com/web-design/examples/drop-shadow/watermark.htm">http://www.sohtanaka.com/web-design/examples/drop-shadow/watermark.htm</a></p>
<p>HTML：</p>
<pre line="1" lang="html">
<div class="transp-block">
    <img class="transparent" src="sample.jpg" alt="" />
</div>
</pre>
<p>CSS：</p>
<pre line="1" lang="css">
.transp-block {
    background: #000 url(watermark.jpg) no-repeat;
    width: 575px;
    height: 335px;
}
img.transparent {
    filter:alpha(opacity=75);
    opacity:.75;
}
</pre>
<p><strong>5、为图片添加说明文字</strong><br />
使用绝对定位和透明度的设置来添加灵活的说明。<br />
演示：<br />
<a href="http://www.sohtanaka.com/web-design/examples/drop-shadow/caption.htm">http://www.sohtanaka.com/web-design/examples/drop-shadow/caption.htm</a></p>
<p>HTML：</p>
<pre line="1" lang="html">
<div class="img-desc">
    <img src="sample.jpg" alt="" />
    <cite>Salone del mobile Milano, April 2008 - Peeta</cite>
</div>
</pre>
<p>CSS：</p>
<pre line="1" lang="css">
.img-desc {
    position: relative;
    display: block;
    height:335px;
    width: 575px;
}
.img-desc cite {
    background: #111;
    filter:alpha(opacity=55);
    opacity:.55;
    color: #fff;
    position: absolute;
    bottom: 0;
    left: 0;
    width: 555px;
    padding: 10px;
    border-top: 1px solid #999;
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.86ue.com/archives/785/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>晒一下CSS Sprite(雪碧)</title>
		<link>http://www.86ue.com/archives/322</link>
		<comments>http://www.86ue.com/archives/322#comments</comments>
		<pubDate>Sun, 08 Nov 2009 16:08:03 +0000</pubDate>
		<dc:creator>紫枫印象</dc:creator>
				<category><![CDATA[CSS+HTML]]></category>
		<category><![CDATA[sprite]]></category>

		<guid isPermaLink="false">http://www.86ue.com/?p=322</guid>
		<description><![CDATA[今天在网上看了一篇关于css sprite的文章，最近的项目，也一直在用Sprite <strong>雪碧</strong>，制作中需要精确的定位。下面收集了一些牛人们的<strong>雪碧</strong>，晒给大家看看： :smile: 

先晒下我最近项目中的<strong>雪碧</strong>↓

考虑本博的图片限制，图片进行了处理，还请大家谅解! :smile: 

<img src="http://www.86ue.com/download/blog/200911/200911091909sp1.gif" alt="null" />

<img src="http://www.86ue.com/download/blog/200911/200911091909sp2.gif" alt="null" />]]></description>
			<content:encoded><![CDATA[<p>今天在网上看了一篇关于css sprite的文章，最近的项目，也一直在用Sprite <strong>雪碧</strong>，制作中需要精确的定位。下面收集了一些牛人们的<strong>雪碧</strong>，晒给大家看看： <img src='http://www.86ue.com/wp-includes/images/smilies/icon_smile.gif' alt=':smile:' class='wp-smiley' />  </p>
<p>先晒下我最近项目中的<strong>雪碧</strong>↓</p>
<p>考虑本博的图片限制，图片进行了处理，还请大家谅解! <img src='http://www.86ue.com/wp-includes/images/smilies/icon_smile.gif' alt=':smile:' class='wp-smiley' />  </p>
<p><img src="http://www.86ue.com/download/blog/200911/200911091909sp1.gif" alt="null" /></p>
<p><img src="http://www.86ue.com/download/blog/200911/200911091909sp2.gif" alt="null" /></p>
<p><img src="http://www.86ue.com/download/blog/200911/200911091909sp3.gif" alt="null" /></p>
<p><strong>再晒下网络上的↓</strong></p>
<p><img src="http://www.86ue.com/download/blog/200911/member_bg02.gif" alt="null" /></p>
<p><img src="http://www.86ue.com/download/blog/200911/amazon.png" alt="null" /></p>
<p><img src="http://www.86ue.com/download/blog/200911/bg_sprites.jpg" alt="null" /></p>
<p><img src="http://www.86ue.com/download/blog/200911/buttons_sprite.gif" alt="null" /></p>
<p><img src="http://www.86ue.com/download/blog/200911/cycle-news.png" alt="null" /></p>
<p><img src="http://www.86ue.com/download/blog/200911/designbumb.jpg" alt="null" /></p>
<p><img src="http://www.86ue.com/download/blog/200911/login-v2.png" alt="null" /></p>
<p><img src="http://www.86ue.com/download/blog/200911/makesometime.png" alt="null" /></p>
<p><img src="http://www.86ue.com/download/blog/200911/nav_logo7.png" alt="null" /></p>
<p><img src="http://www.86ue.com/download/blog/200911/netsprite.png" alt="null" /></p>
<p><img src="http://www.86ue.com/download/blog/200911/social_sprite16.png" alt="null" /></p>
<p><img src="http://www.86ue.com/download/blog/200911/socialbuttons.png" alt="null" /></p>
<p><img src="http://www.86ue.com/download/blog/200911/sprite-1.png" alt="null" /></p>
<p><img src="http://www.86ue.com/download/blog/200911/tut9sprite2.jpg" alt="null" /></p>
<p><img src="http://www.86ue.com/download/blog/200911/youtube-sprite.png" alt="null" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.86ue.com/archives/322/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>打造自己的reset.css</title>
		<link>http://www.86ue.com/archives/163</link>
		<comments>http://www.86ue.com/archives/163#comments</comments>
		<pubDate>Sun, 25 Oct 2009 15:42:03 +0000</pubDate>
		<dc:creator>紫枫印象</dc:creator>
				<category><![CDATA[CSS+HTML]]></category>
		<category><![CDATA[reset]]></category>

		<guid isPermaLink="false">http://www.86ue.com/?p=163</guid>
		<description><![CDATA[<strong>0.引言</strong>
每每有新项目，第一步就是应当使用一个reset.css来重置样式。滥用不如不用，直接拿个现成的reset.css过来将导致后期各种离奇bug的发生。所以最好还是自己写一个reset.css，并且要明白每一条 reset都是用来做什么的。reset.css本意就是重置样式，我始终建议把.clearfix放入layout.css,而把h1、h2之类的定义放进typography.css。 具体如何规划网站CSS结构，不在文本讨论之列，可以参考Smashing Magazine上的文章，国内有差强人意的中文译版。注意，本文把reset分成了两个部分，一个是纯reset.css，可以用于任何项目。另一个是用于特定项目的“reset”，自定义修改的内容，这些内容可以放在layout.css、typography.css之类的文件中，他们共同导入到一个base.css形成一个项目的基础样式。本文就是来介绍如何写一个合适所有项目的通用的reset.css，以及介绍在设置玩reset.css之后需要针对不同项目要首先要设置的内容。

<strong>1.基础</strong>
牛顿是站在巨人伽利略的肩膀上的，我们也可以这么做。首先我们要选定一个前进的基础。
请永远不要使用

* { margin: 0; padding: 0; }


这问题太多了，在此不多加表述。]]></description>
			<content:encoded><![CDATA[<p><strong>0.引言</strong><br />
每每有新项目，第一步就是应当使用一个reset.css来重置样式。滥用不如不用，直接拿个现成的reset.css过来将导致后期各种离奇bug的发生。所以最好还是自己写一个reset.css，并且要明白每一条 reset都是用来做什么的。reset.css本意就是重置样式，我始终建议把.clearfix放入layout.css,而把h1、h2之类的定义放进typography.css。 具体如何规划网站CSS结构，不在文本讨论之列，可以参考Smashing Magazine上的文章，国内有差强人意的中文译版。注意，本文把reset分成了两个部分，一个是纯reset.css，可以用于任何项目。另一个是用于特定项目的“reset”，自定义修改的内容，这些内容可以放在layout.css、typography.css之类的文件中，他们共同导入到一个base.css形成一个项目的基础样式。本文就是来介绍如何写一个合适所有项目的通用的reset.css，以及介绍在设置玩reset.css之后需要针对不同项目要首先要设置的内容。</p>
<p><strong>1.基础</strong><br />
牛顿是站在巨人伽利略的肩膀上的，我们也可以这么做。首先我们要选定一个前进的基础。<br />
请永远不要使用</p>
<p>* { margin: 0; padding: 0; }</p>
<p>这问题太多了，在此不多加表述。</p>
<p>目前比较流行的有Eric Meyer的重置样式和YUI的重置样式。另有Condensed Meyer Reset简化Eric Meyer的样式。有趣的是，Eric的重置样式也是源于YUI的。而那份简化版又把Eric的样式简化回YUI的样式了。但同时，糟糕的是，网上流传的比较广的(尤其是国内)都不是最新的版本。上面两个页面里直接看到的都不是最新的，Eric专门为有一个 reset.css页面。而YUI当前版本(2.7.0)的reset.css实际地址里，比上面的页面中还多一些东西。此外，我们还可以基于一些常见的框架，比较著名的比如Blueprint或者Elements CSS Framework（这个的reset也是源自于Eric Meyer的）。OK，准备工作就差不多了。以上这些都可以作为参考资料来组织我们自己的reset。我这里主要采用YUI，兼带Eric的reset。</p>
<p><strong>2.默认色彩</strong><br />
对于页面是不是有默认背景色和前景色，YUI和Eric有着不同的看法。<br />
YUI重置背景色为白色而文字颜色为黑色。</p>
<p>html {<br />
    color: #000;<br />
    background: #FFF;<br />
}</p>
<p>而Eric在当前最新版中让所有颜色为透明，他认为透明才是最原始的颜色。虽然他曾一度认为也应当设置白色背景色、黑色文字颜色。至于最后为什么改了，Eric并没有给出具体理由。</p>
<p>这个问题我基本认为是用户自定义的更重要还是你的设计更重要的问题。我个人的观点是，如果你的设计本身就是白色背景，那么不要设置背景。一小部分中高水平的用户，他们会自定义网页默认背景色。设置成他们喜欢的背景色，比如浅蓝色。基本常见的浏览器都提供了这个简单的功能。而我们的背景色重置则会破坏用户的选择——尽管这样能保证你的设计原汁原味的呈现给所有用户。当然我知道，更高端的用户会用Stylish之类的 Firefox扩展来自定义页面。但不得不说，只会用“选项”来调背景色的用户更多，不是么？而同时，如果设计本身就有其他背景色，比如黑色、蓝色、绿色之类的，OK，这些设计当然可以设置背景色。但请不要放进reset.css里。这里是重置样式的地方，不是你设计的地方。请把你的设计放在更广袤的土地上。<br />
所以，简单说来，NO，不要在reset中设置背景色。</p>
<p>那么，文字颜色呢？原则上来说，也是不应该设置文字颜色的。但是IE中的表单元素中legend这个对象比较特别，跟主题结合的比较紧密。legend会默认有自己的颜色（跟当前的主题有关）而不会继承父元素的颜色（即便设了color:inherit;）。<br />
从某些角度来说，可以想当然地认为设置字体颜色人数远小于设置背景色的人数；以及认为就算设置了背景色，人们看到legend元素是黑色的也不会觉得奇怪。因此，YUI在其reset中设置了legend {color: #000;}是无可厚非的。<br />
但反过来说，把这个放到typography.css或者form.css里岂不是更好？不同的页面设计，其对legend的色彩要求很可能是不同的，放在reset.css里重复定义是没有必要的。因此这条CSS规则可以作为在reset.css之后首先应当设置的规则。</p>
<p><strong>3.padding和margin</strong><br />
曾经一度流行的* { margin: 0; padding: 0; }也就是出于这个目的。让各个元素的padding和margin都归零，尤其是那些h1和p以及ul/ol/li之类的元素，还有，body本身也是有 margin的。清除元素的padding和margin是很有用的。<br />
YUI这样做：</p>
<p>body, div, dl, dt, dd, ul, ol, li,<br />
h1, h2, h3, h4, h5, h6, pre, code,<br />
form, fieldset, legend, input, button,<br />
textarea, p, blockquote, th, td {<br />
    margin: 0;<br />
    padding: 0;<br />
}</p>
<p>而Eric这样做：</p>
<p>html, body, div, span, applet, object, iframe,<br />
h1, h2, h3, h4, h5, h6, p, blockquote, pre,<br />
a, abbr, acronym, address, big, cite, code,<br />
del, dfn, em, font, img, ins, kbd, q, s, samp,<br />
small, strike, strong, sub, sup, tt, var,<br />
b, u, i, center,<br />
dl, dt, dd, ol, ul, li,<br />
fieldset, form, label, legend,<br />
table, caption, tbody, tfoot, thead, tr, th, td {<br />
    margin: 0;<br />
    padding: 0;<br />
    border: 0;<br />
    outline: 0;<br />
    font-size: 100%;<br />
    vertical-align: baseline;<br />
    background: transparent;<br />
}</p>
<p>可以看到，Eric把几乎所有的元素都写上了规则。而YUI只把有padding和margin的元素清空样式，而其他元素则不动。我个人比较偏好YUI 的做法，因为他这样可以避免给一些无关元素带上不必要的样式。导致元素过多时的性能下降。但Eric的也有可取之处，他这样写，整个reset.css可以小上不少字节，对服务器的压力会小一些。但进一步想，这种做法跟用 * 来选择所有元素还有什么区别呢？这已经几乎囊括了所有元素了！你怎么用呢？看你自己喜好了。</p>
<p><strong>4.边框</strong><br />
YUI里：</p>
<p>fieldset, img {<br />
    border: 0;<br />
}<br />
abbr, acronym {<br />
    border: 0;<br />
    font-variant: normal;<br />
}</p>
<p>Eric已经在上一条中把所有的边框都清掉了，还是推荐用YUI的，理由同上。</p>
<p><strong>5.外边框(outline)</strong><br />
这个就是元素获取焦点时的虚线框，在ie之外的浏览器上可以像下面Eric做的那样，通过设置outline来消除。</p>
<p>/* remember to define focus styles! */<br />
:focus {<br />
    outline: 0;<br />
}</p>
<p>而YUI则没有设置这一条。而在Eric的样式中，可以看到Eric的提醒：务必重新定义获取焦点后的样式！<br />
这点其实很重要，出于可访问性的角度出发，那些不便于使用鼠标的人基本上都是用tab导航来浏览网页的。获取焦点的元素有特定样式的话可以极大帮助这类群体的用户，通常建议设置成跟:hover一样。经常设计上会因为这个虚线框而大打折扣。因此这条保留在reset中，并且作为reset.css之后及早定义的规则。</p>
<p>另外，对于在Firefox之类的支持outline的浏览其中，除了获取焦点的元素外，浏览器本身并没有给元素设置outline属性，所以，像Eric那样把所有元素的outline设成0，我就觉得没有太大必要了。</p>
<p><strong>6.字体样式(font style/weight/size/variant)</strong><br />
YUI里，分成了多条：</p>
<p>address, caption, cite, code, dfn,<br />
em, strong, th, var, optgroup {<br />
    font-style: inherit;<br />
    font-weight: inherit;<br />
}</p>
<p>h1, h2, h3, h4, h5, h6 {<br />
    font-size: 100%;<br />
    font-weight: normal;<br />
}<br />
abbr, acronym {<br />
    border: 0;<br />
    font-variant: normal;<br />
}</p>
<p>input, button, textarea,<br />
select, optgroup, option {<br />
    font-family: inherit;<br />
    font-size: inherit;<br />
    font-style: inherit;<br />
    font-weight: inherit;<br />
}</p>
<p>/*@purpose To enable resizing for IE */<br />
/*@branch For IE6-Win, IE7-Win */<br />
input, button, textarea, select {<br />
    *font-size: 100%;<br />
}</p>
<p>Eric则在他最终版的reset中去掉了关于这些的样式重置，只保留了 font-size: 100%; 同样他没有给出具体理由。<br />
但通常情况下，我认为还是重置一下这些样式好，比如strong元素，很多时候只是语义而已，并非希望他真的加粗。可能会有背景色或者其他方式来强调。而之所以这里都用了inherit这个继承属性而不是定义 font-weight: normal; 可以在 Eric 先前的reset文章中看到。这是为了防止——父元素字体加粗了，而没有一个子元素继承加粗属性（因为设置了normal）——这种情况的发生。所以把 YUI中设置h1-h6的样式以及abbr和acronym的两句样式都改成inherit会比较好。</p>
<p>此外，对于h1-h6的字体大小定义，建议放到专门的typography.css里，不建议放在reset.css里。所以这里我同样倾向于用YUI的策略，全部重置。</p>
<p>但是很不幸，在ie6/ie7当中，不论是strong还是h1-h6,亦或是em等元素，设置了inherit均无法继承父元素属性，依然保持自己的特色。这就带来了浏览器差异，样式重置本身是为了避免浏览器差异的，但现在带来了浏览器差异，是万万不可取的。对于这个问题我考虑了很久，到底是为了统一所有浏览器都重置成normal（YUI的想法），还是放弃重置这些元素，让他们顺其自然，来保证在所有浏览器中样式一样（Eric的想法）。我最后决定采用YUI的做法。因为，无论重置成normal还是不重置，这些元素都无法继承父元素属性。既然如此，那么退而求其次，保证这些元素都恢复到普通外观，避免在设计的时候还要重置样式。<br />
不得不说，这种妥协是仅仅针对IE6和IE7的，也许在5年后，老板和客户都不要求支持IE7的时候，我们可以放心大胆得使用inherit了。</p>
<p>此外，YUI并没有给code kbd samp tt 这几个元素重置字体大小。但实际上在IE中，他们都会被缩小显示。所以此处应当给予重置font-size: 100%;</p>
<p><strong>7.行高(line-height)</strong><br />
对于行高，YUI并没有给出重置定义，而Eric则给出了重置：</p>
<p>body {<br />
    line-height: 1;<br />
}</p>
<p>行高默认所有元素都会继承的，所以给body设置行高为1就足够了。通常行高设为1时候，英文照常阅读，但中文就无法阅读了，行间距过于紧密导致容易看错行。通常在中文环境下得设置1.4到1.5才能是用户正常阅读。我建议是1.5，这样算出来的值也是整数。比如字体大小12px的时候行高是18px，字体大小16px时行高24px。看起来也会比较舒服。此外，还有一个不设置成1的重要原因是：IE下，行高为1时，中文字顶部会被削掉几像素，字体加粗时尤为明显。所以，重置的原则是好的，但切不可重置为1。</p>
<p><strong>8.列表样式</strong><br />
YUI用了：</p>
<p>li {<br />
    list-style: none;<br />
}</p>
<p>Eric用了：</p>
<p>ol, ul {<br />
    list-style: none;<br />
}</p>
<p>尽管我没有测试出YUI的有什么问题，但我始终觉得设置ol和ul会比较稳妥。而且，波及的元素更少，性能应该更高一点。虽然下载量会多3字节。</p>
<p><strong>9.表格元素</strong><br />
在表格方面，都比较统一。均是：</p>
<p>/* tables still need &#8216;cellspacing=&#8221;0&#8243;&#8216; in the markup */<br />
table {<br />
    border-collapse: collapse;<br />
    border-spacing: 0;<br />
}</p>
<p>Eric还提醒到，需要在html中设置cellspacing=”0″ 来达到完美重置效果。<br />
但此外YUI还设置了</p>
<p>caption, th {<br />
    text-align: left;<br />
}</p>
<p>让caption和th元素不要居中。作为重置，是可取的。建议添加此规则。</p>
<p><strong>10.上下标以及baseline</strong><br />
YUI写成</p>
<p>sup {<br />
    vertical-align: baseline;<br />
}</p>
<p>sub {<br />
    vertical-align: baseline;<br />
}</p>
<p>似乎没有优化，不知道为何没有写到一起去。而Eric则在最开始那条中就已经定义。而其中的问题是，YUI这样定义了，但没有重置字体大小，这点是有所遗憾的。既然是重置样式，就彻底一些，所以建议改成这样的：</p>
<p>sup, sub {<br />
    font-size: 100%;<br />
    vertical-align: baseline;<br />
}</p>
<p>同样对于Eric把所有元素都放到了Baseline上，包括上标下标。Eric的解释是，强制让设计师精确定位这些元素的垂直偏移。<br />
<strong>11.插入和删除(ins/del)</strong><br />
对于这个问题，YUI直接清除了ins的下划线和del的删除线这两个文本装饰：</p>
<p>del, ins {<br />
    text-decoration: none;<br />
}</p>
<p>而Eric保留了删除线：</p>
<p>/* remember to highlight inserts somehow! */<br />
ins {<br />
    text-decoration: none;<br />
}<br />
del {<br />
    text-decoration: line-through;<br />
}</p>
<p>如何取舍？我选择Eric的，为什么我这里不追求完美的样式重置了呢？很简单，我这个reset的目标是为了让我们写页面的时候尽量避免浏览器默认样式，以及不同浏览器之间默认样式差异带来的问题。而del元素删除线的文本装饰，我相信没有人会反对的。有人会加上其他样式，比如字体变淡之类的，但对于 del如此强语义的元素来说，没有什么比用删除线更能表达含义的了。而不像上面那个focus样式，未必人人喜欢虚线框。但似乎又没有什么浏览器默认不给 del元素加删除线，故这条可以省略。<br />
所以，这里我只重置ins样式，别忘了给ins元素在等下也添加一些样式。</p>
<p><strong>12.引用元素的引号</strong><br />
某些浏览器中，q或者blockquote前后会出现引号。这个并不是谁都喜欢的。所以需要重置他。<br />
YUI的比较简单，只重置了q：</p>
<p>q:before,<br />
q:after {<br />
    content: &#8221;;<br />
}</p>
<p>而Eric则比较周到，把q和blockquote都重置了。</p>
<p>blockquote, q {<br />
    quotes: none;<br />
}<br />
blockquote:before, blockquote:after,<br />
q:before, q:after {<br />
    content: &#8221;;<br />
    content: none;<br />
}</p>
<p>OK，就决定用Eric的了，对于样式重置，细致一点周到一点总没有错。<br />
<strong><br />
13.链接</strong><br />
对于链接，YUI和Eric都没有采取样式重置，但从我思考许久后还是决定把链接样式重置放进来。究其原因，还是因为样式重置一来要彻底，二来对于链接样式并非所有设计师都喜欢用下划线装饰。因此，我还是建议把链接的下划线重置掉。</p>
<p>a {<br />
    text-decoration: none;<br />
}</p>
<p>但这样做有点粗糙。真正有下划线样式的其实只有 :link和:visited所以改成下面这样比较好：</p>
<p>:link, :visited {<br />
    text-decoration: none;<br />
}</p>
<p>此外，对于链接颜色，可以作为reset后急需设置的规则来处理。直接放入reset.css中不是很合适。</p>
<p><strong>14.我的重置样式</strong><br />
总结上面种种规则，这里给出一下我的CSS重置规则，BSD协议发布，请随意使用。测试样本（这个是从YUI那里复制过来的，感谢YUI为此做出的贡献。）<br />
下载：reset.css reset-min.css</p>
<p>/*<br />
Copyright (c) 2009, Shawphy(shawphy.com). All rights reserved.</p>
<p>http://shawphy.com/2009/03/my-own-reset-css.html</p>
<p>Based on YUI http://developer.yahoo.com/yui/reset/<br />
and Eric Meyer http://meyerweb.com/eric/tools/css/reset/index.html<br />
Licensed under the BSD License:</p>
<p>http://creativecommons.org/licenses/BSD/</p>
<p>version: 1.1 | 20090303<br />
*/</p>
<p>body, div, dl, dt, dd, ul, ol, li,<br />
h1, h2, h3, h4, h5, h6, pre, code,<br />
form, fieldset, legend, input, button,<br />
textarea, p, blockquote, th, td {<br />
    margin: 0;<br />
    padding: 0;<br />
}<br />
fieldset, img {<br />
    border: 0;<br />
}<br />
/* remember to define focus styles! */<br />
:focus {<br />
    outline: 0;<br />
}<br />
address, caption, cite, code, dfn,<br />
em, strong, th, var, optgroup {<br />
    font-style: normal;<br />
    font-weight: normal;<br />
}</p>
<p>h1, h2, h3, h4, h5, h6 {<br />
    font-size: 100%;<br />
    font-weight: normal;<br />
}<br />
abbr, acronym {<br />
    border: 0;<br />
    font-variant: normal;<br />
}</p>
<p>input, button, textarea,<br />
select, optgroup, option {<br />
    font-family: inherit;<br />
    font-size: inherit;<br />
    font-style: inherit;<br />
    font-weight: inherit;<br />
}<br />
code, kbd, samp, tt {<br />
    font-size: 100%;<br />
}<br />
/*@purpose To enable resizing for IE */<br />
/*@branch For IE6-Win, IE7-Win */<br />
input, button, textarea, select {<br />
    *font-size: 100%;<br />
}<br />
body {<br />
    line-height: 1.5;<br />
}<br />
ol, ul {<br />
    list-style: none;<br />
}<br />
/* tables still need &#8216;cellspacing=&#8221;0&#8243;&#8216; in the markup */<br />
table {<br />
    border-collapse: collapse;<br />
    border-spacing: 0;<br />
}<br />
caption, th {<br />
    text-align: left;<br />
}<br />
sup, sub {<br />
    font-size: 100%;<br />
    vertical-align: baseline;<br />
}<br />
/* remember to highlight anchors and inserts somehow! */<br />
:link, :visited , ins {<br />
    text-decoration: none;<br />
}<br />
blockquote, q {<br />
    quotes: none;<br />
}<br />
blockquote:before, blockquote:after,<br />
q:before, q:after {<br />
    content: &#8221;;<br />
    content: none;<br />
}</p>
<p><strong>15.完成一个初步的CSS框架</strong><br />
之前提到了，样式重置作为一个所有项目可以使用的共性存在，而不同的项目应当有其个性。当然还有其他一些共性，不属于样式重置的部分，但同样重要。再往下讲就可以做一个CSS框架了。CSS框架所要考虑的内容远比一个CSS Reset要考虑的多很多，这里只是点到为止，不做更多展开。</p>
<p>layout.css<br />
首先除了reset.css之外要建立的layout.css，这里目前主要推荐放入.clearfix。清除浮动很重要。但这不属于样式重置，放在布局当中正合适。</p>
<p>.clearfix:after {<br />
    content: &#8220;.&#8221;;<br />
    display: block;<br />
    height: 0;<br />
    clear: both;<br />
    visibility: hidden;<br />
}<br />
.clearfix {display: inline-block;}</p>
<p>/* Hides from IE-mac \*/<br />
* html .clearfix {height: 1%;}<br />
.clearfix {display: block;}<br />
/* End hide from IE-mac */</p>
<p>此外，layout.css中还可以放入自己常用的布局，比如 #wrap{margin:0 auto;width:960px;}之类的规则。看个人喜好而定。</p>
<p>typography.css<br />
这里可以放置很多规则，非常重要的是以下三个：<br />
:focus, a, ins<br />
这三个是被重置掉的，但又很重要的内容，建议在reset之后立即在typography中设定全站样式，保持样式统一。<br />
ins可以单独设置， :focus 最好设置成跟 :hover一样，而a的样式还是按照LoVe,HAte的法则来设置。</p>
<p>h1-h6系列也是之前被重置掉的。可以考虑在这里设置样式。按站点特性来定。我个人是不喜欢全局定义hx系列的字体大小的，统一为100%我觉得挺好。</p>
<p>接下来要设置的是font-family属性，可以参考射雕的文章。另外，小麦的文章中提到，表单元素的字体在IE中都不能继承父元素的字体，所以要单独设置。</p>
<p>至于其他需要全局设置的，可以参考前文中的叙述，找到相应的部分添加到typography.css中即可。这样就可以在保证reset.css通用性的情况下，使不同的项目又有个性。尽量保证reset.css在所有项目中都是一样的。有利于项目的开发。最后不要忘记在写表格的时候加 cellspacing=”0″ 来达到完美重置效果。</p>
<p><strong>16.样式下载</strong><br />
注：reset-min.rar为压缩过的重置样式表。</p>
<p><a href="http://www.86ue.com/download/blog/200910/reset.rar">reset.rar</a></p>
<p><a href="http://www.86ue.com/download/blog/200910/reset-min.rar">reset-min.rar</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.86ue.com/archives/163/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS代码优化，受益无穷</title>
		<link>http://www.86ue.com/archives/158</link>
		<comments>http://www.86ue.com/archives/158#comments</comments>
		<pubDate>Sun, 25 Oct 2009 15:25:54 +0000</pubDate>
		<dc:creator>紫枫印象</dc:creator>
				<category><![CDATA[CSS+HTML]]></category>
		<category><![CDATA[代码优化]]></category>

		<guid isPermaLink="false">http://www.86ue.com/?p=158</guid>
		<description><![CDATA[<strong>写在前面：</strong>
      CSS代码优化是指将多行的CSS属性声明化成一行，简洁代码。CSS优化的最大好处就是能够显著减少CSS文件的大小，其实还有很多其他益处。臃肿而杂乱的CSS样式表会使你遇到问题是难以调试。尤其是当一个团队在进行设计的时候，你的臃肿的CSS代码会使你的团队其他成员做很多无用功，甚至会降低工作效率。
      今天，为大家整理了一些常用css代码简写方法，一方面让你的css代码看起来整洁，另一方面减小css代码的臃肿度，提高css样式的读取速度。

<strong>1.属性为0</strong>

书写原则是如果CSS属性值为0，那么你不必为其添加单位(如:px/em)，你可能会这样写:

    padding: 10px 5px 0px 0px;

优化为:

    padding: 10px 5px 0 0;

<strong>2.背景(background)</strong>]]></description>
			<content:encoded><![CDATA[<p><strong>写在前面：</strong><br />
      CSS代码优化是指将多行的CSS属性声明化成一行，简洁代码。CSS优化的最大好处就是能够显著减少CSS文件的大小，其实还有很多其他益处。臃肿而杂乱的CSS样式表会使你遇到问题是难以调试。尤其是当一个团队在进行设计的时候，你的臃肿的CSS代码会使你的团队其他成员做很多无用功，甚至会降低工作效率。<br />
      今天，为大家整理了一些常用css代码简写方法，一方面让你的css代码看起来整洁，另一方面减小css代码的臃肿度，提高css样式的读取速度。</p>
<p><strong>1.属性为0</strong></p>
<p>书写原则是如果CSS属性值为0，那么你不必为其添加单位(如:px/em)，你可能会这样写:</p>
<p>    padding: 10px 5px 0px 0px;</p>
<p>优化为:</p>
<p>    padding: 10px 5px 0 0;</p>
<p><strong>2.背景(background)</strong></p>
<p>背景(background)属性可能会包含设置背景色、背景图、背景图的位置和背景图重复方式的参数，你可能会写成:</p>
<p>background-image: url(”logo.png”);<br />
background-position: top center;<br />
background-repeat: no-repeat;</p>
<p>优化为：</p>
<p>background:url(logo.png) top center no-repeat;</p>
<p><strong>3.颜色(color)</strong></p>
<p>颜色(color)属性在CSS通常指定为一个十六进制的值,一个#加6位数，他的简写方式是如果颜色值由成对儿出现的三对而数字组成，你可以省略掉没对中的一个数字。</p>
<p>　　#FFFFFF 可以写成 #FFF, #336699 可以写成 #369;</p>
<p>这种简写技巧只适用于成对出现的颜色值，其它颜色值不适用这种技巧，比如:</p>
<p>　　#010101, #F20000, #FFF000</p>
<p><strong>4.外边距/空白边(Margin)/内边距(Padding)</strong></p>
<p>声明CSS magin值得时候通常会写成这样:</p>
<p>    margin-top:0px;<br />
    margin-right:10px;<br />
    margin-bottom:0px;<br />
    margin-left:10px;<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
    padding-top:0px;<br />
    padding-right:10px;<br />
    padding-bottom:0px;<br />
    padding-left:10px;<br />
优化为：</p>
<p>margin:0 10px 0px 10px;</p>
<p>padding:0 10px 0px 10px;</p>
<p>当你生命padding、margin、border(还有一些其他属性)时，记得要把按照顺时针的方向来声明属性值，也就是按照<strong>上-右-下-左</strong>的方向。关于这些属性还有另一个更加简单的写法，看看属性中上和下、左和右是否值是相等的，如果是那么就可以进一步优化了，你可以省略掉后两个值，剩下的两个值前者指上下，后者指左右:</p>
<p>margin:0 10px;</p>
<p>padding:0 10px;</p>
<p><strong>5.边框(Border)</strong></p>
<p>边框的简写方式相比其它生命来说会比较复杂，很多CSSer一开始都容易记混它的简写顺序，如果你想声明一个1像素宽的实线黑色边框，可能会写成:</p>
<p>    border-width:1px;<br />
    border-style:solid;<br />
    border-color:#000;</p>
<p>优化为：</p>
<p>border:1px solid #000;</p>
<p><strong>注意:这里的颜色值已经使用了上面讲过的颜色简写方法了哦。</strong></p>
<p>我们还可以为四个边设置不同的宽度:</p>
<p>border-top-width:1px;<br />
border-right-width:2px;<br />
border-bottom-width:3px;<br />
border-left-width:4px;</p>
<p>优化为：</p>
<p>border: 1px 2px 3px 4px;</p>
<p><strong>6.文字(font)</strong></p>
<p>文字属性也有很多可能会用到的属性值，像背景一样，你可能会声明这种复杂的文字样式:</p>
<p>    font-style:italic;<br />
    font-variant:small-caps;<br />
    font-weight:bold;<br />
    font-size:12px;<br />
    line-height:1.5;<br />
    font-family:宋体, Arial, sans-serif;</p>
<p>优化为：</p>
<p>font:italic small-caps bold 12px/1.5 宋体, Arial, sans-serif;</p>
<p><strong>7.公有属性(public)</strong></p>
<p>一般大家可能会这样写：</p>
<p>ul { margin:0; padding:0; }<br />
li{ margin:0; padding:0; }<br />
img { margin:0; padding:0; }</p>
<p>优化为：</p>
<p>ul,li,img { margin:0; padding:0; }</p>
<p>希望以上的编写技巧，能够让你的css代码简洁不少。</p>
<p><strong>欢迎转载：注明出处,&#8221;UED,紫枫-80後&#8221; ，珍惜他人的劳动成果！^-^</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.86ue.com/archives/158/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>背景定位之CSS Sprites的一些技巧</title>
		<link>http://www.86ue.com/archives/153</link>
		<comments>http://www.86ue.com/archives/153#comments</comments>
		<pubDate>Sat, 24 Oct 2009 16:32:51 +0000</pubDate>
		<dc:creator>紫枫印象</dc:creator>
				<category><![CDATA[CSS+HTML]]></category>
		<category><![CDATA[Sprites]]></category>
		<category><![CDATA[背景]]></category>

		<guid isPermaLink="false">http://www.86ue.com/?p=153</guid>
		<description><![CDATA[众所周知，减少网站加载时间的最有效的方式之一就是减少网站的HTTP请求数。实现这一目标的一个有效的方法就是通过CSS Sprites——将多个图片整合到一个图片中，然后再用CSS来定位。

下面是一张样图：

<img src="http://www.86ue.com/download/blog/200910/0008262wq.png" alt="null" />

本文的目的并不是讲CSS Sprite如何让一个网站更快，而是说一些使用CSS Sprite的时候的一些最佳实践。

<strong>不要等到你完成切片之后才开始sprite. </strong>

如果你边切图边写CSS，然后等你完成了整个网站之后再来拼接这些图片到一个Sprite中，你就不得不完全重写你的CSS，你也必须要花费很多的时间来用PS拼接大量的图片——这是件令人倍感纠结的事情。但是如果边切图边整合，就会比较容易些。]]></description>
			<content:encoded><![CDATA[<p>众所周知，减少网站加载时间的最有效的方式之一就是减少网站的HTTP请求数。实现这一目标的一个有效的方法就是通过CSS Sprites——将多个图片整合到一个图片中，然后再用CSS来定位。</p>
<p>下面是一张样图：</p>
<p><img src="http://www.86ue.com/download/blog/200910/0008262wq.png" alt="null" /></p>
<p>本文的目的并不是讲CSS Sprite如何让一个网站更快，而是说一些使用CSS Sprite的时候的一些最佳实践。</p>
<p><strong>不要等到你完成切片之后才开始sprite. </strong></p>
<p>如果你边切图边写CSS，然后等你完成了整个网站之后再来拼接这些图片到一个Sprite中，你就不得不完全重写你的CSS，你也必须要花费很多的时间来用PS拼接大量的图片——这是件令人倍感纠结的事情。但是如果边切图边整合，就会比较容易些。</p>
<p><strong>把图片放到它要显示的地方的相对的地方</strong></p>
<p>这个小技巧貌似比较难理解。我直到创建一个比较大的sprite的时候才理解到这一点。比如，如果我们希望一个图片出现在一个元素的左侧：</p>
<p><img src="http://www.86ue.com/download/blog/200910/00033221v.png" alt="null" /></p>
<p>将那个图片放到sprite图片的右边(本文开始的那个sprite图片)。这样的话，当你通过CSS移动背景图片的位置的时候，基本上不可能有其它的小图片意外的出现在它的附近。使用Sprite的时候常常遇到的一个问题是图片会出现在它不该出现的位置。</p>
<p><strong>定位时避免使用bottom或right等</strong></p>
<p>当使用CSS sprite的时候，只用background-position: bottom -300px或background-position: right -200px;非常容易。这刚开始的时候是可行的，但是问题是，当你在宽度上或高度上扩展相关sprite图片的时候，原先设置的位置可能是错的，因为那个图片已经不再Sprite图片的底部或右部了。使用确切的位置来避免这个问题。</p>
<p><strong>给每个图片足够的空间</strong></p>
<p>就像你在本文顶部的实例图片看到的那样，那些小图片都被预留了足够的空间。为什么不把他们塞到一块来让sprite图片更小呢？ 因为使用这些图片的元素通常都会有大量的内容而且可能会需要扩展的间距，以至于其它图片不会意外出现。</p>
<p>例子：<br />
<img src="http://www.86ue.com/download/blog/200910/0003324lk.png" alt="null" /></p>
<p>例子中的每个条目都有个带数字的图片作为背景图片。如果你仔细看了上面的那张图片，你可以看到这三个数字图片是如何错开排列的，这样如果内容增多，其它图片就不会意外出现。</p>
<p><strong>不用担心Sprite图片的像素大小</strong></p>
<p>如果你的网站经过良好的设计，那么你将会有一大堆的图片来整合进到sprite里面，这样你就需要你个非常大的sprite来恰当的放置这些图片。这是很不错的。sprite里的空白不会占用太多的文件大小。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.86ue.com/archives/153/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>css背景定位过程图解</title>
		<link>http://www.86ue.com/archives/150</link>
		<comments>http://www.86ue.com/archives/150#comments</comments>
		<pubDate>Sat, 24 Oct 2009 16:10:23 +0000</pubDate>
		<dc:creator>紫枫印象</dc:creator>
				<category><![CDATA[CSS+HTML]]></category>
		<category><![CDATA[图解]]></category>
		<category><![CDATA[背景定位]]></category>

		<guid isPermaLink="false">http://www.86ue.com/?p=150</guid>
		<description><![CDATA[过程：

<img src="http://www.86ue.com/download/blog/200910/4-31e2166cc94d04cc751.gif" alt="null" />


<img src="http://www.86ue.com/download/blog/200910/4-910d73c375024baa892.gif" alt="null" />


<img src="http://www.86ue.com/download/blog/200910/4-3f44ba8e1ab19162ad3.gif" alt="null" />


<img src="http://www.86ue.com/download/blog/200910/4-a8f1b1c1e7f6cda7d64.gif" alt="null" />]]></description>
			<content:encoded><![CDATA[<p>过程：</p>
<p><img src="http://www.86ue.com/download/blog/200910/4-31e2166cc94d04cc751.gif" alt="null" /></p>
<p><img src="http://www.86ue.com/download/blog/200910/4-910d73c375024baa892.gif" alt="null" /></p>
<p><img src="http://www.86ue.com/download/blog/200910/4-3f44ba8e1ab19162ad3.gif" alt="null" /></p>
<p><img src="http://www.86ue.com/download/blog/200910/4-a8f1b1c1e7f6cda7d64.gif" alt="null" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.86ue.com/archives/150/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>续CSS背景定位实战应用</title>
		<link>http://www.86ue.com/archives/145</link>
		<comments>http://www.86ue.com/archives/145#comments</comments>
		<pubDate>Sat, 24 Oct 2009 11:48:46 +0000</pubDate>
		<dc:creator>紫枫印象</dc:creator>
				<category><![CDATA[CSS+HTML]]></category>
		<category><![CDATA[背景]]></category>

		<guid isPermaLink="false">http://www.86ue.com/?p=145</guid>
		<description><![CDATA[<strong>实战前先让大家了解下，浏览器对不同形式引用的图片请求时怎么样的。</strong>

<strong>1. 隐藏图片</strong>

《img src=“1.jpg” style=“display： none” /》

结论：只有Opera不产生请求。

注意：用visibility： hidden隐藏图片时，在Opera下也会产生请求。

<strong>2. 重复图片</strong>

《img src=“1.jpg” /》

《img src=“1.jpg” /》

结论：所有浏览器都只产生一次请求。

<strong>3. 重复背景</strong>

《style type=“text/css”》

.test1 { background： url（1.jpg） }

.test2 { background： url（1.jpg） }

《/style》

《div class=“test1”》test1《/div》

《div class=“test2”》test2《/div》

结论：所有浏览器都只产生一次请求。]]></description>
			<content:encoded><![CDATA[<p><strong>实战前先让大家了解下，浏览器对不同形式引用的图片请求时怎么样的。</strong></p>
<p><strong>1. 隐藏图片</strong></p>
<p>《img src=“1.jpg” style=“display： none” /》</p>
<p>结论：只有Opera不产生请求。</p>
<p>注意：用visibility： hidden隐藏图片时，在Opera下也会产生请求。</p>
<p><strong>2. 重复图片</strong></p>
<p>《img src=“1.jpg” /》</p>
<p>《img src=“1.jpg” /》</p>
<p>结论：所有浏览器都只产生一次请求。</p>
<p><strong>3. 重复背景</strong></p>
<p>《style type=“text/css”》</p>
<p>.test1 { background： url（1.jpg） }</p>
<p>.test2 { background： url（1.jpg） }</p>
<p>《/style》</p>
<p>《div class=“test1”》test1《/div》</p>
<p>《div class=“test2”》test2《/div》</p>
<p>结论：所有浏览器都只产生一次请求。</p>
<p><strong>4. 不存在的元素的背景</strong></p>
<p>《style type=“text/css”》</p>
<p>.test1 { background： url（1.jpg） }</p>
<p>.test2 { background： url（2.jpg） } /* 页面中没有class为test2的元素 */</p>
<p>《/style》</p>
<p>《div class=“test1”》test1《/div》</p>
<p>结论：背景仅在应用的元素在页面中存在时，才会产生请求。这对CSS框架来说，很有意义。</p>
<p><strong>5. 隐藏元素的背景</strong></p>
<p>《style type=“text/css”》</p>
<p>.test1 { background： url（1.jpg）; display： none; }</p>
<p>.test2 { background： url（2.jpg）; visibility： hidden; }</p>
<p>《/style》</p>
<p>《div class=“test1”》test1《/div》</p>
<p>结论：Opera和Firefox对于用display： none隐藏的元素背景，不会产生HTTP请求。仅当这些元素非display： none时，才会请求背景图片。</p>
<p><strong>6. 多重背景</strong></p>
<p>《style type=“text/css”》</p>
<p>.test1 { background： url（1.jpg）; }</p>
<p>.test1 { background： url（2.jpg）; }</p>
<p>《/style》</p>
<p>《div class=“test1”》test1《/div》</p>
<p>结论：除了基于webkit渲染引擎的Safari和Chrome，其它浏览器只会请求一张背景图。</p>
<p>注意：webkit引擎浏览器对背景图都请求，是因为支持CSS3中的多背景图。</p>
<p><strong>7. hover的背景加载</strong></p>
<p>《style type=“text/css”》</p>
<p>a.test1 { background： url（1.jpg）; }</p>
<p>a.test1:hover { background： url（2.jpg）; }</p>
<p>《/style》</p>
<p>《a href=“#” class=“test1”》test1《/a》</p>
<p>结论：触发hover时，才会请求hover状态下的背景。这会造成闪烁，因此经常放在同一张背景图里通过翻转来实现。</p>
<p>注意：在图片no-cache的情况下，IE每次hover状态改变时，都会产生一次新请求。很糟糕。</p>
<p><strong>8. JS里innerHTML中的图片</strong></p>
<p>《script type=“text/javascript”》</p>
<p>var el = document.createElement（‘div’）;</p>
<p>el.innerHTML = ‘《img src=“1.jpg” /》’;</p>
<p>//document.body.appendChild（el）;</p>
<p>《/script》</p>
<p>结论：只有Opera不会马上请求图片。</p>
<p>注意：当添加到DOM树上时，Opera才会发送请求。</p>
<p><strong>9. 图片预加载</strong></p>
<p>最常用的是JS方案：</p>
<p>《script type=“text/javascript”》</p>
<p>new Image（）.src = ‘1.jpg’;</p>
<p>new Image（）.src = ‘2.jpg’;</p>
<p>《/script》</p>
<p>在无JS支持的环境下，可以采用隐藏元素来预加载：</p>
<p>《img src=“1.jpg” style=“visibility： hidden; height： 0; width： 0” /》</p>
<p><strong>总结</strong></p>
<p>对于隐藏图片和隐藏元素的背景，Opera不会产生请求。</p>
<p>对于隐藏元素的背景，Firefox也不会产生请求。</p>
<p>对于尚未插入DOM树的img元素，Opera不会产生请求。</p>
<p>基于webkit引擎的Safari和Chrome，支持多背景图。</p>
<p>其它情景，所有主流浏览器保持一致。</p>
<p>对图片请求的处理上，个人觉得Opera走在前列。</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>以上总结了那么多，主要的一点，是让大家明白，浏览器请求一张图片的速度，比请求多张要快，大大提高页面下载速度。所以，我们可以把页面用到的所有图片放在一张大的透明图上面，通过css里面的background位移来定位图片。</p>
<p><strong>先看下实例：</strong></p>
<p>QQ腾讯官网：</p>
<p><img src="http://www.86ue.com/download/blog/200910/skin1v9.png" alt="null" /></p>
<p>网易163：</p>
<p><img src="http://www.86ue.com/download/blog/200910/skin_blue.png" alt="null" /></p>
<p>新浪博客：</p>
<p><img src="http://www.86ue.com/download/blog/200910/blog_mj_006_5-3.png" alt="null" /></p>
<p>以上官网都是利用了背景图片定位技术。</p>
<p>看看他们怎么实现的。<br />
/*<br />
#def div,#s1 div,#s2 div,#s3 div,#s4 div,#s5 div,#s6 div,#s7 div,#s8 div,#s9 div,#sar div<br />
{background-image:url(http://mat1.gtimg.com/www/iskin09/skinbt.png);background-repeat:no-repeat;}<br />
#def div{background-position:0 0;}<br />
#s1 div{background-position:0 -11px;}<br />
#s2 div{background-position:0 -22px;}<br />
#s3 div{background-position:0 -33px;}<br />
#s4 div{background-position:0 -44px;}<br />
#s5 div{background-position:0 -55px;}<br />
#s6 div{background-position:0 -66px;}<br />
#s7 div{background-position:0 -77px;}<br />
#s8 div{background-position:0 -88px;}<br />
#s9 div{background-position:0 -99px;}<br />
*/</p>
<p>参考“<strong>CSS背景属性Background详解</strong>”</p>
<p>写个demo给大家看看。。</p>
<p>演示效果：</p>
<p><a href="http://www.86ue.com/download/blog/200910/backgrounddemo.html">demo</a></p>
<p>只看代码：</p>
<p><img src="http://www.86ue.com/download/blog/200910/cssbackground.png" alt="null" /></p>
<p><strong>欢迎转载：注明出处,&#8221;UED,紫枫-80後&#8221; ，珍惜他人的劳动成果！^-^</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.86ue.com/archives/145/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS背景属性Background详解</title>
		<link>http://www.86ue.com/archives/141</link>
		<comments>http://www.86ue.com/archives/141#comments</comments>
		<pubDate>Sat, 24 Oct 2009 11:08:57 +0000</pubDate>
		<dc:creator>紫枫印象</dc:creator>
				<category><![CDATA[CSS+HTML]]></category>
		<category><![CDATA[background]]></category>
		<category><![CDATA[背景]]></category>

		<guid isPermaLink="false">http://www.86ue.com/?p=141</guid>
		<description><![CDATA[<strong>css2 中的背景(background)</strong>

CSS2 中有5个主要的背景(background)属性，它们是：

    background-color: 指定填充背景的颜色。
    background-image: 引用图片作为背景。
    background-position: 指定元素背景图片的位置。
    background-repeat: 决定是否重复背景图片。
    background-attachment: 决定背景图是否随页面滚动。

这些属性可以全部合并为一个缩写属性: background。需要注意的一个要点是背景占据元素的所有内容区域，包括 padding 和 border，但是不包括元素的 margin。它在 Firefox, Safari ,Opera 以及 IE8 中工作正常，但是 IE6 和 IE7 中，background 没把 border 计算在内。

<img src="http://www.86ue.com/download/blog/200910/1618379kw.jpg" alt="null" />

<strong>基本属性</strong>

<strong>背景色(background-color)</strong>

background-color 属性用纯色来填充背景。有许多方式指定这个颜色，以下方式都得到相同的结果。]]></description>
			<content:encoded><![CDATA[<p><strong>css2 中的背景(background)</strong></p>
<p>CSS2 中有5个主要的背景(background)属性，它们是：</p>
<p>    background-color: 指定填充背景的颜色。<br />
    background-image: 引用图片作为背景。<br />
    background-position: 指定元素背景图片的位置。<br />
    background-repeat: 决定是否重复背景图片。<br />
    background-attachment: 决定背景图是否随页面滚动。</p>
<p>这些属性可以全部合并为一个缩写属性: background。需要注意的一个要点是背景占据元素的所有内容区域，包括 padding 和 border，但是不包括元素的 margin。它在 Firefox, Safari ,Opera 以及 IE8 中工作正常，但是 IE6 和 IE7 中，background 没把 border 计算在内。</p>
<p><img src="http://www.86ue.com/download/blog/200910/1618379kw.jpg" alt="null" /></p>
<p><strong>基本属性</strong></p>
<p><strong>背景色(background-color)</strong></p>
<p>background-color 属性用纯色来填充背景。有许多方式指定这个颜色，以下方式都得到相同的结果。</p>
<p>background-color: blue;<br />
background-color: rgb(0, 0, 255);<br />
background-color: #0000ff;</p>
<p>background-color 也可被设置为透明（transparent），这会使得其下的元素可见。</p>
<p><strong>背景图(background-image)</strong></p>
<p>background-image 属性允许指定一个图片展示在背景中。可以和 background-color 连用，因此如果图片不重复地话，图片覆盖不到地地方都会被背景色填充。代码很简单，只需要记住，路径是相对于样式表的，因此以下的代码中，图片和样式表是在同一个目录中的。</p>
<p>background-image: url(image.jpg);</p>
<p>但是如果图片在一个名为 images 的子目录中，就应该是：</p>
<p>background-image: url(images/image.jpg);</p>
<p><strong>背景平铺(background-repeat)</strong></p>
<p>设置背景图片时，默认把图片在水平和垂直方向平铺以铺满整个元素。这也许是你需要的，但是有时会希望图片只出现一次，或者只在一个方向平铺。以下为可能的设置值和结果：</p>
<p>background-repeat: repeat; /* 默认值，在水平和垂直方向平铺 */<br />
background-repeat: no-repeat; /* 不平铺。图片只展示一次。 */<br />
background-repeat: repeat-x; /* 水平方向平铺(沿 x 轴) */<br />
background-repeat: repeat-y; /* 垂直方向平铺(沿 y 轴) */<br />
background-repeat: inherit; /* 继承父元素的 background-repeat 属性*/<br />
背景定位(background-position)</p>
<p>background-position 属性用来控制背景图片在元素中的位置。技巧是，实际上指定的是图片左上角相对于元素左上角的位置。<br />
下面的例子中，设置了一个背景图片并且用 background-position 属性来控制它的位置，同时也设置了 background-repeat 为 no-repeat。计量单位是像素。第一个数字表示 x 轴(水平)位置，第二个是 y 轴(垂直) 位置。</p>
<p>/* 例 1: 默认值 */<br />
background-position: 0 0; /* 元素的左上角 */</p>
<p>/* 例 2: 把图片向右移动 */<br />
background-position: 75px 0;</p>
<p>/* 例 3: 把图片向左移动 */<br />
background-position: -75px 0;</p>
<p>/* 例 4: 把图片向下移动 */<br />
background-position: 0 100px;</p>
<p><img src="http://www.86ue.com/download/blog/200910/161842kic.jpg" alt="null" /></p>
<p>background-position 属性可以用其它数值，关键词和百分比来指定，这比较有用，尤其是在元素尺寸不是用像素设置时。</p>
<p>关键词是不用解释的。x 轴上：</p>
<p>    * * left<br />
    * * center<br />
    * * right</p>
<p>y 轴上:</p>
<p>    * * top<br />
    * * center<br />
    * * bottom</p>
<p>顺序方面和使用像素值时的顺序几乎一样，首先是 x 轴，其次是 y 轴，像这样：</p>
<p>background-position: top right;</p>
<p>使用百分数时也类似。需要主要的是，使用百分数时，浏览器是以元素的百分比数值来设置图片的位置的。看例子就好理解了。假设设定如下：</p>
<p>background-position: 100% 50%;</p>
<p>使用百分数定位时，其实是将背景图片的百分比指定的位置和元素的百分比位置对齐。也就是说，百分数定位是改变了背景图和元素的对齐基点。不再像使用像素和关键词定位时，使用背景图和元素的左上角为对齐基点。例如上例的 background-position: 100% 50%; 就是将背景图片的 100%(right) 50%(center) 这个点，和元素的 100%(right) 50%(center) 这个点对齐。</p>
<p><img src="http://www.86ue.com/download/blog/200910/161843utq.jpg" alt="null" /></p>
<p><strong>背景附着</strong></p>
<p>background-attachment 属性决定用户滚动页面时图片的状态。三个可用属性为 scroll(滚动)，fixed(固定) 和 inherit(继承)。inherit 单纯地指定元素继承他的父元素的 background-attachment 属性。</p>
<p>为了正确地理解 background-attachment，首先需要明白页面(page)和视口(view port)是如何协作地。视口(view port)是浏览器显示网页的部分(就是去掉工具栏的浏览器)。视口(view port)的位置固定，不变动。</p>
<p>当向下滚动网页时，视口(view port)是不动的，而页面的内容向上滚动。看起来貌似视口(view port)向页面下方滚动了。如果设置 background-attachment: scroll，就设置了当元素滚动时，元素背景也必需随着滚动。简而言之，背景是紧贴元素的。这是 background-attachment 默认值。</p>
<p>用一个例子来更清楚地描述下：</p>
<p>background-image: url(test-image.jpg);</p>
<p>background-position: 0 0;<br />
background-repeat: no-repeat;<br />
background-attachment: scroll;</p>
<p><img src="http://www.86ue.com/download/blog/200910/1618468sn.jpg" alt="null" /></p>
<p>当向下滚动页面时，背景向上滚动直至消失。</p>
<p>但是当设置 background-attachment 为 fixed 时，当页面向下滚动时，背景要待在它原来的位置(相对于浏览器来说)。也就是不随元素滚动。</p>
<p>用另一个例子描述下：</p>
<p>background-image: url(test-image.jpg);<br />
background-position: 0 100%;<br />
background-repeat: no-repeat;<br />
background-attachment: fixed;</p>
<p><img src="http://www.86ue.com/download/blog/200910/161847om1.jpg" alt="null" /></p>
<p>页面已经向下滚动了，但是图像仍然保持可见。</p>
<p>需要重视的一点是背景图只能出现在它父元素能达到的区域。即使图片是相对于视口(view port)定位地，如果它的父元素不可见，图片就会消失。参见下面的例子。此例中，图片位于视口(view port)的左下方，但是只有元素内的图片部分是可见的。</p>
<p>background-image: url(test-image.jpg);<br />
background-position: 0 100%;<br />
background-repeat: no-repeat;<br />
background-attachment: fixed;</p>
<p><img src="http://www.86ue.com/download/blog/200910/161848g0r.jpg" alt="null" /></p>
<p>因为图片开始在元素之外，一部分图片被切除了。<br />
背景的简写属性</p>
<p>可以把背景的各个属性合为一行，而不用每次都单独把他们写出来。格式如下：</p>
<p>background:<br />
<color> <image>
<position> <attachment> <repeat></p>
<p>例如，下面的声明</p>
<p>background-color: transparent;<br />
background-image: url(image.jpg);<br />
background-position: 50% 0 ;<br />
background-attachment: scroll;<br />
background-repeat: repeat-y;</p>
<p>可以合为单独一行：</p>
<p>background: transparent url(image.jpg) 50% 0 scroll repeat-y;</p>
<p>而且不需要指定每一个值。如果省略值地话，就使用属性地默认值。例如，上面那行和下面这个效果一样：</p>
<p>background: url(image.jpg) 50% 0 repeat-y;</p>
<p>背景的一般用法</p>
<p>除了可以用来使元素更加优雅这类显然的用法之外，背景也可以用于其它的目的。<br />
仿栏</p>
<p>当使用 css 的 float 属性来定位布局元素时，要确保两栏或多栏有相同的长度是比较困难的。如果长度不同，其中一栏的背景会比另外的短，这会破坏整个设计。</p>
<p>仿栏是个非常简单的背景技巧，这个技巧最早发表在A List Apart 。思路很简单：不再给每列单独设置背景，而是给各列的父元素设置一个背景图。所有栏的设计都包含在这张图片之中。<br />
文本替换</p>
<p>在网页上，对于字体的选择是相当有限的。可以使用 sIFR 之类的工具来定制字体，但是这需要用户启用 JavaScript 。一个适用于任意浏览器的简单方法是，用想用的字体来做一张文本图片，并用这张图片作为背景。这样，文本依然出现在文档标记中以供搜索引擎检索和屏幕浏览 器识别，但是在浏览器中就会显示首选的字体。</p>
<p>例如，HTML 标记可能是这样的：</p>
<h3>Blogroll</h3>
<p>假如有一个 200 乘 75 的图片，上面有更好看的字体，就可以用如下方式来替换文本：</p>
<p>h3.blogroll {<br />
width: 200px;<br />
height: 75px; /* So that the element will show the whole image. */<br />
background:url(blogroll-text.jpg) 0 0 no-repeat; /* Sets the background image */<br />
text-indent: -9999px; /* Hides the regular text by moving it 9999 pixels to the left */<br />
}</p>
<p>简单的圆点</p>
<p>无需列表中的圆点看起来很难看。不用再处理所有不同的 list-style 属性，只需要简单地把他们隐藏并用背景图代替就可以了。因为图片可以随意选择，这些圆点就可以看起来更漂亮。</p>
<p>下面，我们把一个无需列表改造成有圆滑圆点的：</p>
<p>ul {<br />
list-style: none; /* Removes default bullets. */<br />
}</p>
<p>ul li {<br />
padding-left: 40px; /* Indents list items, leaving room for background image on the left. */<br />
background: url(bulletpoint.jpg) 0 0 no-repeat;<br />
}</p>
<p><strong>CSS3 中的背景</strong></p>
<p>CSS3 中的背景有较多改进。最显著的是多背景图片的选项，同时也增加了4个新属性。<br />
多背景</p>
<p>CSS3 中，可以对一个元素应用一个或多个图片作为背景。代码和 css2 中的一样，只需要用逗号来区别各个图片。第一个声明的图片定位在元素顶部，其它的图片按序在其下排列，例如：</p>
<p>background-image: url(top-image.jpg), url(middle-image.jpg), url(bottom-image.jpg);</p>
<p><strong>新属性：背景修剪(background-clip)</strong></p>
<p>这又把我们带回了文章开始讨论的那个关于边框内图片显示的话题。它被描述为“背景描绘区”。</p>
<p>background-clip 属性用来增强背景显示位置的控制能力。可能的值为：</p>
<p>    * background-clip: border-box;<br />
    背景显示在边框内。<br />
    * background-clip: padding-box;<br />
    背景显示在内补白(padding)内，而不是边框内。<br />
    * background-clip: content-box;<br />
    只在内容内显示背景，而不是内补白(padding)和边框内。<br />
    * background-clip: no-clip;<br />
    默认值，和 border-box 一样。</p>
<p><strong>新属性：背景原点(background-origin)</strong></p>
<p>这个属性和 background-position 结合起来使用。可以从边框，内补白或者内容盒子开始计算 background-position (类似于 background-clip)。</p>
<p>    * background-origin: border-box;<br />
    以边框为原点开始计算 background-position.<br />
    * background-origin: padding-box;<br />
    以内补白为原点开始计算 background-position<br />
    * background-origin: content-box;<br />
    以内容盒子为原点开始计算 background-position<br />
    对于 background-clip 和 background-origin 不同的一个解释参看 CSS3.info</p>
<p><strong>新属性： 背景尺寸(background-size)</strong></p>
<p>background-size 用来调整背景图的大小。有好几个可能值：</p>
<p>    * background-size: contain;<br />
    缩小图片来适应元素的尺寸(保持像素的长宽比)<br />
    * background-size: cover;<br />
    扩展图片来填满元素(保持像素的长宽比)<br />
    * background-size: 100px 100px;<br />
    调整图片到指定大小<br />
    * background-size: 50% 100%;<br />
    调整图片到指定大小。百分比是相对于包含元素的尺寸的。</p>
<p>可以看一下 CSS3规则 网站上的几个例子。</p>
<p><strong>新属性：(background-break)</strong></p>
<p>CSS3 中，元素可以被分成几个独立的盒子(例如 使内联元素 span 跨越多行)。background-break 属性用来控制背景怎样在这些不同的盒子中显示。</p>
<p>可能值为：</p>
<p>    * Background-break: continuous;<br />
    默认值。忽略盒之间的距离(也就是像元素没有分成多个盒子，依然是一个整体一样)<br />
    * Background-break: bounding-box;<br />
    把盒之间的距离计算在内<br />
    * Background-break: each-box;<br />
    为每个盒子单独重绘背景</p>
<p>背景色(background-color)的改进</p>
<p>background-color 在 css3 中有了稍许改进。除了设置背景颜色之外，如果元素底层的背景图不可用，还可以设置一个“回退色”。</p>
<p>通过在回退色之前增加一个斜杠(/)来实现，例如：</p>
<p>background-color: green / blue;</p>
<p>此例中，背景色应该是绿色(green)。然而，如果底层背景图不能使用的话，背景色就是蓝色而不是绿色。如果在斜杠前不指定颜色，默认为透明(transparent)。<br />
背景平铺(background-repeat)的改进</p>
<p>CSS2中当图片平铺时，会被元素在末端截断。CSS3 引入了两个属性来修正这个问题:</p>
<p>    * space: 应用同等数量的空白到图片之间，直到填满整个元素<br />
    * round: 缩小图片直到正好平铺满元素</p>
<p>关于 background-repeat: space; 的一个例子，可以在 CSS3 规则网站看到。<br />
背景附着(background-attachment)的改进</p>
<p>background-attachment 属性增加了一个新值：local。这是用来配合可以滚动的元素的(设置为 overflow: scroll; 的元素)。当 background-attachment 设置为滚动(scroll)时，背景图不会随元素内容的滚动而滚动。</p>
<p>设置为 background-attachment :local; 时，背景图会随内容的滚动而滚动。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.86ue.com/archives/141/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>25条CSS制作网页编写的提醒及小技巧整理</title>
		<link>http://www.86ue.com/archives/30</link>
		<comments>http://www.86ue.com/archives/30#comments</comments>
		<pubDate>Thu, 15 Oct 2009 16:37:42 +0000</pubDate>
		<dc:creator>紫枫印象</dc:creator>
				<category><![CDATA[CSS+HTML]]></category>
		<category><![CDATA[制作网页]]></category>
		<category><![CDATA[小技巧]]></category>

		<guid isPermaLink="false">http://www.86ue.com/?p=30</guid>
		<description><![CDATA[1、ul标签在Mozilla中默认是有padding值的，而在IE中只有margin有值。

2、同一个的class选择符可以在一个文档中重复出现，而id选择符却只能出现一次；对一个标签同时使用class和id进行CSS定义，如果定义有重复，id选择符做的定义有效，是因为ID的权值要比CLASS大。

ID是一个标签，用于区分不同的结构和内容，就象名字，如果一个屋子有2个人同名，就会出现混淆；
CLASS是一个样式，可以套在任何结构和内容上，就象一件衣服；

3、一个兼容性调整(IE和Mozilla)的笨办法：
初学可能会碰到这样一个情况：同样一个标签的属性在IE设置成A显示是正常的，而在Mozilla里必须要设成B才能正常显示，或者两个倒过来。
临时解决方法：选择符{属性名:B !important;属性名:A}

就现在的兼容来说，css hack是没办法的办法。我现在也在为这个头疼。

4、如果一组要嵌套的标签之间需要些间距的话，那就留给位于里面的标签的margin属性吧，而不要去定义位于外面的标签的padding

这个问题体现在宽度设置上，就比如你div的width属性设置了200，然后你又想让里面的文字距离边框10px，于是设置了padding，但是在FF里你就会发现，宽度变成了220.]]></description>
			<content:encoded><![CDATA[<p>1、ul标签在Mozilla中默认是有padding值的，而在IE中只有margin有值。</p>
<p>2、同一个的class选择符可以在一个文档中重复出现，而id选择符却只能出现一次；对一个标签同时使用class和id进行CSS定义，如果定义有重复，id选择符做的定义有效，是因为ID的权值要比CLASS大。</p>
<p>ID是一个标签，用于区分不同的结构和内容，就象名字，如果一个屋子有2个人同名，就会出现混淆；<br />
CLASS是一个样式，可以套在任何结构和内容上，就象一件衣服；</p>
<p>3、一个兼容性调整(IE和Mozilla)的笨办法：<br />
初学可能会碰到这样一个情况：同样一个标签的属性在IE设置成A显示是正常的，而在Mozilla里必须要设成B才能正常显示，或者两个倒过来。<br />
临时解决方法：选择符{属性名:B !important;属性名:A}</p>
<p>就现在的兼容来说，css hack是没办法的办法。我现在也在为这个头疼。</p>
<p>4、如果一组要嵌套的标签之间需要些间距的话，那就留给位于里面的标签的margin属性吧，而不要去定义位于外面的标签的padding</p>
<p>这个问题体现在宽度设置上，就比如你div的width属性设置了200，然后你又想让里面的文字距离边框10px，于是设置了padding，但是在FF里你就会发现，宽度变成了220.</p>
<p>5、li标签前面的图标推荐使用background-image，而不是list-style-image。</p>
<p>6、IE分不清继承关系和父子关系的差别，全部都是继承关系。</p>
<p>7、在给你的标签疯狂加选择符的时候，别忘了在CSS里给选择符加上注释。 等你以后修改你的CSS的时候就知道为什么要这么做了。</p>
<p>不要随便用一个怪异的名字来定义你的class。就从我接受的项目来说，莫名其妙的写法让我头疼得厉害。翻找下我前面写过的东西，可以看到一个CSS命名规则。详细请见u/kele/archives/2007/609.html</p>
<p>8、如果你给一个标签设置了一个深色调的背景图片和亮色调的文字效果。建议这个时候给你的标签再设置一个深色调的背景颜色。</p>
<p>9、定义链接的四种状态要注意先后顺序: Link Visited Hover Active</p>
<p>与此类似的还有margin和padding，用TRouBLe来记忆。就是Top Right Bottom Left。</p>
<p>10、与内容无关的图片请使用background</p>
<p>这个就是为了在无CSS调用的时候不影响整体页面风格。少用图片来表现风格。试想别人禁止图片后，你的网站还有什么可以看的东西。</p>
<p>11、定义颜色可以缩写#8899FF=#89F</p>
<p>简写标准～可惜我还没有这个好习惯～比如#FFFFFF我还是习惯这么写，而不是#FFF</p>
<p>12、table在某些方面比其它标签表现的要好的多。请在需要列对齐的地方用它。</p>
<p>div+css设计不是说你就完全放弃table，怎么表现的好才是重点</p>
<p>13、&lt;script&gt;没有language这个属性，应该写成这样:<br />
&lt;script type=”text/Javascript”&gt;</p>
<p>但是在我接触到的很多网站页面里，是这么写的&lt;script type=”text/Javascript” language=“javascript”&gt;。莫名其妙～打开微软的网站你就可以看到&lt;script type=”text/Javascript”&gt;的表达方式</p>
<p>14、标题是标题，标题的文字是标题的文字。有时候标题不一定需要显示文字，所以:&lt;h1&gt;标题内容&lt;/h1&gt; 改成 &lt;h1&gt;&lt;span&gt;标题内容&lt;/span&gt;&lt;/h1&gt;</p>
<p>我还是没有养成使用H1，H2标签的习惯～需要努力～</p>
<p>15、完美的单象素外框线表格（在IE5、IE6、IE7及FF1.0.4以上中均可通过测试）<br />
table{border-collapse:collapse;}<br />
td{border:#000 solid 1px;}</p>
<p>1象素黑色表格～</p>
<p>16、margin取负值可以在标签使用绝对定位的时候起到相对定位的作用，在页面居中显示时，使用绝对定位的层不适合使用left:XXpx这个属性。把这个层放到一个要相对定位的标签旁，然后使用margin的负值是个好方法。</p>
<p>负值时在布局中经常用到的方法～值得去学习下如何使用。</p>
<p>17、绝对定位时使用margin值定位可以达到相对于本身所在位置的定，这与top，left等属性相对与窗口边缘的定位不同。绝对定位的优势在于可以让其它元素忽略它的存在。</p>
<p>设计的时候你可以使用相对浮动层的绝对定位～有意想不到的效果。</p>
<p>18、如果文字过长,则将过长的部分变成省略号显示：IE5,FF无效，但可以隐藏，IE6有效<br />
&lt;DIV STYLE=”width:120px;height:50px;border:1px solid blue;overflow:hidden;text-overflow:ellipsis”&gt;<br />
&lt;NOBR&gt;就是比如有一行文字，很长，表格内一行显示不下.&lt;/NOBR&gt;</p>
<p>恩，这个东西我在用～</p>
<p>19、在IE中可能由于注释带来的文字重复问题时可以把注释改为：<br />
&lt;!–[if !IE]&gt;Put your commentary in here…&lt;![endif]–&gt;</p>
<p>20、如何用CSS调用外部字体<br />
语法：<br />
@font-face{font-family:name;src:url(url);sRules}取值：<br />
name：字体名称。任何可能的 font-family 属性的值<br />
url(url)：使用绝对或相对 url 地址指定OpenType字体文件<br />
sRules：样式表定义</p>
<p>为了防止用户没有字体而影响了网站效果～不过我觉得最好还是少用。</p>
<p>21、如何让一个表单中的文本框中的文字垂直居中？<br />
如果用行高与高度的组在FF中是没有效果的，办法就是定义上下补白就可以实现想想的效果了。</p>
<p>22、定义A标签要注意的小问题：<br />
当我们定义a{color:red;}时，它代表了A的四种状态的样式，如果此时要定义一个鼠标放上的状态只要定义a:hover就可以了，其它三种状态就是A中所定义的样式。<br />
只定义了一个a:link时，一定要记得把其它三种状态定义出来！</p>
<p>hover属性是一个很强大的东西～有时间的人可以仔细研究下～</p>
<p>23、并不是所有样式都要简写：<br />
当样式表前定义了如p{padding:1px 2px 3px 4px}时，在后续工程中又增加了一个样式上补白5px，下补白6px。我们并不一定要写成p.style1{padding:5px 6px 3px 4px}。可以写成p.style1{padding-top:5px;padding-right:6px;},你可能会感觉这样写还不如原来那样好，但你想没想过，你的那种写法重复定义了样式，另外你可以不必去找原来的下补白与左补白的值是多少！如果以后前一个样式P变了话，你定义的p.style1的样式也要变。</p>
<p>24、网站越大，CSS样式越多，开始做前，请做好充分的准备和策划，包括命名规则。页面区块划分，内部样式分类等。</p>
<p>非常非常非常非常重要～记得在压缩CSS的时候兼顾好你的可读性～非常非常非常非常重要～深受其害中。</p>
<p>25、几个常用到的CSS样式：<br />
1）中文字两端对齐：text-align:justify;text-justify:inter-ideograph;</p>
<p>2）固定宽度汉字截断：overflow:hidden;text-overflow:ellipsis;white-space:nowrap;(不过只能处理文字在一行上的截断，不能处理多行。)（IE5以上）FF不能，它只隐藏。</p>
<p>3）固定宽度汉字（词）折行：table-layout:fixed; word-break:break-all;（IE5以上）FF不能。</p>
<p>4）&lt;acronym title=”输入要提示的文字” style=”cursor:help;”&gt;文字&lt;/acronym&gt;用鼠标放在前面的文字上看效果。这个效果在国外的很多网站都可以看到，而国内的少又少。</p>
<p>5）图片设为半透明：.halfalpha { background-color:#000000;filter:Alpha(Opacity=50)}在IE6及IE5测试通过，FF未通过，这是因为这个样式是IE私有的东西；</p>
<p>6）Flash透明：选中swf,打开原代码窗口，在&lt;/object&gt;前输入&lt;param name=”wmode” value=”transparent”&gt; 以上是针对IE的代码。<br />
针对FIREFOX 给&lt;embed&gt; 标签也增加类似参数wmode=”transparent”</p>
<p>7）在做网页时常用到把鼠标放在图片上会出现图片变亮的效果，可以用图片替换的技巧，也可以用如下的滤镜：<br />
.pictures img {<br />
filter: alpha(opacity=45); }<br />
.pictures a:hover img {<br />
filter: alpha(opacity=90); }</p>
]]></content:encoded>
			<wfw:commentRss>http://www.86ue.com/archives/30/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
