本章讲解涉及 <form> ?<input> 元素的新属性?/p>
Input type | IE | Firefox | Opera | Chrome | Safari |
---|---|---|---|---|---|
autocomplete | 8.0 | 3.5 | 9.5 | 3.0 | 4.0 |
autofocus | No | No | 10.0 | 3.0 | 4.0 |
form | No | No | 9.5 | No | No |
form overrides | No | No | 10.5 | No | No |
height and width | 8.0 | 3.5 | 9.5 | 3.0 | 4.0 |
list | No | No | 9.5 | No | No |
min, max and step | No | No | 9.5 | 3.0 | No |
multiple | No | 3.5 | No | 3.0 | 4.0 |
novalidate | No | No | No | No | No |
pattern | No | No | 9.5 | 3.0 | No |
placeholder | No | No | No | 3.0 | 3.0 |
required | No | No | 9.5 | 3.0 | No |
autocomplete 属性规?form ?input 域应该拥有自动完成功能?/p>
注释Q?/span>autocomplete 适用?<form> 标签Q以及以下类型的 <input> 标签Qtext, search, url, telephone, email, password, datepickers, range 以及 color?/p> 当用户在自动完成域中开始输入时Q浏览器应该在该域中昄填写的选项Q?/p> 注释Q?/span>在某些浏览器中,您可能需要启用自动完成功能,以该属性生效?/p>实例
<form action="demo_form.asp" method="get"
autocomplete="on"
> First name: <input type="text" name="fname" /><br /> Last name: <input type="text" name="lname" /><br /> E-mail: <input type="email" name="email" autocomplete="off"
/><br /> <input type="submit" /> </form>
autofocus 属性规定在面加蝲Ӟ域自动地获得焦点?/p>
注释Q?/span>autofocus 属性适用于所?<input> 标签的类型?/p>实例
User name: <input type="text" name="user_name"
autofocus="autofocus"
/>
form 属性规定输入域所属的一个或多个表单?/p>
注释Q?/span>form 属性适用于所?<input> 标签的类型?/p> form 属性必d用所属表单的 idQ?/p> 注释Q?/span>如需引用一个以上的表单Q请使用I格分隔的列表?/p>实例
<form action="demo_form.asp" method="get" id="user_form"> First name:<input type="text" name="fname" /> <input type="submit" /> </form> Last name: <input type="text" name="lname"
form="user_form"
/>
表单重写属性(form override attributesQ允许您重写 form 元素的某些属性设定?/p>
表单重写属性有Q?/p>
注释Q?/span>表单重写属性适用于以下类型的 <input> 标签Qsubmit ?image?/p> 注释Q?/span>q些属性对于创Z同的提交按钮很有帮助?/p>实例
<form action="demo_form.asp" method="get" id="user_form"> E-mail: <input type="email" name="userid" /><br /> <input type="submit" value="Submit" /> <br /> <input type="submit"
formaction="demo_admin.asp"
value="Submit as admin" /> <br /> <input type="submit" formnovalidate="true"
value="Submit without validation" /> <br /> </form>
height ?width 属性规定用?image cd?input 标签的图像高度和宽度?/p>
注释Q?/span>height ?width 属性只适用?image cd?<input> 标签?/p>实例
<input type="image" src="img_submit.gif"
width="99"
height="99"
/>
list 属性规定输入域?datalist。datalist 是输入域的选项列表?/p>
注释Q?/span>list 属性适用于以下类型的 <input> 标签Qtext, search, url, telephone, email, date pickers, number, range 以及 color?/p>实例
Webpage: <input type="url"
list="url_list"
name="link" /> <datalist id="url_list"> <option label="W3Schools" value="http://www.w3school.com.cn" /> <option label="Google" value="http://www.google.com" /> <option label="Microsoft" value="http://www.microsoft.com" /> </datalist>
min、max ?step 属性用于ؓ包含数字或日期的 input cd规定限定Q约束)?/p>
max 属性规定输入域所允许的最大倹{?/p>
min 属性规定输入域所允许的最倹{?/p>
step 属性ؓ输入域规定合法的数字间隔Q如?step="3"Q则合法的数?-3,0,3,6 {)?/p>
注释Q?/span>min、max ?step 属性适用于以下类型的 <input> 标签Qdate pickers、number 以及 range?/p> 下面的例子显CZ个数字域Q该域接受介?0 ?10 之间的|且步qؓ 3Q即合法的gؓ 0?? ?9Q:实例
Points: <input type="number" name="points"
min="0"
max="10"
step="3"
/>
multiple 属性规定输入域中可选择多个倹{?/p>
注释Q?/span>multiple 属性适用于以下类型的 <input> 标签Qemail ?file?/p>实例
Select images: <input type="file" name="img"
multiple="multiple"
/>
novalidate 属性规定在提交表单时不应该验证 form ?input 域?/p>
注释Q?/span>novalidate 属性适用?<form> 以及以下cd?<input> 标签Qtext, search, url, telephone, email, password, date pickers, range 以及 color.
<form action="demo_form.asp" method="get" novalidate="true"
> E-mail: <input type="email" name="user_email" /> <input type="submit" /> </form>
pattern 属性规定用于验?input 域的模式QpatternQ?/p>
模式QpatternQ?是正则表辑ּ。您可以在我们的 JavaScript 教程中学习到有关正则表达式的内容?/p>
注释Q?/span>pattern 属性适用于以下类型的 <input> 标签Qtext, search, url, telephone, email 以及 password?/p> 下面的例子显CZ一个只能包含三个字母的文本域(不含数字及特D字W)Q?/p>实例
Country code: <input type="text" name="country_code"
pattern="[A-z]{3}"
title="Three letter country code" />
placeholder 属性提供一U提C(hintQ,描述输入域所期待的倹{?/p>
注释Q?/span>placeholder 属性适用于以下类型的 <input> 标签Qtext, search, url, telephone, email 以及 password?/p> 提示QhintQ会在输入域为空时显C出玎ͼ会在输入域获得焦Ҏ消失Q?/p>实例
<input type="search" name="user_search"
placeholder="Search W3School"
/>
required 属性规定必d提交之前填写输入域(不能为空Q?/p>
注释Q?/span>required 属性适用于以下类型的 <input> 标签Qtext, search, url, telephone, email, password, date pickers, number, checkbox, radio 以及 file?/p>实例
Name: <input type="text" name="usr_name"
required="required"
/>
HTML5 拥有若干涉及表单的元素和属性?/p>
本章介绍以下新的表单元素Q?/p>
Input type | IE | Firefox | Opera | Chrome | Safari |
---|---|---|---|---|---|
datalist | No | No | 9.5 | No | No |
keygen | No | No | 10.5 | 3.0 | No |
output | No | No | 9.5 | No | No |
datalist 元素规定输入域的选项列表?/p>
列表是通过 datalist 内的 option 元素创徏的?/p>
如需?datalist l定到输入域Q请用输入域?list 属性引?datalist ?idQ?/p>
Webpage: <input type="url" list="url_list" name="link" /><datalist id="url_list">
<option label="W3School" value="http://www.W3School.com.cn" /> <option label="Google" value="http://www.google.com" /> <option label="Microsoft" value="http://www.microsoft.com" /></datalist>
提示Q?/span>option 元素永远都要讄 value 属性?/p>
keygen 元素的作用是提供一U验证用L可靠Ҏ?/p>
keygen 元素是密钥对生成器(key-pair generatorQ。当提交表单Ӟ会生成两个键Q一个是U钥Q一个公钥?/p>
U钥Qprivate keyQ存储于客户端,公钥Qpublic keyQ则被发送到服务器。公钥可用于之后验证用户的客L证书Qclient certificateQ?/p>
目前Q浏览器Ҏ元素的糟p的支持度不以使其成ؓ一U有用的安全标准?/p>
<form action="demo_form.asp" method="get"> Username: <input type="text" name="usr_name" /> Encryption: <keygen name="security" />
<input type="submit" /> </form>
output 元素用于不同cd的输出,比如计算或脚本输出:
<output id="result" onforminput="resCalc()"></output>
HTML5 服务器发送事Ӟserver-sent eventQ允许网获得来自服务器的更新?/span>
Server-Sent 事g指的是网自动获取来自服务器的更新?/p>
以前也可能做到这一点,前提是网不得不询问是否有可用的更新。通过服务器发送事Ӟ更新能够自动到达?/p>
例子QFacebook/Twitter 更新、估h新、新的博文、赛事结果等?/p>
所有主浏览器均支持服务器发送事Ӟ除了 Internet Explorer?/p>
EventSource 对象用于接收服务器发送事仉知Q?/p>
var source=new EventSource("demo_sse.php"); source.onmessage=function(event) { document.getElementById("result").innerHTML+=event.data + "<br />"; };
例子解释Q?/p>
在上面的 TIY 实例中,我们~写了一D额外的代码来检服务器发送事件的览器支持情况:
if(typeof(EventSource)!=="undefined") { // Yes! Server-sent events support! // Some code..... } else { // Sorry! No server-sent events support.. }
Z让上面的例子可以q行Q您q需要能够发送数据更新的服务器(比如 PHP ?ASPQ?/p>
服务器端事g的语法是非常简单的。把 "Content-Type" 报头讄?"text/event-stream"。现在,您可以开始发送事件流了?/p>
<?php header('Content-Type: text/event-stream'); header('Cache-Control: no-cache'); $time = date('r'); echo "data: The server time is: {$time}\n\n"; flush(); ?>
<% Response.ContentType="text/event-stream" Response.Expires=-1 Response.Write("data: " & now()) Response.Flush() %>
代码解释Q?/p>
在上面的例子中,我们使用 onmessage 事g来获取消息。不q还可以使用其他事gQ?/p>
事g | 描述 |
---|---|
onopen | 当通往服务器的q接被打开 |
onmessage | 当接收到消息 |
onerror | 当错误发?/td> |
web worker 是运行在后台?JavaScriptQ不会媄响页面的性能?/span>
当在 HTML 面中执行脚本时Q页面的状态是不可响应的,直到脚本已完成?/p>
web worker 是运行在后台?JavaScriptQ独立于其他脚本Q不会媄响页面的性能。您可以l箋做Q何愿意做的事情:点击、选取内容{等Q而此?web worker 在后台运行?/p>
所有主浏览器均支?web workerQ除?Internet Explorer?/p>
下面的例子创Z一个简单的 web workerQ在后台计数Q?/p>
计数Q?output id="result" style="margin: 0px; padding: 0px; border: 0px; font-weight: bold; font-size: 12px; line-height: normal; font-family: Verdana, Arial, Helvetica, sans-serif; color: #0000cc;">
在创?web worker 之前Q请用L览器是否支持它Q?/p>
if(typeof(Worker)!=="undefined") { // Yes! Web worker support! // Some code..... } else { // Sorry! No Web Worker support.. }
现在Q让我们在一个外?JavaScript 中创建我们的 web worker?/p>
在这里,我们创徏了计数脚本。该脚本存储?"demo_workers.js" 文g中:
var i=0; function timedCount() { i=i+1; postMessage(i);
setTimeout("timedCount()",500); } timedCount();
以上代码中重要的部分?nbsp;postMessage() Ҏ - 它用于向 HTML 面传回一D|息?/p>
注释Q?/span>web worker 通常不用于如此简单的脚本Q而是用于更耗费 CPU 资源的Q务?/p>
我们已经有了 web worker 文gQ现在我们需要从 HTML 面调用它?/p>
下面的代码检是否存?workerQ如果不存在Q? 它会创徏一个新?web worker 对象Q然后运?"demo_workers.js" 中的代码Q?/p>
if(typeof(w)=="undefined") { w=new Worker("demo_workers.js"); }
然后我们可以从 web worker 发生和接收消息了?/p>
?web worker d一?"onmessage" 事g监听器:
w.onmessage=function(event){ document.getElementById("result").innerHTML=event.data; };
?web worker 传递消息时Q会执行事g监听器中的代码。event.data 中存有来?event.data 的数据?/p>
当我们创?web worker 对象后,它会l箋监听消息Q即使在外部脚本完成之后Q直到其被终止ؓ止?/p>
如需l止 web workerQƈ释放览?计算源,请?terminate() ҎQ?/p>
w.terminate();
我们已经看到?.js 文g中的 Worker 代码。下面是 HTML 面的代码:
<!DOCTYPE html> <html> <body> <p>Count numbers: <output id="result"></output></p> <button onclick="startWorker()">Start Worker</button> <button onclick="stopWorker()">Stop Worker</button> <br /><br /> <script> var w; function startWorker() { if(typeof(Worker)!=="undefined") { if(typeof(w)=="undefined") { w=new Worker("demo_workers.js"); } w.onmessage = function (event) { document.getElementById("result").innerHTML=event.data; }; } else { document.getElementById("result").innerHTML="Sorry, your browser does not support Web Workers..."; } } function stopWorker() { w.terminate(); } </script> </body> </html>
׃ web worker 位于外部文g中,它们无法讉K下例 JavaScript 对象Q?/p>
使用 HTML5Q通过创徏 cache manifest 文gQ可以轻村֜创徏 web 应用的离U版本?/span>
HTML5 引入了应用程序缓存,q意味着 web 应用可进行缓存,q可在没有因特网q接时进行访问?/p>
应用E序~存为应用带来三个优势:
所有主浏览器均支持应用程序缓存,除了 Internet Explorer?/p>
下面的例子展CZ带有 cache manifest ?HTML 文档Q供ȝ览Q:
<!DOCTYPE HTML> <html manifest="demo.appcache"
> <body> The content of the document...... </body> </html>
如需启用应用E序~存Q请在文档的 <html> 标签中包?manifest 属性:
<!DOCTYPE HTML> <html manifest="demo.appcache"> ... </html>
每个指定?manifest 的页面在用户对其讉K旉会被~存。如果未指定 manifest 属性,则页面不会被~存Q除非在 manifest 文g中直接指定了该页面)?/p>
manifest 文g的徏议的文g扩展名是Q?.appcache"?/p>
h意,manifest 文g需要配|?span style="margin: 0px; padding: 0px; border: 0px; font-weight: bold;">正确?MIME-typeQ即 "text/cache-manifest"。必d web 服务器上q行配置?/p>
manifest 文g是简单的文本文gQ它告知览器被~存的内容(以及不缓存的内容Q?/p>
manifest 文g可分Z个部分:
W一行,CACHE MANIFESTQ是必需的:
CACHE MANIFEST /theme.css /logo.gif /main.js
上面?manifest 文g列出了三个资源:一?CSS 文gQ一?GIF 囑փQ以及一?JavaScript 文g。当 manifest 文g加蝲后,览器会从网站的根目录下载这三个文g。然后,无论用户何时与因特网断开q接Q这些资源依然是可用的?/p>
下面?NETWORK 节规定文g "login.asp" 永远不会被缓存,且离U时是不可用的:
NETWORK: login.asp
可以使用星号来指C所有其他资?文g都需要因特网q接Q?/p>
NETWORK: *
下面?FALLBACK 节规定如果无法建立因特|连接,则用 "offline.html" 替代 /html5/ 目录中的所有文Ӟ
FALLBACK: /html5/ /404.html
注释Q?/span>W一?URI 是资源,W二个是替补?/p>
一旦应用被~存Q它׃保持~存直到发生下列情况Q?/p>
CACHE MANIFEST # 2012-02-21 v1.0.0 /theme.css /logo.gif /main.js NETWORK: login.asp FALLBACK: /html5/ /404.html
重要的提C:?"#" 开头的是注释行Q但也可满其他用途。应用的~存会在?manifest 文g更改时被更新。如果您~辑了一q图片,或者修改了一?JavaScript 函数Q这些改变都不会被重新缓存。更新注释行中的日期和版本号是一Uɋ览器重新缓存文件的办法?/p>
L心缓存的内容?/p>
一旦文件被~存Q则览器会l箋展示已缓存的版本Q即使您修改了服务器上的文g。ؓ了确保浏览器更新~存Q您需要更?manifest 文g?/p>
注释Q?/span>览器对~存数据的容量限制可能不太一P某些览器设|的限制是每个站?5MBQ?/p>
HTML5 提供了两U在客户端存储数据的新方法:
之前Q这些都是由 cookie 完成的。但?cookie 不适合大量数据的存储,因ؓ它们由每个对服务器的h来传递,q?cookie 速度很慢而且效率也不高?/p>
?HTML5 中,数据不是由每个服务器h传递的Q而是只有在请求时使用数据。它使在不媄响网站性能的情况下存储大量数据成ؓ可能?/p>
对于不同的网站,数据存储于不同的区域Qƈ且一个网站只能访问其自n的数据?/p>
HTML5 使用 JavaScript 来存储和讉K数据?/p>
localStorage Ҏ存储的数据没有时间限制。第二天、第二周或下一q之后,数据依然可用?/p>
如何创徏和访?localStorageQ?/p>
<script type="text/javascript">localStorage.lastname="Smith";
document.write(localStorage.lastname
); </script>
下面的例子对用户讉K面的次数进行计敎ͼ
<script type="text/javascript"> if (localStorage.pagecount
) { localStorage.pagecount=Number(localStorage.pagecount
) +1; } else {localStorage.pagecount
=1; } document.write("Visits "+localStorage.pagecount
+ " time(s)."); </script>
sessionStorage Ҏ针对一?session q行数据存储。当用户关闭览器窗口后Q数据会被删除?/p>
如何创徏q访问一?sessionStorageQ?/p>
<script type="text/javascript">sessionStorage.lastname="Smith";
document.write(sessionStorage.lastname
); </script>
下面的例子对用户在当?session 中访问页面的ơ数q行计数Q?/p>
<script type="text/javascript"> if (sessionStorage.pagecount
) { sessionStorage.pagecount=Number(sessionStorage.pagecount
) +1; } else {sessionStorage.pagecount
=1; } document.write("Visits "+sessionStorage.pagecount
+" time(s) this session."); </script>
HTML5 GeolocationQ地理定位)用于定位用户的位|?/span>
HTML5 Geolocation API 用于获得用户的地理位|?/p>
鉴于该特性可能R犯用L隐私Q除非用户同意,否则用户位置信息是不可用的?/p>
Internet Explorer 9、Firefox、Chrome、Safari 以及 Opera 支持地理定位?/p>
注释Q?/span>对于拥有 GPS 的设备,比如 iPhoneQ地理定位更加精?/p>
请?getCurrentPosition() Ҏ来获得用L位置?/p>
下例是一个简单的地理定位实例Q可q回用户位置的经度和U度?/p>
<script> var x=document.getElementById("demo"); function getLocation() { if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(showPosition)
; } else{x.innerHTML="Geolocation is not supported by this browser.";} } function showPosition(position) { x.innerHTML="Latitude: " + position.coords.latitude + "<br />Longitude: " + position.coords.longitude; } </script>
例子解释Q?/p>
上面的例子是一个非常基的地理定位脚本,不含错误处理?/p>
getCurrentPosition() Ҏ的第二个参数用于处理错误。它规定当获取用户位|失败时q行的函敎ͼ
function showError(error) { switch(error.code) { case error.PERMISSION_DENIED: x.innerHTML="User denied the request for Geolocation." break; case error.POSITION_UNAVAILABLE: x.innerHTML="Location information is unavailable." break; case error.TIMEOUT: x.innerHTML="The request to get user location timed out." break; case error.UNKNOWN_ERROR: x.innerHTML="An unknown error occurred." break; } }
错误代码Q?/p>
如需在地图中昄l果Q您需要访问可使用l纬度的地图服务Q比如谷歌地图或癑ֺ地图Q?/p>
function showPosition(position) { var latlon=position.coords.latitude+","+position.coords.longitude; var img_url="http://maps.googleapis.com/maps/api/staticmap?center=" +latlon+"&zoom=14&size=400x300&sensor=false"; document.getElementById("mapholder").innerHTML="<img src='"+img_url+"' />"; }
在上例中Q我们用返回的l纬度数据在h地图中显CZ|(使用静态图像)?/p>
上面的链接向您演C如何用脚本来昄带有标记、羃攑֒拖曳选项的交互式地图?/p>
本页演示的是如何在地图上昄用户的位|。不q,地理定位对于l定位置的信息同样很有用处?/p>
案例Q?/p>
若成功,?getCurrentPosition() Ҏq回对象。始l会q回 latitude、longitude 以及 accuracy 属性。如果可用,则会q回其他下面的属性?/p>
属?/th> | 描述 |
---|---|
coords.latitude | 十进制数的纬?/td> |
coords.longitude | 十进制数的经?/td> |
coords.accuracy | 位置_ֺ |
coords.altitude | hQvq面以上以米?/td> |
coords.altitudeAccuracy | 位置的v拔精?/td> |
coords.heading | 方向Q从正北开始以度计 |
coords.speed | 速度Q以c?每秒?/td> |
timestamp | 响应的日?旉 |
watchPosition() - q回用户的当前位|,ql返回用L动时的更C|(像汽R上的 GPSQ?/p>
clearWatch() - 停止 watchPosition() Ҏ
下面的例子展C?watchPosition() Ҏ。您需要一台精的 GPS 讑֤来测试该例(比如 iPhoneQ:
<script> var x=document.getElementById("demo"); function getLocation() { if (navigator.geolocation) { navigator.geolocation.watchPosition(showPosition)
; } else{x.innerHTML="Geolocation is not supported by this browser.";} } function showPosition(position) { x.innerHTML="Latitude: " + position.coords.latitude + "<br />Longitude: " + position.coords.longitude; } </script>
Canvas ?SVG 都允许您在浏览器中创建图形,但是它们在根本上是不同的?/span>
SVG 是一U?XML 描述 2D 囑Ş的语a?/p>
SVG Z XMLQ这意味着 SVG DOM 中的每个元素都是可用的。您可以为某个元素附?JavaScript 事g处理器?/p>
?SVG 中,每个被绘制的囑Ş均被视ؓ对象。如?SVG 对象的属性发生变化,那么览器能够自动重现图形?/p>
Canvas 通过 JavaScript 来绘?2D 囑Ş?/p>
Canvas 是逐像素进行渲染的?/p>
?canvas 中,一旦图形被l制完成Q它׃会l得到浏览器的关注。如果其位置发生变化Q那么整个场景也需要重新绘Ӟ包括M或许已被囑Ş覆盖的对象?/p>
下表列出?canvas ?SVG 之间的一些不同之处?/p>
HTML5 支持内联 SVG?/span>
与其他图像格式相比(比如 JPEG ?GIFQ,使用 SVG 的优势在于:
Internet Explorer 9、Firefox、Opera、Chrome 以及 Safari 支持内联 SVG?/p>
?HTML5 中,您能够将 SVG 元素直接嵌入 HTML 面中:
<!DOCTYPE html> <html> <body> <svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="190"> <polygon points="100,10 40,180 190,60 10,60 160,180" style="fill:lime;stroke:purple;stroke-width:5;fill-rule:evenodd;" /> </svg>
</body> </html>
l果Q?/p>
如需学习更多有关 SVG 的知识,请阅L们的 SVG 教程?/p>
canvas 元素用于在网上l制囑Ş?/span>
HTML5 ?canvas 元素使用 JavaScript 在网上l制囑փ?/p>
d是一个矩形区域,您可以控制其每一像素?/p>
canvas 拥有多种l制路径、矩形、圆形、字W以及添加图像的Ҏ?/p>
?HTML5 面d canvas 元素?/p>
规定元素?id、宽度和高度Q?/p>
<canvas id="myCanvas" width="200" height="100"></canvas>
canvas 元素本n是没有绘图能力的。所有的l制工作必须?JavaScript 内部完成Q?/p>
<script type="text/javascript"> var c=document.getElementById("myCanvas"); var cxt=c.getContext("2d"); cxt.fillStyle="#FF0000"; cxt.fillRect(0,0,150,75); </script>
JavaScript 使用 id 来寻?canvas 元素Q?/p>
var c=document.getElementById("myCanvas");
然后Q创?context 对象Q?/p>
var cxt=c.getContext("2d");
getContext("2d") 对象是内建的 HTML5 对象Q拥有多U绘制\径、矩形、圆形、字W以及添加图像的Ҏ?/p>
下面的两行代码绘制一个红色的矩ŞQ?/p>
cxt.fillStyle="#FF0000"; cxt.fillRect(0,0,150,75);
fillStyle Ҏ其染成U色QfillRect Ҏ规定了Ş状、位|和寸?/p>
上面?fillRect Ҏ拥有参数 (0,0,150,75)?/p>
意思是Q在d上绘?150x75 的矩形,从左上角开?(0,0)?/p>
如下图所C,d?X ?Y 坐标用于在画布上对绘画进行定位?/p>
下面的在 canvas 元素上进行绘ȝ更多实例Q?/p>
通过指定从何处开始,在何处结束,来绘制一条线Q?/p>
JavaScript 代码Q?/p>
<script type="text/javascript"> var c=document.getElementById("myCanvas"); var cxt=c.getContext("2d"); cxt.moveTo(10,10); cxt.lineTo(150,50); cxt.lineTo(10,50); cxt.stroke(); </script>
canvas 元素Q?/p>
<canvas id="myCanvas" width="200" height="100" style="border:1px solid #c3c3c3;"> Your browser does not support the canvas element. </canvas>
通过规定寸、颜色和位置Q来l制一个圆Q?/p>
JavaScript 代码Q?/p>
<script type="text/javascript"> var c=document.getElementById("myCanvas"); var cxt=c.getContext("2d"); cxt.fillStyle="#FF0000"; cxt.beginPath(); cxt.arc(70,18,15,0,Math.PI*2,true); cxt.closePath(); cxt.fill(); </script>
canvas 元素Q?/p>
<canvas id="myCanvas" width="200" height="100" style="border:1px solid #c3c3c3;"> Your browser does not support the canvas element. </canvas>
使用您指定的颜色来绘制渐变背景:
JavaScript 代码Q?/p>
<script type="text/javascript"> var c=document.getElementById("myCanvas"); var cxt=c.getContext("2d"); var grd=cxt.createLinearGradient(0,0,175,50); grd.addColorStop(0,"#FF0000"); grd.addColorStop(1,"#00FF00"); cxt.fillStyle=grd; cxt.fillRect(0,0,175,50); </script>
canvas 元素Q?/p>
<canvas id="myCanvas" width="200" height="100" style="border:1px solid #c3c3c3;"> Your browser does not support the canvas element. </canvas>
把一q图像放|到d上:
JavaScript 代码Q?/p>
<script type="text/javascript"> var c=document.getElementById("myCanvas"); var cxt=c.getContext("2d"); var img=new Image() img.src="flower.png" cxt.drawImage(img,0,0); </script>
canvas 元素Q?/p>
<canvas id="myCanvas" width="200" height="100" style="border:1px solid #c3c3c3;"> Your browser does not support the canvas element. </canvas>
拖放QDrag ?dropQ是 HTML5 标准的组成部分?/span>
拖放是一U常见的Ҏ,x取对象以后拖到另一个位|?/p>
?HTML5 中,拖放是标准的一部分QQ何元素都能够拖放?/p>
Internet Explorer 9、Firefox、Opera 12、Chrome 以及 Safari 5 支持拖放?/p>
注释Q?/span>?Safari 5.1.2 中不支持拖放?/p>
下面的例子是一个简单的拖放实例Q?/p>
<!DOCTYPE HTML> <html> <head> <script type="text/javascript"> function allowDrop(ev) { ev.preventDefault(); } function drag(ev) { ev.dataTransfer.setData("Text",ev.target.id); } function drop(ev) { ev.preventDefault(); var data=ev.dataTransfer.getData("Text"); ev.target.appendChild(document.getElementById(data)); } </script> </head> <body> <div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div> <img id="drag1" src="img_logo.gif" draggable="true" ondragstart="drag(event)" width="336" height="69" /> </body> </html>
它看上去也许有些复杂Q不q我们可以分别研I拖放事件的不同部分?/p>
首先Qؓ了元素可拖动,?draggable 属性设|ؓ true Q?/p>
<img draggable="true" />
然后Q规定当元素被拖动时Q会发生什么?/p>
在上面的例子中,ondragstart 属性调用了一个函敎ͼdrag(event)Q它规定了被拖动的数据?/p>
dataTransfer.setData() Ҏ讄被拖数据的数据类型和|
function drag(ev) { ev.dataTransfer.setData("Text",ev.target.id); }
在这个例子中Q数据类型是 "Text"Q值是可拖动元素的 id ("drag1")?/p>
ondragover 事g规定在何处放|被拖动的数据?/p>
默认圎ͼ无法数?元素攄到其他元素中。如果需要设|允许放|,我们必须L对元素的默认处理方式?/p>
q要通过调用 ondragover 事g?nbsp;event.preventDefault() ҎQ?/p>
event.preventDefault()
当放|被拖数据时Q会发生 drop 事g?/p>
在上面的例子中,ondrop 属性调用了一个函敎ͼdrop(event)Q?/p>
function drop(ev) { ev.preventDefault(); var data=ev.dataTransfer.getData("Text"); ev.target.appendChild(document.getElementById(data)); }
HTML5 提供了播N频的标准?/span>
直到现在Q仍然不存在一Ҏ在网上播放音频的标准?/p>
今天Q大多数音频是通过插gQ比?FlashQ来播放的。然而,q所有浏览器都拥有同L插g?/p>
HTML5 规定了一U通过 audio 元素来包含音频的标准Ҏ?/p>
audio 元素能够播放声音文g或者音频流?/p>
当前Qaudio 元素支持三种音频格式Q?/p>
IE 9 | Firefox 3.5 | Opera 10.5 | Chrome 3.0 | Safari 3.0 | |
---|---|---|---|---|---|
Ogg Vorbis | √ | √ | √ | ||
MP3 | √ | √ | √ | ||
Wav | √ | √ | √ |
如需?HTML5 中播N频,您所有需要的是:
<audio src="song.ogg" controls="controls"> </audio>
control 属性供d播放、暂停和音量控g?/p>
<audio> ?</audio> 之间插入的内Ҏ供不支持 audio 元素的浏览器昄的:
<audio src="song.ogg" controls="controls"> Your browser does not support the audio tag. </audio>
上面的例子用一?Ogg 文gQ适用于Firefox、Opera 以及 Chrome 览器?/p>
要确保适用?Safari 览器,音频文g必须?MP3 ?Wav cd?/p>
audio 元素允许多个 source 元素。source 元素可以链接不同的音频文件。浏览器用第一个可识别的格式:
<audio controls="controls"> <source src="song.ogg" type="audio/ogg"> <source src="song.mp3" type="audio/mpeg"> Your browser does not support the audio tag. </audio>
Internet Explorer 8 不支?audio 元素。在 IE 9 中,提供对 audio 元素的支持?/p>
属?/th> | ?/th> | 描述 |
---|---|---|
autoplay | autoplay | 如果出现该属性,则音频在qA后马上播放?/td> |
controls | controls | 如果出现该属性,则向用户昄控gQ比如播放按钮?/td> |
loop | loop | 如果出现该属性,则每当音频结束时重新开始播放?/td> |
preload | preload | 如果出现该属性,则音频在面加蝲时进行加载,q备播放?/p> 如果使用 "autoplay"Q则忽略该属性?/p> |
src | url | 要播攄音频?URL?/td> |
参考手册:HTML 5 <audio> 标签
HTML5 <video> 元素同样拥有Ҏ、属性和事g?/p>
其中的方法用于播放、暂停以及加载等。其中的属性(比如旉、音量等Q可以被d或设|。其中的 DOM 事g能够通知您,比方_<video> 元素开始播放、已暂停Q已停止Q等{?/p>
下例中简单的ҎQ向我们演示了如何?<video> 元素Q读取ƈ讄属性,以及如何调用Ҏ?/p>
频创建简单的播放/暂停以及调整寸控gQ?/p>
上面的例子调用了两个ҎQplay() ?pause()。它同时使用了两个属性:paused ?width?/p>
下面列出了大多数览器支持的视频Ҏ、属性和事gQ?/p>
Ҏ | 属?/th> | 事g |
---|---|---|
play() | currentSrc | play |
pause() | currentTime | pause |
load() | videoWidth | progress |
canPlayType | videoHeight | error |
duration | timeupdate | |
ended | ended | |
error | abort | |
paused | empty | |
muted | emptied | |
seeking | waiting | |
volume | loadedmetadata | |
height | ||
width |
注释Q?/span>在所有属性中Q只?videoWidth ?videoHeight 属性是立即可用的。在视频的元数据已加载后Q其他属性才可用?/p>
许多旉的网站都提供视频。HTML5 提供了展C频的标准?/span>
您的浏览器是否支持 HTML5 视频Q?/p>
直到现在Q仍然不存在一Ҏ在网上昄视频的标准?/p>
今天Q大多数视频是通过插gQ比?FlashQ来昄的。然而,q所有浏览器都拥有同L插g?/p>
HTML5 规定了一U通过 video 元素来包含视频的标准Ҏ?/p>
当前Qvideo 元素支持三种视频格式Q?/p>
格式 | IE | Firefox | Opera | Chrome | Safari |
---|---|---|---|---|---|
Ogg | No | 3.5+ | 10.5+ | 5.0+ | No |
MPEG 4 | 9.0+ | No | No | 5.0+ | 3.0+ |
WebM | No | 4.0+ | 10.6+ | 6.0+ | No |
Ogg = 带有 Theora 视频~码?Vorbis 音频~码?Ogg 文g
MPEG4 = 带有 H.264 视频~码?AAC 音频~码?MPEG 4 文g
WebM = 带有 VP8 视频~码?Vorbis 音频~码?WebM 文g
如需?HTML5 中显C频,您所有需要的是:
<video src="movie.ogg" controls="controls"> </video>
control 属性供d播放、暂停和音量控g?/p>
包含宽度和高度属性也是不错的L?/p>
<video> ?</video> 之间插入的内Ҏ供不支持 video 元素的浏览器昄的:
<video src="movie.ogg" width="320" height="240" controls="controls"> Your browser does not support the video tag. </video>
上面的例子用一?Ogg 文gQ适用于Firefox、Opera 以及 Chrome 览器?/p>
要确保适用?Safari 览器,视频文g必须?MPEG4 cd?/p>
video 元素允许多个 source 元素。source 元素可以链接不同的视频文件。浏览器用第一个可识别的格式:
<video width="320" height="240" controls="controls"> <source src="movie.ogg" type="video/ogg"> <source src="movie.mp4" type="video/mp4"> Your browser does not support the video tag. </video>
Internet Explorer 8 不支?video 元素。在 IE 9 中,提供对使用 MPEG4 ?video 元素的支持?/p>
属?/th> | ?/th> | 描述 |
---|---|---|
autoplay | autoplay | 如果出现该属性,则视频在qA后马上播放?/td> |
controls | controls | 如果出现该属性,则向用户昄控gQ比如播放按钮?/td> |
height | pixels | 讄视频播放器的高度?/td> |
loop | loop | 如果出现该属性,则当媒介文g完成播放后再ơ开始播放?/td> |
preload | preload | 如果出现该属性,则视频在面加蝲时进行加载,q备播放?/p> 如果使用 "autoplay"Q则忽略该属性?/p> |
src | url | 要播攄视频?URL?/td> |
width | pixels | 讄视频播放器的宽度?/td> |
参考手册:HTML 5 <video> 标签
HTML5 是下一代的 HTML?/span>
HTML5 成?HTML、XHTML 以及 HTML DOM 的新标准?/p>
HTML 的上一个版本诞生于 1999 q。自从那以后QWeb 世界已经l历了巨变?/p>
HTML5 仍处于完善之中。然而,大部分现代浏览器已经具备了某?HTML5 支持?/p>
HTML5 ?W3C ?WHATWG 合作的结果?/p>
~者注Q?/span>W3C ?World Wide Web ConsortiumQ万l网联盟?/p> ~者注Q?/span>WHATWG ?Web Hypertext Application Technology Working Group?/p> WHATWG 致力?web 表单和应用程序,?W3C 专注?XHTML 2.0。在 2006 q_双方军_q行合作Q来创徏一个新版本?HTML?/p> ?HTML5 建立的一些规则:
HTML5 中的一些有的新特性:
最新版本的 Safari、Chrome、Firefox 以及 Opera 支持某些 HTML5 Ҏ。Internet Explorer 9 支持某?HTML5 Ҏ?/p>
HTML5 是下一代的 HTML?/span>
本教E向您讲?HTML5 中的新特性?/span>
通过我们?HTML ~辑器,您能够编?HTMLQ然后点L钮来查看l果?/p>
<!DOCTYPE HTML> <html> <body> <video width="320" height="240" controls="controls"> <source src="movie.ogg" type="video/ogg"> <source src="movie.mp4" type="video/mp4"> Your browser does not support the video tag. </video> </body> </html>
L?TIY 按钮来查看它是如何工作的?/p>
现在开始学?HTML5 Q?/p>