<?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/category/front-technology/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网页布局中易犯的10个小错误</title>
		<link>http://www.86ue.com/archives/792</link>
		<comments>http://www.86ue.com/archives/792#comments</comments>
		<pubDate>Sun, 07 Mar 2010 14:30:31 +0000</pubDate>
		<dc:creator>紫枫印象</dc:creator>
				<category><![CDATA[CSS+HTML]]></category>
		<category><![CDATA[css，网页布局]]></category>

		<guid isPermaLink="false">http://www.86ue.com/?p=792</guid>
		<description><![CDATA[即使是CSS高手，也难免在书写CSS代码的时候出一些小错误，或者说，任何一种代码都是如此。小错误却往往造成大问题，浪费很多无辜的时间来调试和排错。查看下面这份CSS 网页布局中易犯的10个小错误，努力的修正你可能会犯的错误，加速你的前端开发效率。

<strong>1. 检查html元素是否有拼写错误、是否忘记结束标记</strong>

即使是老手也经常会弄错div的嵌套关系。可以用dreamweaver的验证功能检查一下有无错误。

<strong>2. 检查CSS是否书写正确</strong>

检查一下有无拼写错误、是否忘记结尾的 } 等。可以利用CleanCSS来检查 CSS的拼写错误。CleanCSS本是为CSS减肥的工具，但也能检查出拼写错误。

<strong>3. 用删除法确定错误发生的位置</strong>

如果错误影响了整体布局，则可以逐个删除div块，直到删除某个div块后显示恢复正常，即可确定错误发生的位置。]]></description>
			<content:encoded><![CDATA[<p>即使是CSS高手，也难免在书写CSS代码的时候出一些小错误，或者说，任何一种代码都是如此。小错误却往往造成大问题，浪费很多无辜的时间来调试和排错。查看下面这份CSS 网页布局中易犯的10个小错误，努力的修正你可能会犯的错误，加速你的前端开发效率。</p>
<p><strong>1. 检查html元素是否有拼写错误、是否忘记结束标记</strong></p>
<p>即使是老手也经常会弄错div的嵌套关系。可以用dreamweaver的验证功能检查一下有无错误。</p>
<p><strong>2. 检查CSS是否书写正确</strong></p>
<p>检查一下有无拼写错误、是否忘记结尾的 } 等。可以利用CleanCSS来检查 CSS的拼写错误。CleanCSS本是为CSS减肥的工具，但也能检查出拼写错误。</p>
<p><strong>3. 用删除法确定错误发生的位置</strong></p>
<p>如果错误影响了整体布局，则可以逐个删除div块，直到删除某个div块后显示恢复正常，即可确定错误发生的位置。</p>
<p><strong>4. 利用border属性确定出错元素的布局特性</strong></p>
<p>使用float属性布局一不小心就会出错。这时为元素添加border属性确定元素边界，错误原因即水落石出。</p>
<p><strong>5. float元素的父元素不能指定clear属性</strong></p>
<p>MacIE下如果对float的元素的父元素使用clear属性，周围的float元素布局就会混乱。这是MacIE的著名的bug，倘若不知道就会走弯路。</p>
<p><strong>6. float元素务必指定width属性</strong></p>
<p>很多浏览器在显示未指定width的float元素时会有bug。所以不管float元素的内容如何，一定要为其指定width属性。<br />
另外指定元素时尽量使用em而不是px做单位。</p>
<p><strong>7. float元素不能指定margin和padding等属性</strong></p>
<p>IE在显示指定了margin和padding的float元素时有bug。因此不要对float元素指定margin和padding属性（可以在float元素内部嵌套一个div来设置margin和padding）。也可以使用hack方法为IE指定特别的值。</p>
<p><strong>8. float元素的宽度之和要小于100%</strong></p>
<p>如果float元素的宽度之和正好是100%，某些古老的浏览器将不能正常显示。因此请保证宽度之和小于99%。</p>
<p><strong>9. 是否重设了默认的样式？</strong></p>
<p>某些属性如margin、padding等，不同浏览器会有不同的解释。因此最好在开发前首先将全体的margin、padding设置为0、列表样式设置为none等。</p>
<p><strong>10. 是否忘记了写DTD？</strong></p>
<p>如果无论怎样调整不同浏览器显示结果还是不一样，那么可以检查一下页面开头是不是忘了写下DTD声明。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.86ue.com/archives/792/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>揭秘HTML5和CSS3</title>
		<link>http://www.86ue.com/archives/458</link>
		<comments>http://www.86ue.com/archives/458#comments</comments>
		<pubDate>Thu, 17 Dec 2009 12:52:57 +0000</pubDate>
		<dc:creator>紫枫印象</dc:creator>
				<category><![CDATA[CSS+HTML]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[HTML5]]></category>

		<guid isPermaLink="false">http://www.86ue.com/?p=458</guid>
		<description><![CDATA[HTML5

HTML 5草案的前身名为Web Applications 1.0，于2004年被WHATWG提出，于2007年被W3C接纳，并成立了新的HTML工作团队。在2008年1月22日，第一份正式草案发布。 HTML 5是近十年来Web开发标准最巨大的飞跃。和以前的版本不同，HTML 5并非仅仅用来表示Web内容，它的新使命是将Web带入一个成熟的应用平台，在HTML 5平台上，视频，音频，图象，动画，以及同电脑的交互都被标准化。那么我们来看一下HTML5的技术概览有哪些：
HTML5新增和移除的元素

HTML5 新增了很多多媒体和交互性元素如video, audio，在HTML4当中如果要嵌入一个视频或是音频的话需要引入一大段的代码，还有兼容各个浏览器，而HTML5只需要通过引入一个标签就可以，就像img标签一样方便。在页面布局和内容实现方面HTML5新增了很多结构化标签元素以及块级及语义元素，如果你要用HTML表示一个文件的上传进度条，在 HTML5中你可以用progress这个元素来表示，它有一个value属性描述了已经完成了多少任务，还有一个属性max描述了这个任务一共需要多少，还可以通过DOM接口得到这个进度条的position属性(只读)，也就是任务完成的百分比。Youtube在HTML5技术上已经做了一个尝试，http://www.youtube.com/html5(需要翻墙) 是用HTML5做的一个DEMO，从整个页面源代码来看，非常简洁。当然HTML5也对一些元素新增了一些属性，如input和textarea的 placeholder属性，相当于输入框的输入提示，script有一个async属性会影响脚本的加载和执行。对于所有的HTML共有的属性我们通常把它称作是“全局属性”，如class, id, tabindex, title，HTML5也新增了一些全局属性，如contenteditable, contextmenu, hidden等属性。HTML5还增加了对于微数据的支持，如HTML5新增的item, itempro, subject等属性。

当然HTML5也移除了一些表示页面展现的元素，如font, center, strike等，这些本应该是CSS来做的，所以还是很好理解的，也移除了一些影响网站可访问性的元素如frame, frameset, noframe以及一些不常用的元素如acronym，而采用abbr来表示缩写。HTML5还移除了一些影响客户端兼容性的HTML熟悉，如link的 rev属性，td的scope属性；HTML5也移除了一些表示页面展现的属性如一些元素的align,bgcolor属性。]]></description>
			<content:encoded><![CDATA[<h2>HTML5</h2>
<p>HTML 5草案的前身名为Web Applications 1.0，于2004年被WHATWG提出，于2007年被W3C接纳，并成立了新的HTML工作团队。在2008年1月22日，第一份正式草案发布。 HTML 5是近十年来Web开发标准最巨大的飞跃。和以前的版本不同，HTML 5并非仅仅用来表示Web内容，它的新使命是将Web带入一个成熟的应用平台，在HTML 5平台上，视频，音频，图象，动画，以及同电脑的交互都被标准化。那么我们来看一下HTML5的技术概览有哪些：</p>
<h3>HTML5新增和移除的元素</h3>
<p>HTML5新增了很多多媒体和交互性元素如video, audio，在HTML4当中如果要嵌入一个视频或是音频的话需要引入一大段的代码，还有兼容各个浏览器，而HTML5只需要通过引入一个标签就可以，就 像img标签一样方便。在页面布局和内容实现方面HTML5新增了很多结构化标签元素以及块级及语义元素，如果你要用HTML表示一个文件的上传进度条， 在 HTML5中你可以用progress这个元素来表示，它有一个value属性描述了已经完成了多少任务，还有一个属性max描述了这个任务一共需要多 少，还可以通过DOM接口得到这个进度条的position属性(只读)，也就是任务完成的百分比。Youtube在HTML5技术上已经做了一个尝试，<a href="http://www.youtube.com/html5" target="_blank">http://www.youtube.com/html5</a>(需要<a href="http://www.google.cn/search?hl=zh-CN&amp;source=hp&amp;q=%E7%BF%BB%E5%A2%99&amp;btnG=Google+%E6%90%9C%E7%B4%A2&amp;aq=f&amp;oq=" target="_blank">翻墙</a>) 是用HTML5做的一个DEMO，从整个页面源代码来看，非常简洁。当然HTML5也对一些元素新增了一些属性，如input和textarea的 placeholder属性，相当于输入框的输入提示，script有一个async属性会影响脚本的加载和执行。对于所有的HTML共有的属性我们通常 把它称作是“全局属性”，如class, id, tabindex, title，HTML5也新增了一些全局属性，如contenteditable, contextmenu, hidden等属性。HTML5还增加了对于微数据的支持，如HTML5新增的item, itempro, subject等属性。</p>
<p>当然HTML5也移除了一些表示页面展现的元素，如font, center, strike等，这些本应该是CSS来做的，所以还是很好理解的，也移除了一些影响网站可访问性的元素如frame, frameset, noframe以及一些不常用的元素如acronym，而采用abbr来表示缩写。HTML5还移除了一些影响客户端兼容性的HTML熟悉，如link的 rev属性，td的scope属性；HTML5也移除了一些表示页面展现的属性如一些元素的align,bgcolor属性。</p>
<h3>HTML5对表单的支持</h3>
<p>HTML5 提供了强大的控件类型如url, email, date, tel等，强大的约束属性，如required表示必填，文件上传的accept属性，以及一些表单重复元素模型的支持，HTML5在提交表单的时候还可 以设置提交的方式为XML提交方式，这样服务器端接收到的数据将是XML格式，HTML5的表单被定义为“Web Forms 2.0”，目前opera9.5+对Web Forms 2.0的支持较为完美。</p>
<p><a href="http://revieweb20.com/Speech/Demo/form-html5.html" target="_blank">点此查看Web Forms 2.0 DEMO</a>，需要Opera9.5+</p>
<h3>HTML5 DOM变化</h3>
<p>HTML5在DOM LEVEL 2 HTML方面很多都是继承自HTMLDocument的接口，当然HTML5在DOM上也有一些值得注意的新成员，如：支持 getElementsByClassName，可以根据class类名选择元素，getSelection()将会返回当前选中的对象，在选择器上面有 两个方法querySelector和querySelectorAll可以根据 css选择符来获取要查询的元素，相当于YUI3中的Y.one和Y.all。</p>
<h3>HTML5的Javascript APIs</h3>
<p>HTML5在Javascript上面新增了哪些API呢？</p>
<ul>
<li> Video/Audio: HTML5为Video和Audio提供了API来让开发者控制他们自己的用户界面，如可以播放或暂停媒体内容。</li>
<li> Canvas: Canvas是一个新的HTML元素，这个元素可以被Script语言(通常是JavaScript)用来绘制图形。例如可以用它来画图、合成图象、或做 简单的(和不那么简单的)动画。Canvas是一个神奇的东西，它给我的第一感觉就像是在用Photoshop一样，它的每一个方法跟Photoshop 是那么地相似，通过canvas.getContext(’2d’)就可以得到这个canvas的API，你可以通过fillStyle设置其填充颜色或 是通过strokeStyle设置其描边颜色，甚至它画路径的操作跟Photoshop的钢笔操作更是不谋而合。Canvas在很多网站都已经有应用，如<a href="http://downloadstats.mozilla.com/" target="_blank">Firefox的实时下载状态统计</a>，甚至还可以用canvas来编写Web Game。</li>
<li> Drag&amp;Drop: 在指示设备的视觉媒体中，”Drag”的操作就是鼠标按下(mousedown)并伴随着鼠标移动(mousemove)的事件，而”Drop”则是鼠标 释放时触发的事件。在Drag&amp;Drop里定义了DataEvent和DataTransfer接口，同时当拖拽操作发生时会触发如 dragstart, dragenter, dragleave, drop, dragend等事件。</li>
<li> Web Workers: 让Javascript多线程，可以在后台做很多工作而不会阻断当前的浏览器操作。</li>
<li> Geolocation: 地理位置定位，运行navigator.geolocation.getCurrentPosition(success,error)这个方法时浏览器 会提示是否要共享你的地理位置，如果选择共享，则会回调success函数，success函数有一个参数是position对象，这个position 对象有一个coords对象，coords对象包含了很多地理位置信息如latitude(维度)和longitude(经度)，这样就可以知道你的具体 位置了，这个功能在一些手机如Iphone上已经有广泛的应用了。</li>
<li> Application Cache: 这是HTML5对于离线应用的支持，通过在html元素上加一个属性manifest，浏览器会提示你是否要将数据缓存到客户端，如果用户选择了允许，则 会按照指定的manifest文件列表缓存需要的文件，当你的网络不可用时，你还是可以使用这个应用的。对于离线应用，Google也开发了Google Gears浏览器扩展，不过最后Google转投HTML5可能也是看到了HTML5存储和离线应用的这种优势。</li>
<li> Storage: Webkit已经实现了database storage，你可以像后端操作数据库一样查询数据并执行一些操作。还有一种存储是键值对存储，如sessionStorage和 localStorage，可以通过setItem和getItem来存储与获取值，相对于Cookie的存储来说，存储的容量要大很多。</li>
<li> X-Document Messaging: 浏览器因为安全和隐私的原因，阻止了不同域之间文档的通信，虽然这是一个安全限制，但是对于那些没有危害的不同域的文档通信带来了很多问题，但是 HTML5可以实现这种跨文档通信，让我们可以不用管源域是来自哪里，同时可以防止脚本攻击。</li>
</ul>
<p>HTML5让你心动了吗？那么HTML5什么时候会成为标准呢？据说要等到2022年，这有一个很有意思的网站<a href="http://ishtml5readyyet.com/" target="_blank">http://ishtml5readyyet.com/</a>告诉你还有多少天HTML5会真正到来。</p>
<p><a href="http://revieweb20.com/Speech/Demo/html5.html" target="_blank">点击查看HTML5 DEMO</a>，需要Firefox3.5+/Safari4.0+</p>
<h2>CSS3</h2>
<p>CSS3对于我们Web开发者来说不只是新奇的技术，更重要的是这些全新概念的web应用给我们带来更多无限的可能性，也极大地提高了我们的开发效 率。我们将不必再依赖图片或者Javascript 去完成圆角、多背景、用户自定义字体、3D动画、渐变、盒阴影、文字阴影、透明度等提高Web设计质量的特色应用。</p>
<h3>CSS3在选择器上面的支持</h3>
<p>利用属性选择器我们可以根据属性值的开头或结尾很容易选择某个元素，利用兄弟选择器可以选择同级兄弟结点或紧邻下一个结点的元素，利用伪类选择器可 以选择某一类元素，CSS3在选择器上的丰富支持让我们可以灵活的控制样式，而不必为了选择某些元素给他们加上如”odd”或”even”这样的类名。</p>
<h3>CSS3在样式上的支持</h3>
<p>有一个调查说开发者最期待CSS3的特性是什么，最后票数最多的是“圆角”，不错，圆角这个功能可以给我们这些前端工程师省去很多时间和精力去切图 拼凑一个圆角。CSS3还支持阴影，盒阴影以及文本阴影，渐变，之前你可能是通过IE的滤镜看到过，其实CSS3实现起来更加方便。@font-face 可以自定义字体，如果用传统的方式，VD把一个带有特殊文字的设计图给你让你来实现的话你可能会把它做成一个图片，而通过CSS3用@font-face 就可以了。CSS3对于连续文本换行也新增了一个属性word-wrap,你可以设置其为normal(不换行)或break-word(换行)，这解决 了连续英文字符出现页面错位的问题，也不需要后端去截取这个连续字符。使用CSS3你还可以给边框加背景，这在iphone上也有应用的例子。CSS3在 背景上支持背景调整大小，如当你用一张大图要做一个小的元素背景时可以通过background-size来调整背景图的大小来适应这个元素。CSS3支 持opacity, rgba和hsl/a, opacity和rgba的区别是opacity设置的透明对其内容也会产生影响，而rgba只对你应用的元素产生影响。CSS3在布局上对于盒模型提供 了支持，可以设置box-sizing为content-box或border-box，应用为content-box就是正常的模式，而应用为 border-box和IE5.5的盒模型很相似，即元素的宽度包括border和padding，这个在布局上可能会比较方便，不用去管到底这个元素会 占用多大的宽度，而用content-box还需要手动计算一下这个元素实际占用的宽度。</p>
<h3>CSS3对于动画的支持</h3>
<p>CSS3支持的动画类型有：transform(变换)、transition(过渡)和animation(动画)。你可以对特定的属性设置 transition，transiton和animation的区别不大，animation的动画是自己定义的，面向的更多的是脚本开发者，往往更加 复杂。</p>
<p>为了使用大部分CSS3特性，我们不得不与原来的属性一起使用生产商专有扩展。原因是直到现在，大部分浏览器只支持部分CSS3属性。最常见的私有 属性是用于Webkit核心浏览器的(比如, Safari)， 它们以-webkit-开始，以及Gecko核心的浏览器(比如, Firefox)，以-moz-开始，还有Konqueror (-khtml-)、Opera (-o-) 以及Internet Explorer (-ms-)都有它们自己的属性扩展（目前只有IE8支持-ms-前缀）</p>
<h3>那我们在开发中该如何去用CSS3呢？</h3>
<p>我觉得首先是遵循一个优雅降级的原则，比如前面谈到的圆角，我们可以针对Firefox和Safari等这些支持圆角的浏览器中应用CSS圆角，而 那些不支持CSS圆角的浏览器则显示为直角。其次就是对于不支持CSS3的浏览器可以使用Javascript来实现，如CSS3任何元素支 持:hover伪类，我们就可以对只支持链接:hover的IE6用JS来实现。最后就是在向用户或老板推广新技术的同时也要关注他们的目标与可行性，不 能为了技术而技术。</p>
<p><a href="http://revieweb20.com/Speech/Demo/css3.html" target="_blank">点击查看CSS3 DEMO</a>，需要Firefox3.5+/Safari4.0+</p>
]]></content:encoded>
			<wfw:commentRss>http://www.86ue.com/archives/458/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>
	</channel>
</rss>
