<?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>刘钢的博客 - 我是UED &#187; css3</title>
	<atom:link href="http://www.iamued.com/tag/css3/feed" rel="self" type="application/rss+xml" />
	<link>http://www.iamued.com</link>
	<description>http://www.IamUED.com</description>
	<lastBuildDate>Wed, 18 Jan 2012 02:51:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>基于 HTML5 的 Windows 画图程序</title>
		<link>http://www.iamued.com/qianduan/1397.html</link>
		<comments>http://www.iamued.com/qianduan/1397.html#comments</comments>
		<pubDate>Wed, 07 Apr 2010 05:38:50 +0000</pubDate>
		<dc:creator>RichieLiu</dc:creator>
				<category><![CDATA[JavaScript脚本]]></category>
		<category><![CDATA[前端开发]]></category>
		<category><![CDATA[页面实现]]></category>
		<category><![CDATA[Canvas]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[html5]]></category>

		<guid isPermaLink="false">http://www.iamued.com/?p=1397</guid>
		<description><![CDATA[Windows 画图程序一直伴随着 Windows 各个版本，这个很简单，几乎没有什么用处的程序拥有最基本的绘图功能，很适合用来涂鸦。HTML5 的 Canvas 对象使在线绘图成为可能，虽然 HTML5 还远未成熟，但很多人已经迫不及待地用它设计一些让人惊叹的应用。 CanvasPaint 是一个基于 HTML5 的标准 Windows 画图程序，它拥有和 Windows 画图程序一模一样的界面和操作，功能也几乎完全一样，在特定浏览器的支持下，你甚至可以将最后的作品保存到本机。这并不是最近的项目，2006年就有了， 因此，目前绝大多数支持标准的浏览器（Firefox，Safari，Chrome，Opera）都可以正常使用这个程序。以下是作者对这个项目的一些解 释。 为什么要开发这个程序？ 目的不是为了开发一个 Windows 画图程序，而是体验 HTML5 的 Canvas 功能。 如何使用 和标准 Windows 绘图程序一样。 能保存吗？ 是的，但只支持 Firefox 2 和 Opera 9 （译者注：这是作者2006年就实现的一个程序）。在本机保存，选择 File 菜单中的 Download，在线保存，选择 Save online，会自动生成一个 URL 在线显示你的作品。 浏览器本身的右键菜单影响使用 可以在浏览器的设置中禁用右键菜单。 为什么有些功能不能用？ 一些功能支持特定版本的浏览器（译者注：这是就2006年而言）: Color picker Firefox 2.0 Opera [...]]]></description>
			<content:encoded><![CDATA[<p>Windows 画图程序一直伴随着 Windows  各个版本，这个很简单，几乎没有什么用处的程序拥有最基本的绘图功能，很适合用来涂鸦。HTML5 的 Canvas 对象使在线绘图成为可能，虽然  HTML5 还远未成熟，但很多人已经迫不及待地用它设计一些让人惊叹的应用。</p>
<p><img src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2010/04/1339016YD.jpg" alt="" /></p>
<p><a href="http://canvaspaint.org/">CanvasPaint</a> 是一个基于 HTML5 的标准 Windows 画图程序，它拥有和 Windows  画图程序一模一样的界面和操作，功能也几乎完全一样，在特定浏览器的支持下，你甚至可以将最后的作品保存到本机。这并不是最近的项目，2006年就有了， 因此，目前绝大多数支持标准的浏览器（Firefox，Safari，Chrome，Opera）都可以正常使用这个程序。以下是作者对这个项目的一些解 释。</p>
<h3>为什么要开发这个程序？</h3>
<p>目的不是为了开发一个 Windows 画图程序，而是体验 HTML5 的 Canvas 功能。</p>
<h3>如何使用</h3>
<p>和标准 Windows 绘图程序一样。</p>
<h3>能保存吗？</h3>
<p>是的，但只支持 Firefox 2 和 Opera 9 （译者注：这是作者2006年就实现的一个程序）。在本机保存，选择 File  菜单中的 Download，在线保存，选择 Save online，会自动生成一个 URL 在线显示你的作品。</p>
<h3>浏览器本身的右键菜单影响使用</h3>
<p>可以在浏览器的设置中禁用右键菜单。</p>
<h3>为什么有些功能不能用？</h3>
<p>一些功能支持特定版本的浏览器（译者注：这是就2006年而言）:</p>
<dl>
<dt>Color picker</dt>
<dd>Firefox 2.0</dd>
<dd>Opera 9</dd>
<dt>Flood  fill</dt>
<dd>Opera 9</dd>
<dt>Save image</dt>
<dd>Firefox 2.0</dd>
<dd>Opera  9</dd>
<dt>Open URL</dt>
<dd>Firefox 1.5</dd>
<dd>Opera 9</dd>
<dd>Latest  WebKit</dd>
</dl>
<h3>Canvas 对象好用吗?</h3>
<p>对那些不需要跨浏览器支持的应用很好用。但在绘画中，最大的问题是，受限于 mousemove  事件的刷新率，你不太容易发现光标的位置，使用喷笔的时候尤其明显。另外，当尺寸变得很大时，速度变得很慢，没有 getPixel() 功能。</p>
<h3>技术细节</h3>
<p>程序中使用了 5 个 Canvas 对象。</p>
<p>一个主画板，一个是透明画板层浮动在上方显示预览绘画内容，一个隐藏的 Canvas  用来缓存选择的内容，另一个用来缓存反悔状态，一个用在程序标题栏，用来显示渐变色。</p>
<h3>其他人的 HTML5 Canvas 实验</h3>
<p><a href="http://www.abrahamjoffe.com.au/ben/canvascape/">Canvascape  3D</a> （用 HTML5 实现简单的第一人称射击游戏）<br />
<a href="http://www.liquidx.net/canvasgraphjs/#examples">CanvasGraph</a> （一个 HTML5 Canvas 绘图 JavaScript  类库 ）<br />
<a href="http://cow.neondragon.net/index.php/383-Reflectionjs-Demo">Image   reflections</a> （用 HTML5 Canvas 实现图像倒影）<br />
<a href="http://caimansys.com/painter/">Canvas Paint<strong>er</strong> </a> （一个更为简单的 Canvas 画图程序）</p>
<h3>真正令人赞叹的 HTML 画图程序</h3>
<p>如果上面的程序已经让你对 HTML5 的 Canvas 功能感到鼓舞，<a href="http://mugtug.com/sketchpad/">下面这个画图程序会让你赞叹</a> 。拥有不输桌面的界面体验和流畅 感，在多屏幕电脑上，我甚至有将那些浮动工具面板拖到第二个屏幕的冲动。</p>
<p>演示地址：<a href="http://mugtug.com/sketchpad/">http://mugtug.com/sketchpad/</a></p>
<p><img src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2010/04/1339106Rt.jpg" alt="" /></p>
<p>本文素材来源：<a href="http://canvaspaint.org/">http://canvaspaint.org/#</a><br />
<a href="http://mugtug.com/sketchpad/">http://mugtug.com/sketchpad/</a></p>
<p>中文编译来源：<a href="http://www.comsharp.com/"><strong>锐商企业CMS</strong> 网站内容管理系统</a> 官方网站</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iamued.com/qianduan/1397.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>你需要知道的CSS3 动画技术</title>
		<link>http://www.iamued.com/qianduan/1085.html</link>
		<comments>http://www.iamued.com/qianduan/1085.html#comments</comments>
		<pubDate>Wed, 30 Dec 2009 12:48:13 +0000</pubDate>
		<dc:creator>RichieLiu</dc:creator>
				<category><![CDATA[前端开发]]></category>
		<category><![CDATA[页面实现]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[前端]]></category>
		<category><![CDATA[动画]]></category>
		<category><![CDATA[技术]]></category>

		<guid isPermaLink="false">http://www.iamued.com/?p=1085</guid>
		<description><![CDATA[译序：本文译自Smashingmagazine，但是原文讲述的内容有些浅，也不是很完整，前端观察在翻译的前提下，增加了更多的更系统的内容。如有不足之处，欢迎指正补充。 随着网络的发展，浏览器具有更强的渲染更高级代码的能力，我们正逐步实现跨越所有平台和浏览器的目标。我们不但可以要花费更少的时间来确保我们的盒模型在IE6中看起来正常，而且形成了鼓励创新、避免hack、重前端脚本的氛围。   网络是一个非常好的环境，也是一个有丰富的知识来分享的协作社区。我们想要有圆角，我们就实现了它；我们想要多背景图片，我们实现了它；我们想要 边框图片，我们也让它实现了。所以需求从来不是问题，否则，我们可能还都仍然在使用table来布局页面而且使用过多的代码呢。我们都知道，网络无所不能。 为网络而生 CSS 3的属性比如border-radius、box-shadow和 text-shadow在webkit(Safari、Chrome等)和Gecko(Firefox)等先进的浏览器中的使用开始出现增长的势头。它们(这些CSS属性)已经为用户创建更轻量的页面和更丰富的体验，而且它们可以优雅的降级。然而，这些只是CSS 3能为我们做的众多事情中的一小部分。 在本文中，我们将走的更远，看一看 变形(transformation)、转换(transition)和动画(animation)等更高级的CSS3技术。我们将涉及代码本身、浏览器支持以及一些可以正确地展示这些新属性是如何即提升你的设计又增强整体用户体验的例子。 CSS 变形(Transformation) CSS transformation是W3C的一个草案。但当我第一次坐下来阅读它的全部特性以了解一些东西的时候，它并没有让我感到开窍。你可以想象的到，这个文档是用技术术语的撰写的，而且它更关注变形的图形(比如绘图)元素和矩阵。大一学习微积分之后就没有碰过矩阵了，我必须为本章节做很多好的旧浏览器测试以及猜测和检验。 在看完我能找到的每一个教程和大量的浏览器测试之后，我总结出一些大家都能从中获益的有用的关于CSS变形的信息。 transform transform属性实现了一些可用SVG实现的同样的功能。它可用于内联(inline)元素和块级(block)元素。它允许我们旋转、缩放和移动元素——只需要一行CSS代码。 一些前卫设计的最大诟病就是文字不可选(必须要使用切图的方法实现)。当你熟练使用transform属性来控制文字的时候，这就不再是问题了，因为这是个纯CSS方法，所以元素内的文字会保持可选。这是CSS相对于使用图片(或背景图片)的一个巨大优势。 一些有趣而有用的变形功能： rotate Rotate(旋转)允许你通过传递一个度数值来转动一个对象。 scale Scale是一个缩放功能，可以让任一元素变的更大。它使用正数和负数以及小数作为参数。 translate Translate就是基于X和Y 坐标重新定位元素 skew 顾名思义，skew就是要将对象倾斜，参数是度数 matrix transform支持矩阵变换，就是基于X和Y 坐标重新定位元素 让我们更深入的了解每一个功能吧。 Rotate transform属性有很多用法，其中一个就是translate(旋转)。translate就是基于角度转动一个对象并可用于内联元素和块级元素，它可以实现很酷的效果。 请注意在IE8中(非标准模式)它需要你写成“-ms-filter”而不是“filter”。 浏览器支持 浏览器对translate的支持令人惊奇的广泛。在上面的CSS片段中，我们直接加上-webkit-和-moz-前缀然后将#nav元素旋转-90度。 相当简单吧？唯一的问题是对于一个相当重要的设计元素，如果IE不支持，很多设计师就会不情愿使用它。 幸运的是，IE有这方面的滤镜:图形旋转滤镜。它可以有4个旋转值：0, 1, 2,和3。你将不会获得和Webkit和Gecko一样的精密控制，但是至少在一定程度上保持统一(甚至IE6)。虽然这个滤镜只支持4个值，显得有些鸡肋，但是对于IE来说，聊胜于无吧。 另外，非常值得一提的是，Opera在前几天发布了Opera 10.50 pre版本，声称支持CSS3 的transition和transform。只是还是需要使用私有属性，也就是要使用前缀 -o- scale scale并不像你想象的那样工作：简单的缩小和放大一个元素。缩放功能同时采用宽和高两个值，这些值可以是正数、负数和小数。 正数值放大一个元素，正如你期望的那样，基于指定的宽度和高度。 负数值并不会缩小元素，而是翻转它(比如，文字被反转)然后相应的缩放它。然而，你可以使用小于1的小数(例如.5)来收缩或者缩小一个元素。 浏览器支持 scale属性目前只有Firefox, Safari/Chrome以及 [...]]]></description>
			<content:encoded><![CDATA[<p><strong>译序：</strong>本文译自Smashingmagazine，但是原文讲述的内容有些浅，也不是很完整，<a href="http://www.qianduan.net/">前端观察</a>在翻译的前提下，增加了更多的更系统的内容。如有不足之处，欢迎指正补充。</p>
<p>随着网络的发展，浏览器具有更强的渲染更高级代码的能力，我们正逐步实现跨越所有平台和浏览器的目标。我们不但可以要花费更少的时间来确保我们的盒模型在IE6中看起来正常，而且形成了鼓励创新、避免hack、重前端脚本的氛围。</p>
<p><span id="more-11680"> </span></p>
<p>网络是一个非常好的环境，也是一个有丰富的知识来分享的协作社区。我们想要有<a href="http://ragamo.medioclick.com/jquery/corners/">圆角</a>，我们就实现了它；我们想要<a href="http://www.protocoder.com/css/css-multiple-backgrounds-background-layering-with-jquery/">多背景图片</a>，我们实现了它；我们想要<a href="http://www.lrbabe.com/sdoms/borderImage/index.html"> 边框图片</a>，我们也让它实现了。所以需求从来不是问题，否则，我们可能还都仍然在使用table来布局页面而且使用过多的代码呢。我们都知道，网络无所不能。<br />
<span id="more-1085"></span></p>
<h4>为网络而生</h4>
<p>CSS 3的属性比如<a href="http://www.css3.info/preview/rounded-border/">border-radius</a>、<a href="http://www.css3.info/preview/box-shadow/">box-shadow</a>和 <a href="http://www.css3.info/preview/text-shadow/">text-shadow</a>在webkit(Safari、Chrome等)和Gecko(Firefox)等先进的浏览器中的使用开始出现增长的势头。它们(这些CSS属性)已经为用户创建更轻量的页面和更丰富的体验，而且它们可以优雅的降级。然而，这些只是CSS 3能为我们做的众多事情中的一小部分。</p>
<p>在本文中，我们将走的更远，看一看 <strong>变形(transformation)、转换(transition)和动画(animation)</strong>等更高级的CSS3技术。我们将涉及代码本身、浏览器支持以及一些可以正确地展示这些新属性是如何即提升你的设计又增强整体用户体验的例子。</p>
<h3>CSS 变形(Transformation)</h3>
<p>CSS transformation是W3C的一个草案。但当我第一次坐下来阅读<a href="http://www.w3.org/TR/css3-3d-transforms/">它的全部特性</a>以了解一些东西的时候，它并没有让我感到开窍。你可以想象的到，这个文档是用技术术语的撰写的，而且它更关注变形的图形(比如绘图)元素和矩阵。大一学习微积分之后就没有碰过矩阵了，我必须为本章节做很多好的旧浏览器测试以及猜测和检验。</p>
<p>在看完我能找到的每一个教程和大量的浏览器测试之后，我总结出一些大家都能从中获益的有用的关于<strong>CSS变形</strong>的信息。</p>
<h4>transform</h4>
<p>transform属性实现了一些可用<a href="http://www.w3.org/Graphics/SVG/">SVG</a>实现的同样的功能。它可用于内联(inline)元素和块级(block)元素。它允许我们旋转、缩放和移动元素——只需要一行CSS代码。</p>
<p>一些前卫设计的最大诟病就是文字不可选(必须要使用切图的方法实现)。当你熟练使用transform属性来控制文字的时候，这就不再是问题了，因为这是个纯CSS方法，所以元素内的文字会保持可选。这是CSS相对于使用图片(或背景图片)的一个巨大优势。</p>
<p>一些有趣而有用的变形功能：</p>
<ul>
<li><strong>rotate</strong><br />
Rotate(旋转)允许你通过传递一个度数值来转动一个对象。</li>
<li><strong>scale</strong><br />
Scale是一个缩放功能，可以让任一元素变的更大。它使用正数和负数以及小数作为参数。</li>
<li><strong>translate</strong><br />
Translate就是基于X和Y 坐标重新定位元素</li>
<li><strong>skew</strong><br />
顾名思义，skew就是要将对象倾斜，参数是度数</li>
<li><strong>matrix</strong><br />
transform支持矩阵变换，就是基于X和Y 坐标重新定位元素</li>
</ul>
<p>让我们更深入的了解每一个功能吧。</p>
<h4>Rotate</h4>
<p>transform属性有很多用法，其中一个就是<strong>translate(旋转)</strong>。translate就是基于角度转动一个对象并可用于内联元素和块级元素，它可以实现<a href="http://www.csskarma.com/lab/css3/text_rotation.html">很酷的效果</a>。</p>
<p><img src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/12/204815j9U.png" alt="Transform Rotate in What You Need To Know About Behavioral CSS" /></p>
<pre class="brush: css; title: ; notranslate">
#nav{
	-webkit-transform: rotate(-90deg);
	-moz-transform: rotate(-90deg);
	-o-transform: rotate(-90deg);
	filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
	}
</pre>
<p>请注意在IE8中(非标准模式)它需要你写成“-ms-filter”而不是“filter”。</p>
<h5>浏览器支持</h5>
<p>浏览器对translate的支持令人惊奇的广泛。在上面的CSS片段中，我们直接加上-webkit-和-moz-前缀然后将#nav元素旋转-90度。</p>
<p>相当简单吧？唯一的问题是对于一个相当重要的设计元素，如果IE不支持，很多设计师就会不情愿使用它。</p>
<p>幸运的是，<strong>IE有这方面的滤镜</strong>:图形旋转滤镜。它可以有4个旋转值：0, 1, 2,和3。你将不会获得和Webkit和Gecko一样的精密控制，但是至少在一定程度上保持统一(甚至IE6)。虽然这个滤镜只支持4个值，显得有些鸡肋，但是对于IE来说，聊胜于无吧。</p>
<p>另外，非常值得一提的是，Opera在前几天发布了Opera 10.50 pre版本，声称支持CSS3 的transition和transform。只是还是需要使用私有属性，也就是要使用前缀 -o-</p>
<h4>scale</h4>
<p>scale并不像你想象的那样工作：简单的缩小和放大一个元素。缩放功能同时采用宽和高两个值，这些值可以是正数、负数和小数。</p>
<p>正数值放大一个元素，正如你期望的那样，基于指定的宽度和高度。</p>
<p>负数值并不会缩小元素，而是翻转它(比如，文字被反转)然后相应的缩放它。然而，你可以使用小于1的小数(例如.5)来收缩或者缩小一个元素。</p>
<p><img src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/12/204818l82.png" alt="Transform Scale in What You Need To Know About Behavioral CSS" /></p>
<pre class="brush: css; title: ; notranslate">
#nav {
	/* nav元素的宽和高都会被放大双倍 */
	-webkit-transform: scale(2);
	-moz-transform: scale(2);
	-o-transform: scale(2); }
#nav {
	/* nav元素的宽会是双倍，而高度保持不变 */
	-webkit-transform: scale(2, 1);
	-moz-transform: scale(2, 1);
	-o-transform: scale(2, 1);
	}
#nav {
	/* nav的宽度将是双倍，并且水平翻转，但是高度保持不变 */
	-webkit-transform: scale(-2, 1);
	-moz-transform: scale(-2, 1);
	-o-transform: scale(-2, 1);
	}
</pre>
<h4>浏览器支持</h4>
<p>scale属性目前只有<strong>Firefox, Safari/Chrome以及 opera 10.50</strong>支持，到目前为止没有一个IE版本支持。缩放一个对象是相当有意义的设计选择。它可以通过渐进增强来使用:hover，这可以在你的导航上添加一个小小的趣味。</p>
<pre class="brush: css; title: ; notranslate">
#nav li a:hover{
	/* 这可以让你的导航链接在鼠标经过的时候轻微的放大 */
	-webkit-transform: scale(1.1);
	-moz-transform: scale(1.1);
	-o-transform: scale(1.1);
	}
</pre>
<h4>translate</h4>
<p>这个名称“translate(转化)”有点容易误解。它事实上是一种<strong>使用X和Y坐标值定位元素</strong>的方法。</p>
<p><img src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/12/204821HtV.png" alt="Transform Translate in What You Need To Know About Behavioral CSS" /></p>
<pre class="brush: css; title: ; notranslate">
#nav{
 /* 这会将nav元素向左移动10像素并向下移动20像素 */
 -moz-transform: translate(10px, 20px);
 -webkit-transform: translate(10px, 20px);
 -o-transform: translate(10px, 20px);
}
</pre>
<h4>浏览器支持</h4>
<p>translate属性目前只被<strong>Firefox, Safari/Chrome和Oprea 10.5</strong>支持，而且还要使用浏览器的私有前缀-moz- 和-webkit-。</p>
<h4>Skew</h4>
<p>Skew也是一个很有用的transform功能，它可以将一个对象围绕着x和y轴按照一定的角度倾斜。这和rotate的旋转不一样，rotate只是旋转，而不会让元素的形状改变。skew会让一个元素的形状改变。skew有两个参数，分别代表x和y轴的倾斜<strong>度数</strong>。</p>
<pre class="brush: css; title: ; notranslate">
#nav{
 /* 这会将nav元素向左移动10像素并向下移动20像素 */
 -moz-transform: skew(30deg, -10deg);
 -webkit-transform: skew(30deg, -10deg);
 -o-transform: skew(30deg, -10deg);
}
</pre>
<h4>浏览器支持</h4>
<p>Skew属性目前只被<strong>Firefox, Safari/Chrome和Oprea 10.5</strong>支持，而且还要使用浏览器的私有前缀-moz- 和-webkit-。</p>
<h4>Matrix</h4>
<p>没错，Matrix就是矩阵，矩阵是高等数学中非常基础的一个东东，而在CSS 3中确实一个相当高级的功能，CSS 3引入matrix函数，可以非常灵活的实现上述的各种效果。它有6个参数(a,b,c,d,e,f)，它事实上是一个3*3矩阵，经过该矩阵将旧的参数转换成新值：<br />
| a b e |<br />
| c d f |<br />
| 0 0 1 |<br />
如果你有兴趣深入研究，可以看一下这里<a href="http://www.w3.org/TR/SVG/coords.html#TransformMatrixDefined">http://www.w3.org/TR/SVG/coords.html#TransformMatrixDefined</a>，这是SVG的一个文档，但是对于matrix变换的原理是通用的。</p>
<p>让我们来看一个例子吧：</p>
<pre class="brush: css; title: ; notranslate">
#nav{
 /* nav元素将会像右上角倾斜 */
 -moz-transform: matrix(1, -0.2, 0, 1, 0, 0);
 -webkit-transform: matrix(1, -0.2, 0, 1, 0, 0);
 -o-transform: matrix(1, -0.2, 0, 1, 0, 0);
}
</pre>
<h5>浏览器支持</h5>
<p>可喜的是，IE支持<a href="http://msdn.microsoft.com/en-us/library/ms533014(VS.85,loband).aspx">matrix滤镜</a>，虽然它不支持大部分CSS3变形功能，但是使用它的这个滤镜，基本也可以实现相同的效果，不过，你要先搞明白矩阵运算再说。webkit和Firefox(3.5+)、Opera 10.5都支持该功能。</p>
<h4>链式变形</h4>
<p>变形常常是单独的，但是如果你想同时用到多种变形，代码也是可以快速整合的，特别是使用私有扩展。幸运的是，我们有一些内置的缩写：</p>
<pre class="brush: css; title: ; notranslate">
#nav{
 -moz-transform: translate(10, 25);
 -webkit-transform: translate(10, 25);
 -o-transform: translate(10, 25);
 -moz-transform: rotate(90deg);
 -webkit-transform: rotate(90deg);
 -o-transform: rotate(90deg);
 -moz-transform: scale(2, 1);
 -webkit-transform: scale(2, 1);
 -o-transform: scale(2, 1);
}
</pre>
<p>这些变形<strong>可以被链到一起</strong>，从而让你的代码更高效:</p>
<pre class="brush: css; title: ; notranslate">
#nav{
 -moz-transform: translate(10, 25) rotate(90deg) scale(2, 1);
 -webkit-transform: translate(10, 25) rotate(90deg) scale(2, 1);
 -o-transform: translate(10, 25) rotate(90deg) scale(2, 1);
 }
</pre>
<p>这些属性的真正的威力是合并到一起。你可以移动、旋转、缩放并控制任何内联元素和块级元素而不使用JavaScript。一旦这些属性的支持变的更加广泛，我们就可以创建更丰富和更轻量的界面和应用。</p>
<h3>transform-origin</h3>
<p>transform-origin不是transform的一个子功能，但是和transform关系非常密切。它可以用来指定transform的<strong>起点</strong>，比如，rotate变形的默认起点是其中间，你可以将起点设置在左上角，或者左下角，这样rotate变形的结果就可能大不相同了。</p>
<p>transform-origin接受两个参数，它们可以是百分比，em，px等具体的值，也可以是left,center,right，或者 top,middle,bottom等描述性参数。几个例子：</p>
<pre class="brush: css; title: ; notranslate">
.class1{-moz-transform-origin: 0 0;
-webkit-transform-origin: 0 0;
-o-transform-origin: 0 0;
...
}
.class2{-moz-transform-origin:100% 100%;
-webkit-transform-origin:100% 100%;
-o-transform-origin:100% 100%;
...}
.class3{-moz-transform-origin:top left;
-webkit-transform-origin:top left;
-o-transform-origin:top left;
...}
</pre>
<h5>浏览器兼容性</h5>
<p>该属性目前也只有webkit、firefox和Opera 10.5支持，而且需要添加各自的私有前缀。</p>
<h3>transition(转换)</h3>
<p>一个涉及到CSS属性的基本的转换就是定义和移动一个元素从它的静止状态(比如，深蓝色背景)到它的hover或者激活状态(比如，浅蓝色背景)。</p>
<p>转换可以和变形同时使用(以及引发诸如:hover 或:focus事件)以创建一些动画。淡出背景色彩，滑动一个元素以及让一个对象旋转都可以通过CSS转换实现。</p>
<pre class="brush: css; title: ; notranslate">
#nav a{ background-color:red; }
 #nav a:hover, #nav a:focus{
  background-color:blue;
  /* 告诉转换去应用到background-color 属性(看起来像一个CSS 参数，不是吗？ #foreshadowing)*/
  -webkit-transition-property:background-color;
  -o-transition-property:background-color;
  /* 让它持续两秒钟*/
  -webkit-transition-duration:2s;
  -o-transition-duration:2s;
}
</pre>
<h4>转换的一些参数</h4>
<ul>
<li>
<h5>transition-property</h5>
<p><span>指定转换的CSS属性名称，比如，上面的例子中，将转换应用于background-color属性。</span></li>
<li>
<h5>transition-duration</h5>
<p><span>定义转换花费的时间（从旧属性换到新属性花费的时间）</span></li>
<li>
<h5>transition-timing-function</h5>
<p><span>可以理解为过度效果。指定转换过程中的中间值。可以用cubic-bezier指定。当然有几个常用的内置值：ease | linear | ease-in | ease-out | ease-in-out</span></li>
<li>
<h5>transition-delay</h5>
<p><span>这个比较容易理解，就是转换延迟的时间。时间可以为正整数、负整数和零，非零的时候必须设置单位是s(秒)或者ms(毫秒)，为负数的时候，转换的动作会从该时间点开始显示，之前的动作被截断。</span></li>
</ul>
<p style="COLOR: gray">注：参数部分为<a href="http://www.qianduan.net/">前端观察</a>翻译时添加，原文中没有。</p>
<h5>浏览器支持</h5>
<p>像transform属性一样酷，但是目前只有<strong>WebKit</strong>浏览器支持。Opera 10.5 pre版本也可以通过添加-o-前缀来支持。-moz-transition已经在最近的nightly-build版本的Firefox 3.7中可用。你也可以添加-moz-transition到你的CSS中以实现将来的增强。甚至可以添加一个不用私有前缀的属性，以防万一。</p>
<h3>Animation</h3>
<p>动画是CSS 3最有用的地方。你可以将我们在上面讨论的所有的元素与动画属性比如animation-duration、animation-name 和animation-timing-function整合以创建像Flash动画一样的效果——纯CSS。<br />
<object width="420" height="363"><param name="movie" value="http://www.tudou.com/v/YeTPctOy2mo"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><param name="wmode" value="opaque"></param><embed src="http://www.tudou.com/v/YeTPctOy2mo" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" wmode="opaque" width="420" height="363"></embed></object></p>
<pre class="brush: css; title: ; notranslate">
#rotate {
 margin: 0 auto;
 width: 600px;
 height: 400px;
 /* 确保我们是在一个 3-D 空间 */
 -webkit-transform-style: preserve-3d;
 /*让整个行使用x-轴旋转、7秒中的动画、无限次播放以及线性 */
 -webkit-animation-name: x-spin;
 -webkit-animation-duration: 7s;
 -webkit-animation-iteration-count: infinite;
 -webkit-animation-timing-function: linear;
}
 /* 定义要调用的动画 */
@-webkit-keyframes x-spin {
 0% { -webkit-transform: rotateX(0deg); }
 50% { -webkit-transform: rotateX(180deg); }
 100% { -webkit-transform: rotateX(360deg); }
}
</pre>
<p>这个梦幻的CSS动画代码和在线演示可以在<a href="http://webkit.org/blog-files/3d-transforms/poster-circle.html">webkit</a>网站看到。该演示可以在任何网站看到，但是动画效果却只能在Mac os(雪豹)的<a href="http://nightly.webkit.org/">WebKit的nightly build版本</a>可见。它看起来就像上面的视频中的一样，如果<strong>你是在用mac os (雪豹版本)，</strong>我认为安装一个webkit以亲眼看看这个效果是很值得的(它真的很酷)。Windows系统用户暂时无法欣赏这个效果。</p>
<h4>animation的一些参数</h4>
<p>animation的参数和translate有些像，所以如果你理解了translate的参数，这里就不难理解了。</p>
<ul>
<li>
<h5>animation-name</h5>
<p>动画的名称。</li>
<li>
<h5>animation-duration</h5>
<p>定义动画播放一次需要的时间。默认为0；</li>
<li>
<h5>animation-timing-function</h5>
<p>定义动画播放的方式，参数设置类似transition-timing-function</li>
<li>
<h5>animation-delay</h5>
<p>定义动画开始的时间</li>
<li>
<h5>animation-iteration-count</h5>
<p>定义循环的次数，infinite即为无限次。默认是1。</li>
<li>
<h5>-webkit-animation-direction</h5>
<p>动画播放的方向，两个值，默认为normal，这个时候动画的每次循环都向前播放。另一个值是alternate，则第偶数次向前播放，第奇数次向反方向播放。</li>
</ul>
<h4>浏览器支持</h4>
<p>不幸的是，目前，只有少数浏览器支持CSS动画。2D CSS animations 可以在Safari 4 (Leopard)、Chrome 3、Safari Mobile、Shira 以及其它Webkit 浏览器中工作。Safari 4 (Snow Leopard)支持3D动画</p>
<h3>总结</h3>
<p>现在，JavaScript可以在CSS 3完善之前弥补这个差距。遗憾的是，让所有浏览器支持这些很棒的属性可能需要一个很长的过程。不用等待那一天的到来，我们可以先使用一些严谨的<strong>渐进增强</strong>以及以来Javascript来增强我们的网站和应用。这不是件坏事，至少现在看起来是。</p>
<p>看了最近的<a href="http://www.readwriteweb.com/archives/microsoft_announces_ie9_html5_css4_javascript_performance.php">IE9的公告</a>，如果IE团队添加这些属性中的一些到这个新的版本的浏览器中我不会感到惊讶，他们已经开始考虑整合CSS3了(border-radius)。</p>
<p>web的前景是光明的，特别是因为这些类似动画的高度实验性的属性。尽管很多属性对客户或高级产品工作还不可用，至少他们很有趣！我们都期待着有一天，我们可以支持所有平台，以建立一些真的很棒的轻量级应用。</p>
<h3>参考与资源</h3>
<ul>
<li><a href="http://net.tutsplus.com/videos/screencasts/a-crash-course-in-advanced-css3-effects/">A Crash Course in Advanced CSS3 Effects</a><br />
Net Tuts 发布的一个很酷的关于CSS3效果的视频。</li>
<li><a href="http://www.css3.info/webkit-announces-support-for-css-3d-transforms/">Webkit Announces Support for CSS 3D Transforms</a><br />
CSS3.info 制作的一个使用CSS3动画的demo，目前只支持nightly build 版的WebKit.</li>
<li><a href="http://snook.ca/archives/html_and_css/css-text-rotation">Jonathan Snook on CSS Text Rotation</a><br />
Jonathan Snook 讲述即将到来的CSS3 属性.</li>
<li><a href="http://www.slideshare.net/incidentist/predevcampsf-css3-tricks-1838843">DEV Camp CSS3 Tricks</a><br />
一份来自Dan Kurtz的幻灯演示</li>
<li><a href="http://www.w3.org/TR/css3-2d-transforms/">W3C Spec on 2-D Transformations</a><br />
关于2-D 变换的资源.</li>
<li><a href="http://www.w3.org/TR/css3-3d-transforms/">W3C Spec on 3-D Transformations</a><br />
一个关于3-D 变换的资源.</li>
<li><a href="http://www.w3.org/TR/css3-animations/">W3C Spec on CSS3 Animations</a><br />
CSS animations的W3C工作草案</li>
<li><a href="http://developer.apple.com/mac/library/documentation/AppleApplications/Reference/SafariCSSRef/Articles/StandardCSSProperties.html">Safari CSS参考</a></li>
<li><a href="https://developer.mozilla.org/En/CSS/Using_CSS_transforms">MDC:Using CSS transforms</a></li>
<li><a href="https://developer.mozilla.org/En/CSS/-moz-transform">MDC: -moz-transform</a></li>
</ul>
<h5>关于原作者</h5>
<p>Tim Wright是一位网页设计师/开发工程师和博主。他从2004年就成为一名web标准和易用性的倡导者。你可以在<a href="http://www.csskarma.com/">CSSKarma.com</a>上找到他写的更多文章，或者<a href="http://www.twitter.com/csskarma">follow Tim on Twitter</a>。<br />
原文：<a href="http://www.qianduan.net/what-you-need-to-know-about-behavioral-css.html">你需要知道的CSS3 动画技术</a><br />
译自：<a href="http://www.smashingmagazine.com/2009/12/19/what-you-need-to-know-about-behavioral-css/">What You Need To Know About Behavioral CSS</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iamued.com/qianduan/1085.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>揭秘HTML5和CSS3(2)</title>
		<link>http://www.iamued.com/qianduan/857.html</link>
		<comments>http://www.iamued.com/qianduan/857.html#comments</comments>
		<pubDate>Tue, 22 Dec 2009 00:50:05 +0000</pubDate>
		<dc:creator>RichieLiu</dc:creator>
				<category><![CDATA[前端开发]]></category>
		<category><![CDATA[页面实现]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[前端]]></category>

		<guid isPermaLink="false">http://www.iamued.com/?p=857</guid>
		<description><![CDATA[CSS3 CSS3对于我们Web开发者来说不只是新奇的技术，更重要的是这些全新概念的web应用给我们带来更多无限的可能性，也极大地提高了我们的开发效率。我们将不必再依赖图片或者Javascript 去完成圆角、多背景、用户自定义字体、3D动画、渐变、盒阴影、文字阴影、透明度等提高Web设计质量的特色应用。 CSS3在选择器上面的支持 利用属性选择器我们可以根据属性值的开头或结尾很容易选择某个元素，利用兄弟选择器可以选择同级兄弟结点或紧邻下一个结点的元素，利用伪类选择器可以选择某一类元素，CSS3在选择器上的丰富支持让我们可以灵活的控制样式，而不必为了选择某些元素给他们加上如”odd”或”even”这样的类名。 CSS3在样式上的支持 有一个调查说开发者最期待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还需要手动计算一下这个元素实际占用的宽度。 CSS3对于动画的支持 CSS3支持的动画类型有：transform(变换)、transition(过渡)和animation(动画)。你可以对特定的属性设置transition，transiton和animation的区别不大，animation的动画是自己定义的，面向的更多的是脚本开发者，往往更加复杂。 为了使用大部分CSS3特性，我们不得不与原来的属性一起使用生产商专有扩展。原因是直到现在，大部分浏览器只支持部分CSS3属性。最常见的私有属性是用于Webkit核心浏览器的(比如, Safari)， 它们以-webkit-开始，以及Gecko核心的浏览器(比如, Firefox)，以-moz-开始，还有Konqueror (-khtml-)、Opera (-o-) 以及Internet Explorer (-ms-)都有它们自己的属性扩展（目前只有IE8支持-ms-前缀） 那我们在开发中该如何去用CSS3呢？ 我觉得首先是遵循一个优雅降级的原则，比如前面谈到的圆角，我们可以针对Firefox和Safari等这些支持圆角的浏览器中应用CSS圆角，而那些不支持CSS圆角的浏览器则显示为直角。其次就是对于不支持CSS3的浏览器可以使用Javascript来实现，如CSS3任何元素支持:hover伪类，我们就可以对只支持链接:hover的IE6用JS来实现。最后就是在向用户或老板推广新技术的同时也要关注他们的目标与可行性，不能为了技术而技术。 点击查看CSS3 DEMO，需要Firefox3.5+/Safari4.0+ 原文：http://ued.taobao.com/blog/2009/12/17/html5_css3/]]></description>
			<content:encoded><![CDATA[<h2>CSS3</h2>
<p>CSS3对于我们Web开发者来说不只是新奇的技术，更重要的是这些全新概念的web应用给我们带来更多无限的可能性，也极大地提高了我们的开发效率。我们将不必再依赖图片或者Javascript 去完成圆角、多背景、用户自定义字体、3D动画、渐变、盒阴影、文字阴影、透明度等提高Web设计质量的特色应用。</p>
<h3>CSS3在选择器上面的支持</h3>
<p>利用属性选择器我们可以根据属性值的开头或结尾很容易选择某个元素，利用兄弟选择器可以选择同级兄弟结点或紧邻下一个结点的元素，利用伪类选择器可以选择某一类元素，CSS3在选择器上的丰富支持让我们可以灵活的控制样式，而不必为了选择某些元素给他们加上如”odd”或”even”这样的类名。<br />
<span id="more-857"></span></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://www.iamued.com/demo/html5css3/css3.html" target="_blank">点击查看CSS3 DEMO</a>，需要Firefox3.5+/Safari4.0+</p>
<p>原文：<a href="http://ued.taobao.com/blog/2009/12/17/html5_css3/" target="_blank">http://ued.taobao.com/blog/2009/12/17/html5_css3/</a></p>
<p><!-- .entry-content --></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iamued.com/qianduan/857.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>揭秘HTML5和CSS3(1)</title>
		<link>http://www.iamued.com/qianduan/853.html</link>
		<comments>http://www.iamued.com/qianduan/853.html#comments</comments>
		<pubDate>Tue, 22 Dec 2009 00:46:48 +0000</pubDate>
		<dc:creator>RichieLiu</dc:creator>
				<category><![CDATA[前端开发]]></category>
		<category><![CDATA[页面实现]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[前端]]></category>

		<guid isPermaLink="false">http://www.iamued.com/?p=853</guid>
		<description><![CDATA[互联网的发展总是在不断地催生新技术的产生，而HTML5和CSS3是最近一直被讨论的热门话题，对于每个互联网开发者尤其是前端开发者而言，都充满了好奇与渴望。那么HTML5和CSS3究竟有哪些让我们眼前一亮的东西呢？我在WebRebuild北京交流会和珍珠奶茶帮上给大家分享了《揭秘 HTML5和CSS3》，PPT在这里： http://docs.google.com/present/view?id=dhpdbrp_51hf88z8g8 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属性。 HTML5对表单的支持 HTML5 提供了强大的控件类型如url, email, date, tel等，强大的约束属性，如required表示必填，文件上传的accept属性，以及一些表单重复元素模型的支持，HTML5在提交表单的时候还可以设置提交的方式为XML提交方式，这样服务器端接收到的数据将是XML格式，HTML5的表单被定义为“Web Forms 2.0”，目前opera9.5+对Web Forms 2.0的支持较为完美。 点此查看Web Forms 2.0 DEMO，需要Opera9.5+ HTML5 DOM变化 HTML5在DOM LEVEL 2 HTML方面很多都是继承自HTMLDocument的接口，当然HTML5在DOM上也有一些值得注意的新成员，如：支持 getElementsByClassName，可以根据class类名选择元素，getSelection()将会返回当前选中的对象，在选择器上面有两个方法querySelector和querySelectorAll可以根据 css选择符来获取要查询的元素，相当于YUI3中的Y.one和Y.all。 HTML5的Javascript APIs HTML5在Javascript上面新增了哪些API呢？ Video/Audio: [...]]]></description>
			<content:encoded><![CDATA[<p>互联网的发展总是在不断地催生新技术的产生，而HTML5和CSS3是最近一直被讨论的热门话题，对于每个互联网开发者尤其是前端开发者而言，都充满了好奇与渴望。那么HTML5和CSS3究竟有哪些让我们眼前一亮的东西呢？我在<a href="http://webrebuild.org/" target="_blank">WebRebuild</a>北京交流会和珍珠奶茶帮上给大家分享了《揭秘 <strong>HTML5</strong>和<strong>CSS3</strong>》，PPT在这里：<br />
<a id="publishedSlideshowUrl" href="http://docs.google.com/present/view?id=dhpdbrp_51hf88z8g8" target="_blank">http://docs.google.com/present/view?id=dhpdbrp_51hf88z8g8</a></p>
<h2>HTML5</h2>
<p><strong>HTML 5</strong>草案的前身名为Web Applications 1.0，于2004年被WHATWG提出，于2007年被W3C接纳，并成立了新的HTML工作团队。在2008年1月22日，第一份正式草案发布。 HTML 5是近十年来Web开发标准最巨大的飞跃。和以前的版本不同，HTML 5并非仅仅用来表示Web内容，它的新使命是将Web带入一个成熟的应用平台，在HTML 5平台上，视频，音频，图象，动画，以及同电脑的交互都被标准化。那么我们来看一下HTML5的技术概览有哪些：<br />
<span id="more-853"></span></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://www.iamued.com/demo/html5css3/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会真正到来。<a href="http://revieweb20.com/Speech/Demo/html5.html" target="_blank"></a></p>
<p><a href="http://www.iamued.com/demo/html5css3/html5-demo.html" target="_blank">点击查看HTML5 DEMO</a>，需要Firefox3.5+/Safari4.0+</p>
<p>原文：<a href="http://ued.taobao.com/blog/2009/12/17/html5_css3/" target="_blank">http://ued.taobao.com/blog/2009/12/17/html5_css3/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iamued.com/qianduan/853.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

