HTML5, CSS3, ES5新的web标准和浏览器支持一览 转

本文整理了一些最重要(或者说人气比较高罢)的新标准,虽然它们多数还只是w3c的草案,离Recommendation级别还早,却已经成为新一轮浏览器大战中备受追捧的明星,开发者社区里也涌现出大量相关的demo和API封装,有些已经进入生产环境(比如google在iphone上实现的gmail离线应用),其实我觉得如今的web领域里,从厂商私有技术转换成委员会标准再转换成通用技术产生杀手级应用的周期已经显著的加速了,是因为现在web application的需求太高了么…… UPDATE:刚才在solidot发软文的时候我突然想明白怎么表述这个问题:其实现在很多浏览器厂商同时也是基于浏览器的应用开发者和web标准的制定者,就好像修筑舞台的工程师同时也是舞台上的演员和舞蹈动作的导演一样,所以google, mozilla, apple们都在不遗余力的实现那些有利于开发web应用的技术标准,即时它们还是W3C Working Draft,相比之下IE team就比较缺乏动力,果然计划经济缺乏活力亚XD……

由于是源自笔记,对每个条目我只会列出称呼和语法特征,暂时没时间写详细的解释和可执行的示例,但是会给出相关的文档地址,除了列出已经支持该特性的浏览器,也会为不支持的浏览器提供替代/过渡的实现。

CSS3 Media queries

对整个外链css文件和部分css代码使用的媒体类型侦测,人气高的原因显然是因为移动设备……

  1. <link media=“all and (orientation:portrait)” src="screen.css" type="text/css">
  1. @media all and (min-color: 4) { ... }

w3c标准:http://www.w3.org/TR/css3-mediaqueries/ MDC文档:https://developer.mozilla.org/En/CSS/Media_queries Opera文档:http://www.opera.com/docs/specs/css/

支持:Firefox 3.5+, Safari 3+, Opera 7+

CSS3 2D Transforms

css变形,有人用这个实现伪3d效果以及旋转效果的jquery插件

  1. -moz-transform: rotate(-45deg) skew(15deg, 15deg);
  1. sprite.style[‘-webkit-transform‘] = ‘rotate(‘ + v + ‘rad)‘;

w3c标准:http://www.w3.org/TR/css3-2d-transforms/ MDC文档:https://developer.mozilla.org/En/CSS/CSS_transform_functions webkit博客的介绍: http://webkit.org/blog/130/css-transforms/

支持:Firefox 3.5+, Safari 3.1+ 替代/过渡:IE5.5+ Matrix Filter http://msdn.microsoft.com/en-us/library/ms533014(VS.85).aspx

CSS3 Transitions and CSS Animations

备受期待的css动画,webkit团队提出的草案,transition实现简单的属性渐变,animation定义更复杂的动画效果

  1. transition-property: width;
  2. transition-duration: 1s;
  3. animation-name: ‘diagonal-slide‘;
  4. animation-duration: 5s;
  5. animation-iteration-count: 10;
  6. @keyframes ‘diagonal-slide‘ {}

w3c标准:http://www.w3.org/TR/css3-transitions/ w3c标准:http://www.w3.org/TR/css3-animations/ webkit博客的介绍:http://webkit.org/blog/138/css-animation/ 约翰同学的介绍:http://ejohn.org/blog/css-animations-and-javascript/

支持:Safari 3.1+

CSS3 Downloadable fonts

能在网页里嵌入任意字体是设计师的梦想……不过这里支持的也仅限truetype和opentype

  1. @font-face {}

w3c标准:http://www.w3.org/TR/css3-fonts/#font-resources MSDN文档:http://msdn.microsoft.com/en-us/library/ms530303(VS.85).aspx MDC文档:https://developer.mozilla.org/en/CSS/@font-face

支持:Firefox 3.5+, Safari 3.1+, Opera 10.0+, IE4.0+

附赠:其他CSS3 property的兼容性

ppk同学维护的文档: http://www.quirksmode.org/css/contents.html css3.info维护的文档:http://www.css3.info/modules/selector-compat/ 一个测试页面:http://westciv.com/iphonetests/

HTML5 DOM Storage

简洁的持久存储,键值对的形式

  1. window.localStorage
  2. window.sessionStorage //可跨域,标签页关掉就清空

w3c标准:http://www.w3.org/TR/webstorage/ ppk同学维护的兼容性列表:http://www.quirksmode.org/dom/html5.html#localstorage MDC文档:https://developer.mozilla.org/en/DOM/Storage MSDN文档:http://msdn.microsoft.com/en-us/library/cc197062(VS.85).aspx

支持:Firefox 3.5+, Safari 4.0+, IE 8.0+

HTML5 Offline Application Cache

用一个manifest文件缓存静态资源(图片,css, js之类)在离线状态下使用,不是结构化数据

  1. <html manifest="foo.manifest">
  1. CACHE MANIFEST
  2. index.html
  3. style/default.css
  4. images/logo.png

w3c标准:http://www.w3.org/TR/offline-webapps/#offline MDC文档:https://developer.mozilla.org/en/Offline_resources_in_Firefox

支持:Firefox 3.5+

HTML5 Database Storage

本地数据库,支持sql,最早是google gears实现,现在的w3c草案的编辑也是google的工程师……但奇怪的是,gears的api跟现在的草案不兼容,chrome甚至为了保留捆绑的gears的数据库api而删除了webkit实现的html5 api……而google在iphone上实现gmail离线功能的时候又采用webkit的api……真纠结……

  1. var db = window.openDatabase("notes", "", "The Example Notes App!", 1048576);
  2. db.transaction(function(tx) {
  3. tx.executeSql(‘SELECT * FROM Notes’, [], function(tx, rs) {});
  4. });

w3c标准:http://www.w3.org/TR/offline-webapps/#sql webkit博客的介绍:http://webkit.org/blog/126/webkit-does-html5-client-side-database-storage/ iphone的文档:http://developer.apple.com/documentation/iPhone/Conceptual/SafariJSDatabaseGuide/UsingtheJavascriptDatabase/UsingtheJavascriptDatabase.html#//apple_ref/doc/uid/TP40007256-CH3-SW1

支持:Safari 3.1+ 替代/过渡:Gears http://code.google.com/p/gears/wiki/Database2API

HTML5 Web Workers

多线程,在后台执行复杂运算,不能操作dom,线程之间通过消息事件通信

  1. var myWorker = new Worker(‘my_worker.js‘);
  2. myWorker.onmessage = function(event) { event.data };
  3. myWorker.postMessage(str);

w3c标准:http://www.w3.org/TR/workers/ MDC文档:https://developer.mozilla.org/En/Using_web_workers

支持:Firefox 3.5+ 替代/过渡:Gears http://code.google.com/p/gears/wiki/HTML5WorkerProposal

HTML5 Geolocation

地理api

  1. window.navigator.geolocation

w3c标准:http://www.w3.org/TR/geolocation-API/ MDC文档:https://developer.mozilla.org/En/Using_geolocation

支持:Firefox 3.5+ 替代/过渡:Gears http://code.google.com/p/gears/wiki/GeolocationAPI

HTML5 Drag and Drop

原生拖拽事件

  1. ondragstart
  2. ondrag
  3. ondragend
  4. //拖拽过程中
  5. ondragenter
  6. ondragover
  7. ondragleave
  8. ondrop

w3c标准:http://www.w3.org/TR/html5/editing.html#dnd MDC文档:https://developer.mozilla.org/En/DragDrop/Drag_and_Drop apple文档:http://developer.apple.com/documentation/AppleApplications/Conceptual/SafariJSProgTopics/Tasks/DragAndDrop.html#//apple_ref/doc/uid/30001233

支持:Firefox 3.5+, Safari 2.0+, Chrome 1.0+, IE 5.0+

HTML5 Audio and Video

用html标签来嵌入视频音频的好处并非是“开源格式”,而是“开放性”,让多媒体可以与其他页面元素交互,或者用页面技术去跟视频“mashup”,这种随意组合和交互的能力是web技术兴盛的基石,也是像flash这类封闭RIA容器最大的缺点。

  1. <video controls>
  2. <source src=“zombie.ogg” type=“video/ogg”/>
  3. <source src=“zombie.mp4″ type=“video/mp4″/>
  4. </video>

MDC文档:https://developer.mozilla.org/En/Using_audio_and_video_in_Firefox webkit博客的介绍:http://webkit.org/blog/140/html5-media-support/

支持:Firefox 3.5+, Safari 3.0+, Chrome 3.0+ 替代/过渡:用video标签嵌套embed http://hacks.mozilla.org/2009/06/html5-video-fallbacks-markup/

HTML5 Canvas

apple发明,最早应用于dashboard,目前主流的js图像技术,mozilla已经在实现OpenGL ES标准的Canvas 3D了,另外据说ie team为支持canvas做了大量工作……实际上canvas api相当底层,特别是交互方面,不如svg直观,所以出现了很多封装它的库

  1. var ctx = $(‘#canvas‘)[0].getContext("2d");
  2. ctx.fillStyle = "#00A308";
  3. ctx.beginPath();
  4. ctx.arc(220, 220, 50, 0, Math.PI*2, true);
  5. ctx.closePath();
  6. ctx.fill();

MDC文档:https://developer.mozilla.org/en/Canvas_tutorial

支持:Firefox 1.5+, Safari 2.0+, Chrome 1.0+, Opera 9.0+ 替代/过渡:excanvas.js http://code.google.com/p/explorercanvas/

SVG

w3c标准:http://www.w3.org/TR/SVG12/ IBM DW教程:http://www.ibm.com/developerworks/cn/views/xml/tutorials.jsp?cv_doc_id=84896

支持:Firefox 1.5+, Safari 3.0+, Chrome 1.0+, Opera 9.0+ 替代/过渡:raphael.js http://raphaeljs.com/

XMLHttpRequest 2

主要是增加跨域能力以及请求过程中的事件

w3c标准:http://www.w3.org/TR/XMLHttpRequest2/ MDC文档:https://developer.mozilla.org/En/Using_XMLHttpRequest#Monitoring_progress XDomainRequest (XDR) MSDN文档:http://msdn.microsoft.com/en-us/library/cc288060(VS.85).aspx

支持:Firefox 3.5+(实现了部分), IE 8.0+(实现了部分)

Access Control

千呼万唤的跨域访问控制,目前firefox3.5和ie8有一些不同,ie8搞的XDR和XDM我也不知道是不是准备提交给w3c标准化的东西……

  1. Access-Control-Allow-Origin: http://foo.example

w3c标准:http://www.w3.org/TR/cors/ MDC文档:https://developer.mozilla.org/En/HTTP_Access_Control Cross-document Messaging (XDM) MSDN文档:http://msdn.microsoft.com/en-us/library/cc197057(VS.85).aspx

支持:Firefox 3.5+, IE8.0+

E4X (ECMA-357)

Firefox和ActionScript3早就实现了的东西……不过其实现在json这么流行,有没有E4X好像都无所谓了~(瞎说的,其实在js代码里直接写dom对象而不是html字符串,会方便很多)

MDC文档:https://developer.mozilla.org/en/E4X

支持:Firefox 1.5+

ECMAScript 5 Native JSON

原生的JSON支持,速度和安全性都比eval强一百倍亚一百倍,另外要注意Douglas Crockford的json2.js是一个用js实现的js解释器,所以安全性更好

  1. JSON.parse( text, translate )
  2. JSON.stringify( obj, translate )
  3. String.prototype.toJSON
  4. Boolean.prototype.toJSON
  5. Number.prototype.toJSON
  6. Date.prototype.toJSON

MDC文档:http://blog.mozilla.com/webdev/2009/02/12/native-json-in-firefox-31/ MSDN文档:http://blogs.msdn.com/ie/archive/2008/09/10/native-json-in-ie8.aspx

支持:Firefox 3.5+, IE8+ 替代/过渡:json2.js http://www.json.org/json2.js

ECMAScript 5 Array Extras

js1.6里实现的数组方法,主要是forEach, map, fliter这几个函数式编程里非常重要的方法,还有反向查询

  1. Array.prototype.indexOf( str )
  2. Array.prototype.lastIndexOf( str )
  3. Array.prototype.every( fn )
  4. Array.prototype.some( fn )
  5. Array.prototype.filter( fn )
  6. Array.prototype.forEach( fn )
  7. Array.prototype.map( fn )

MDC文档:https://developer.mozilla.org/en/New_in_JavaScript_1.6#Array_extras

支持:Firefox2.0+, Safari 3.0+, Google Chrome 1.0+, Opera 9.5+ 替代/过渡:都可以通过扩展Array.prototype来模拟

ECMAScript 5 isArray()

区分数组和对象

  1. Array.isArray([]); // true

支持:无 替代/过渡:Array.isArray = function(a){ return Object.prototype.toString.call(a) === “[object Array]”;};

ECMAScript 5 Object

用GOOGLE I/O演讲里的话来说:更鲁棒(robust)的对象系统

  1. Object.getPrototypeOf( obj )

约翰同学的讲解:http://ejohn.org/blog/objectgetprototypeof/

支持:Firefox3.5 替代/过渡:object.__proto__ 或 object.constructor.prototype

  1. Object.create( proto, props ) //克隆或继承对象
  2. Object.keys( obj ) //数据结构的映射
  3. Object.getOwnPropertyNames( obj )
  4. Object.preventExtensions( obj ) //不能添加新属性
  5. Object.isExtensible( obj )
  6. Object.seal( obj ) //不能删除和修改属性的配置,不能添加新属性
  7. Object.isSealed( obj )
  8. Object.freeze( obj ) //不能删除和修改属性的配置,不能添加新属性,不能写属性
  9. Object.isFrozen( obj )

约翰同学的讲解:http://ejohn.org/blog/ecmascript-5-objects-and-properties/

支持:无 替代/过渡:Object.create和Object.keys可以自己实现

ECMAScript 5 Property Descriptor

对象属性的访问控制

  1. Object.getOwnPropertyDescriptor( obj, prop )
  2. Object.defineProperty( obj, prop, desc )
  3. Object.defineProperties( obj, props )
  4. desc = {
  5. value: true,
  6. writable: false, //修改
  7. enumerable: true, //for in
  8. configurable: true, //删除和修改属性
  9. get: function(){ return name; },
  10. set: function(value){ name = value; }
  11. }

约翰同学的讲解:http://ejohn.org/blog/ecmascript-5-objects-and-properties/

支持:无 替代/过渡:Object.defineProperties其实相当于jQuery.extend,用来实现Mixin

ECMAScript 5 Getters and Setters

python和ruby里都有的属性访问方法

  1. obj = {
  2. get innerHTML() { return …; },
  3. set innerHTML(newHTML) { … }
  4. };

MDC文档:https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Creating_New_Objects/Defining_Getters_and_Setters

支持:Firefox 2.0+, Safari 3.0+, Google Chrome 1.0+, Opera 9.5+ 替代/过渡:

非标准,Firefox1.5里的旧方法

  1. HTMLElement.prototype.__defineGetter__("innerHTML", function () {});
  2. HTMLElement.prototype.__defineSetter__("innerHTML", function (val) {});

支持:Firefox 2.0+, Safari 3.0+, Google Chrome 1.0+, Opera 9.5+

标准

  1. Object.defineProperty(document.body, "innerHTML", { get : function () {} });

MSDN文档:http://msdn.microsoft.com/en-us/library/dd229916(VS.85).aspx

支持:IE8+ (只能对DOM使用)

ECMAScript 5 Strict Mode

ES5的严格模式,删除了旧版本中容易引起问题的元素,并且会显式的报错,方便调试

  1. "use strict"; //以下情况下抛出异常
  2. //对未定义的变量赋值
  3. //操作被设置为不可写,不可配置或不可扩充的属性
  4. //删除变量,函数,参数
  5. //在对象直接量里重复定义属性
  6. //eval做关键字,在eval的字符串里定义变量
  7. //覆写arguments
  8. //使用arguments.caller和arguments.callee(匿名函数必须具名才能引用自己)
  9. //(function(){ ... }).call( null ); // Exception
  10. //使用with

约翰同学的讲解:http://ejohn.org/blog/ecmascript-5-strict-mode-json-and-more/

支持:无 替代/过渡:……从现在开始养成严谨的编程习惯

ECMAScript 5 其他新特性

传递函数的引用时,绑定this

  1. Function.prototype.bind(thisArg, arg1, arg2....) /

支持:无 替代/过渡:prototype http://www.prototypejs.org/api/function/bind

ISO-formatted dates

  1. Date.prototype.toISOString() // Prints 2009-05-21T16:06:05.000TZ

支持:无 替代/过渡:datejs http://code.google.com/p/datejs/

  1. String.prototype.trim()

支持:Firefox3.5 替代/过渡:各种正则实现 http://blog.stevenlevithan.com/archives/faster-trim-javascript

时间: 2024-11-05 21:33:26

HTML5, CSS3, ES5新的web标准和浏览器支持一览 转的相关文章

运用HTML5+CSS3+Zepto构建移动web网站!

手机微站.HTML5+CSS3(rem)+jQuery+Zepto+iScroll+Swipe综合开发手机网站. 移动端web网站(手机网站).mobile网站模版.HTML5网站 面向手机端的html5开发框架有很多,如何找到适合自己的一个呢? 1.jQuery Mobile jQuery Mobile 是 jQuery 在手机上和平板设备上的版本.jQuery Mobile 不仅会给主流移动平台带来jQuery核心库,而且会发布一个完整统一的jQuery移动UI框架.支持全球主流的移动平台.

Web存储(Web Storage)的浏览器支持情况

所有很酷的功能特征的出现最关键的就是浏览器的支持情况,幸运的是,所有的现代浏览器都支持HTML5 Web存储(Web Storage),从IE8开始也支持它.HTML5 Web存储(Web Storage)非常简单但也非常有用.因为HTML5 Web存储(Web Storage)需要使用JavaScript进行操作,所以,在使用它执行一些关键功能时要确保浏览器支持这个特征并开启了JavaScrpt脚本功能.

HTML5 &amp; CSS3的新交互特性

本文标题的这副图片,是用Phosotshop制作的.但是,在搜索引擎中你却无法搜索到它,搜索引擎还没有强大到能够识别图片里面的文字.并且由于图片的体积不算太小,可能网速慢的网友在浏览的时候不得不耐心的等待图片的刷新.那么,有没有一种新的方法可以避免这些缺点呢? 有的,HTML5和CSS3就可以满足你的需求.甚至,它可以做的更多,更好.作为一名设计师,我们应当了解它们是什么东西,有什么特性,从而进一步思考通过HTML5和CSS3我们能做些什么. 什么是HTML5和CSS3 HTML和CSS并不难理

使用Modernizr探测HTML5/CSS3新特性

HTML5, CSS3以及相关技术(例如canvas和web sockets)带来了非常有用的特性,可以让我们的web程序提升一个新的level.这些新技术允许我们只用HTML,CSS和JavaScript 就可以构建包括在平板和移动设备上能够运行的多样化表单页面.HTML5虽然提供了很多新特性,但是如果我们不考虑旧版本的浏览器就是用这些新技术也不太 现实,老版本浏览器已经使用了很多年,我们依然需要考虑这些版本的兼容性问题.本文要解决的问题就是:在我们使用HTML5/CSS3技术的时候,如何更

HTML5+CSS3 animation/keyframe/transform/transition/2D translate/3D translate 学习总结

<h1>HTML5+CSS3 animation/keyframe/transform/transition/2D translate/3D translate 学习总结</h1> <h1>HTML5,animation,keyframe,transform,transition,2D translate,3D translate,CSS3</h1> CSS3 教程 CSS 用于控制网页的样式和布局. CSS3 是最新的 CSS 标准. 本教程向您讲解 CS

HTML5 CSS3面试题

一.CSS3有哪些新特性? 1. CSS3实现圆角(border-radius),阴影(box-shadow), 2. 对文字加特效(text-shadow.),线性渐变(gradient),旋转(transform) 3.transform:rotate(9deg) scale(0.85,0.90) translate(0px,-30px) skew(-9deg,0deg);// 旋转,缩放,定位,倾斜 4. 增加了更多的CSS选择器  多背景 rgba 5. 在CSS3中唯一引入的伪元素是

html5程序设计(一)http://caniuse.com--&gt;查看是否支持html5属性的网站(牛B)

1.基于html5的各类API的优秀设计,比如:从video元素中抓取的帧可以显示在canvas里面,用户单击canvas即可播放这帧的应用: 2.Modernizr 一个javascript库,它提供了非常先进的html5和css3检测功能:它是检测浏览器支持某些特性的最佳工具: 3.canvas本质上是一个位图画布,其上绘制的图形是不可缩放的,不可能像SVG图像那样可以放大缩小,此外用canvas绘制的对象不属于页面DOM结构或者任何命名空间:SVG图像可以在不同的分辨率下流畅的缩放,并且支

面向Web Cloud的HTML5 App开发实战:Browser&amp;HTML5&amp;CSS3&amp;PhoneGap&amp;jQuery Mobile&amp; WebSocket&amp;Node.js(2天)

如何理解Android架构设计的初心并开发出搭载Android系统并且具备深度定制和软硬整合能力特色产品,是本课程解决的问题. 课程以Android的五大核心:HAL.Binder.Native Service.Android Service(并以AMS和WMS为例).View System为主轴,一次性彻底掌握Android的精髓. 之所以是开发Android产品的必修课,缘起于: 1,     HAL是Android Framework&Application与底层硬件整合的关键技术和必修技

HTML5 & CSS3初学者指南(3) – HTML5新特性

介绍 本文介绍了 HTML5 的一些新特性.主要包含以下几个方面: Web 存储 地理位置 拖放 服务器发送事件 Web存储 HTML5 Web 存储的设计与构想是一个更好的机制来存储客户端的网络数据.它是通过一个网络浏览器作为客户端数据库实现的,它允许网页以键值对的形式来存储数据. 它具有以下特征: 每个原始网站/域最多可存储 5MB 的数据. 你可以通过属性和方法来使用 JavaScript 操作 web 存储器中的数据实现访问. 就像 cookies,你可以选择将保持数据(维持),即使你已