HTML5新手基础教程
HTML5教程
什么是HTML5?
在这里我不说一些特别难懂的语言,我这里简单的解彩惚湛厦释一下,如果你学过HTML,那么就是HTML4,HTML5是针对现有的版本进行了一些丰富,把一些原先常用的标签进行了统一,还添加了一些以前没有的新标签来满足更复杂的功能,像原先网页上面的音乐播放器,现在都不需要通过flash插件来实现,仅仅通过HTML5编写程序来实现,可以说HTML5的出现是一个很大的进步。
给大家介绍一个HTML5学习的技术社区:HTML5伴侣
HTML5现在的局限?
最大的一个局限就是还没有完全支持,支持HTML5的现代浏览器:
但是还有些浏览器不支持,比如IE9之前的版本。
有些东西需要HTML5来实现,但是不能保证用户用的浏览器都支持HTML5,所以有些功能需要保证兼容性,所以这也是限制HTML5的一个原因。
另外的一个因素就是HTML5在移动端的表现没有想象中优越,有很多的开发者在移动端做了很多尝试,尤其是在移动端开发游戏,在动画效果的实现上面,流畅度没有得到很好地的保证,不过随着移动设备的硬件越来越快,所以在以后HTML5在移动端的劣势会被掩盖,当然并不是所有的移动端设备表现的都不好,HTML5在IOS平台下的表现就很不错,已经可以成为企业开发的一个选择,相反android就不尽人意。
HTML5的优势
HTML5最好的一个优势就是跨平台,如果你是开发者,你只要写一套程序就可以在任何地方运行,PC,移动端都可以,这个大大的节约了开发成本。
另外一个优点就是标准的统一,开发人员不需要再头疼浏览器的兼容性,不过在这之前得保证浏览器支持HTML5。
最后一个优点是站在用户的角度,在移动端你想要用一个APP,你得去下载,每次APP更新或者改版,用户很反感,用HTML5开发的只需要借助移动端浏览器打开,不需要用户下载,打开就可以直接用,用户头疼的更新问题也不用担心了。
以上都是我的废话,希望您不要对此感到反感,接下来我就正式来介绍HTML5。
HTML5新特性:
1.添加了canvas元素,这个元素可以帮助我们实现更炫更棒的动画效果,HTML5游戏就是通过这个canvas来实现的场景的渲染。
2.媒介元素,如video和audio元素。
3.本地离线存储的支持。
4.原先的标签更加分散和清晰,比如article,footer,header,nav等等。
5.新的表单元素属性,比如data,time,Email,url,search等。
HTML5视频
很多视频的网站都是通过flash插件来播放视频的,但是HTML5提供了对视频播放的支持。
Ogg=带有Theora视频编码和Vorbis音频编码的Ogg文件
MPEG4=带有H.264视频编码和AAC音频编码的MPEG4文件
WebM=带有VP8视频编码和Vorbis音频编码的WebM文件
标签使用
1<videocontrols="controls">
2<!--
3ogg文件可以用于适用于Firefox、Opera以及Chrome浏览器
4要确保适用于Safari浏览器,视频文件必须是MPEG4类型。
5video元素允许多个source元素。
6<videowidth="320"height="240"controls="controls">
7<sourcesrc="movie.ogg"type="video/ogg">
8<sourcesrc="movie.mp4"type="video/mp4">
9Yourbrowserdoesnotsupportthevideotag.
10</video>
11-->
12<sourcesrc="video/first.mp4">
13浏览器不支持html5视频功能
14</video>
IE9一下不支持video,IE9支持了MPEG4的video元素。
Video的属性选择
HTML5音频
HTML5支持音频(音乐)的标准,通过audio元素。
音频格式:
要确保适用于Safari浏览器,音频文件必须是MP3或Wav类型。
标签使用:
<audiocontrols="controls">
<sourcesrc="song.ogg"type="audio/ogg">
<sourcesrc="song.mp3"type="audio/mpeg">
Yourbrowserdoesnotsupporttheaudiotag.
</audio>
IE8不支持audio元素。在IE9中,将提供对audio元素的支持。
HTML5Canvas
Canvas元素可以实现绘制图形动画。
Canvas可以说是HTML5里面最重要的一个标签了,这个标签的出现让游戏开发更加容易,不过Canvas需要配合JavaScript使用。
元素创建
规定元素的id、宽度和高度:
<canvasid="myCanvas"width="200"height="100"></canvas>
这个地方为什么要定义id属性呢?如果你对JS的DOM编程有一定了解的话,你就知道通过ID属性可以获取一个元素对象,从而可以通过JS来对元素进行操作。
如果你对DOM不熟悉的话,建议你先去看下相关的学习资料。
这里给你一个DOM学习的电子书下载链接:
JavaScript控制Canvas
<scripttype="text/javascript">
varc=document.getElementById("myCanvas");
varcxt=c.getContext("2d");
cxt.fillStyle="#FF0000";
cxt.fillRect(0,0,150,75);
</script>
JavaScript使用id来寻找canvas元素:
varc=document.getElementById("myCanvas");
然后,创建context对象:
varcxt=c.getContext("2d");
getContext("2d")对象是内建的HTML5对象,拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。
下面的两行代码绘制一个红色的矩形:
cxt.fillStyle="#FF0000";
cxt.fillRect(0,0,150,75);
fillStyle方法将其染成红色,fillRect方法规定了形状、位置和尺寸。
上面的fillRect方法拥有参数(0,0,150,75)。
意思是:在画布上绘制150x75的矩形,从左上角开始(0,0)。
如下图所示,画布的X和Y坐标用于在画布上对绘画进行定位。
下面我在canvas元素上进行绘画的更多实例:
实例-线条
通过指定从何处开始,在何处结束,来绘制一条线:
JavaScript代码:
<scripttype="text/javascript">
varc=document.getElementById("myCanvas");
varcxt=c.getContext("2d");
cxt.moveTo(10,10);
cxt.lineTo(150,50);
cxt.lineTo(10,50);
cxt.stroke();
</script>
canvas元素:
<canvasid="myCanvas"width="200"height="100"style="border:1pxsolid#c3c3c3;">
Yourbrowserdoesnotsupportthecanvaselement.
</canvas>
实例-圆形
通过规定尺寸、颜色和位置,来绘制一个圆:
JavaScript代码:
<scripttype="text/javascript">
varc=document.getElementById("myCanvas");
varcxt=c.getContext("2d");
cxt.fillStyle="#FF0000";
cxt.beginPath();
cxt.arc(70,18,15,0,Math.PI*2,true);
cxt.closePath();
cxt.fill();
</script>
canvas元素:
<canvasid="myCanvas"width="200"height="100"style="border:1pxsolid#c3c3c3;">
Yourbrowserdoesnotsupportthecanvaselement.
</canvas>
实例-渐变
使用您指定的颜色来绘制渐变背景:
JavaScript代码:
<scripttype="text/javascript">
varc=document.getElementById("myCanvas");
varcxt=c.getContext("2d");
vargrd=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元素:
<canvasid="myCanvas"width="200"height="100"style="border:1pxsolid#c3c3c3;">
Yourbrowserdoesnotsupportthecanvaselement.
</canvas>
实例-图像
把一幅图像放置到画布上:
JavaScript代码:
<scripttype="text/javascript">
varc=document.getElementById("myCanvas");
varcxt=c.getContext("2d");
varimg=newImage()
img.src="flower.png"
cxt.drawImage(img,0,0);
</script>
canvas元素:
<canvasid="myCanvas"width="200"height="100"style="border:1pxsolid#c3c3c3;">
Yourbrowserdoesnotsupportthecanvaselement.
</canvas>
你看我canvas相比较前几个标签来说,解释说明举例明显更多,这也说明canvas标签的重要性,希望你能好好学习这个标签。
HTML5Web存储
在客户端存储数据
HTML5提供了两种在客户端存储数据的新方法:
localStorage-没有时间限制的数据存储
sessionStorage-针对一个session的数据存储
之前,这些都是由cookie完成的。但是cookie不适合大量数据的存储,因为它们由每个对服务器的请求来传递,这使得cookie速度很慢而且效率也不高。
在HTML5中,数据不是由每个服务器请求传递的,而是只有在请求时使用数据。它使在不影响网站性能的情况下存储大量数据成为可能。
对于不同的网站,数据存储于不同的区域,并且一个网站只能访问其自身的数据。
HTML5使用JavaScript来存储和访问数据。
localStorage方法
localStorage方法存储的数据没有时间限制。第二天、第二周或下一年之后,数据依然可用。
如何创建和访问localStorage:
实例
<scripttype="text/javascript">
localStorage.lastname="Smith";
document.write(localStorage.lastname);
</script>
sessionStorage方法
sessionStorage方法针对一个session进行数据存储。当用户关闭浏览器窗口后,数据会被删除。
如何创建并访问一个sessionStorage:
实例
<scripttype="text/javascript">
sessionStorage.lastname="Smith";
document.write(sessionStorage.lastname);
</script>
HTML5Input类型
HTML5拥有多个新的表单输入类型。这些新特性提供了更好的输入控制和验证。
本章全面介绍这些新的输入类型:
1.email
2.url
3.number
4.range
5.Datepickers(date,month,week,time,datetime,datetime-local)
6.search
7.color
注释:Opera对新的输入类型的支持最好。不过您已经可以在所有主流的浏览器中使用它们了。即使不被支持,仍然可以显示为常规的文本域。
Input类型-email
email类型用于应该包含e-mail地址的输入域。
在提交表单时,会自动验证email域的值。
实例
E-mail:<inputtype="email"name="user_email"/>
提示:iPhone中的Safari浏览器支持email输入类型,并通过改变触摸屏键盘来配合它(添加@和.com选项)。
Input类型-url
url类型用于应该包含URL地址的输入域。
在提交表单时,会自动验证url域的值。
实例
Homepage:<inputtype="url"name="user_url"/>
提示:iPhone中的Safari浏览器支持url输入类型,并通过改变触摸屏键盘来配合它(添加.com选项)。
Input类型-number
number类型用于应该包含数值的输入域。
您还能够设定对所接受的数字的限定:
实例
Points:<inputtype="number"name="points"min="1"max="10"/>
请使用下面的属性来规定对数字类型的限定:
属性
值
描述
max
number
规定允许的最大值
min
number
规定允许的最小值
step
number
规定合法的数字间隔(如果step="3",则合法的数是-3,0,3,6等)
value
number
规定默认值
提示:iPhone中的Safari浏览器支持number输入类型,并通过改变触摸屏键盘来配合它(显示数字)。
Input类型-range
range类型用于应该包含一定范围内数字值的输入域。
range类型显示为滑动条。
您还能够设定对所接受的数字的限定:
实例
<inputtype="range"name="points"min="1"max="10"/>
请使用下面的属性来规定对数字类型的限定:
属性
值
描述
max
number
规定允许的最大值
min
number
规定允许的最小值
step
number
规定合法的数字间隔(如果step="3",则合法的数是-3,0,3,6等)
value
number
规定默认值
Input类型-DatePickers(日期选择器)
HTML5拥有多个可供选取日期和时间的新输入类型:
15date-选取日、月、年
16month-选取月、年
17week-选取周和年
18time-选取时间(小时和分钟)
19datetime-选取时间、日、月、年(UTC时间)
20datetime-local-选取时间、日、月、年(本地时间)
下面的例子允许您从日历中选取一个日期:
实例
Date:<inputtype="date"name="user_date"/>
Input里面的类型新增的属性虽然多了一些,但是大多都很简单,和原先的text,password都是一样的道理。
HTML5表单元素
HTML5拥有若干涉及表单的元素和属性。
datalist元素
datalist元素规定输入域的选项列表。
列表是通过datalist内的option元素创建的。
如需把datalist绑定到输入域,请用输入域的list属性引用datalist的id:
实例
Webpage:<inputtype="url"list="url_list"name="link"/>
<datalistid="url_list">
<optionlabel="W3School"value="http://www.W3School.com.cn"/>
<optionlabel="Google"value="http://www.google.com"/>
<optionlabel="Microsoft"value="http://www.microsoft.com"/>
</datalist>
提示:option元素永远都要设置value属性。
keygen元素
keygen元素的作用是提供一种验证用户的可靠方法。
keygen元素是密钥对生成器(key-pairgenerator)。当提交表单时,会生成两个键,一个是私钥,一个公钥。
私钥(privatekey)存储于客户端,公钥(publickey)则被发送到服务器。公钥可用于之后验证用户的客户端证书(clientcertificate)。
目前,浏览器对此元素的糟糕的支持度不足以使其成为一种有用的安全标准。
实例
<formaction="demo_form.asp"method="get">
Username:<inputtype="text"name="usr_name"/>
Encryption:<keygenname="security"/>
<inputtype="submit"/>
</form>
output元素
output元素用于不同类型的输出,比如计算或脚本输出:
实例
<outputid="result"onforminput="resCalc()"></output>
HTML5表单属性
本章讲解涉及<form>和<input>元素的新属性。
新的form属性:
autocomplete
novalidate
新的input属性:
autocomplete
autofocus
form
formoverrides(formaction,formenctype,formmethod,formnovalidate,formtarget)
height和width
list
min,max和step
multiple
pattern(regexp)
placeholder
Required
autocomplete属性
autocomplete属性规定form或input域应该拥有自动完成功能。
注释:autocomplete适用于<form>标签,以及以下类型的<input>标签:text,search,url,telephone,email,password,datepickers,range以及color。
当用户在自动完成域中开始输入时,浏览器应该在该域中显示填写的选项:
实例
<formaction="demo_form.asp"method="get"autocomplete="on">
Firstname:<inputtype="text"name="fname"/><br/>
Lastname:<inputtype="text"name="lname"/><br/>
E-mail:<inputtype="email"name="email"autocomplete="off"/><br/>
<inputtype="submit"/>
</form>
注释:在某些浏览器中,您可能需要启用自动完成功能,以使该属性生效。
autofocus属性
autofocus属性规定在页面加载时,域自动地获得焦点。
注释:autofocus属性适用于所有<input>标签的类型。
实例
Username:<inputtype="text"name="user_name"autofocus="autofocus"/>
form属性
form属性规定输入域所属的一个或多个表单。
注释:form属性适用于所有<input>标签的类型。
form属性必须引用所属表单的id:
实例
<formaction="demo_form.asp"method="get"id="user_form">
Firstname:<inputtype="text"name="fname"/>
<inputtype="submit"/>
</form>
Lastname:<inputtype="text"name="lname"form="user_form"/>
注释:如需引用一个以上的表单,请使用空格分隔的列表。
表单重写属性
表单重写属性(formoverrideattributes)允许您重写form元素的某些属性设定。
表单重写属性有:
21formaction-重写表单的action属性
22formenctype-重写表单的enctype属性
23formmethod-重写表单的method属性
24formnovalidate-重写表单的novalidate属性
25formtarget-重写表单的target属性
注释:表单重写属性适用于以下类型的<input>标签:submit和image。
实例
<formaction="demo_form.asp"method="get"id="user_form">
E-mail:<inputtype="email"name="userid"/><br/>
<inputtype="submit"value="Submit"/>
<br/>
<inputtype="submit"formaction="demo_admin.asp"value="Submitasadmin"/>
<br/>
<inputtype="submit"formnovalidate="true"value="Submitwithoutvalidation"/>
<br/>
</form>
注释:这些属性对于创建不同的提交按钮很有帮助。
height和width属性
height和width属性规定用于image类型的input标签的图像高度和宽度。
注释:height和width属性只适用于image类型的<input>标签。
实例
<inputtype="image"src="img_submit.gif"width="99"height="99"/>
list属性
list属性规定输入域的datalist。datalist是输入域的选项列表。
注释:list属性适用于以下类型的<input>标签:text,search,url,telephone,email,datepickers,number,range以及color。
实例
Webpage:<inputtype="url"list="url_list"name="link"/>
<datalistid="url_list">
<optionlabel="W3Schools"value="http://www.w3school.com.cn"/>
<optionlabel="Google"value="http://www.google.com"/>
<optionlabel="Microsoft"value="http://www.microsoft.com"/>
</datalist>
min、max和step属性
min、max和step属性用于为包含数字或日期的input类型规定限定(约束)。
max属性规定输入域所允许的最大值。
min属性规定输入域所允许的最小值。
step属性为输入域规定合法的数字间隔(如果step="3",则合法的数是-3,0,3,6等)。
注释:min、max和step属性适用于以下类型的<input>标签:datepickers、number以及range。
下面的例子显示一个数字域,该域接受介于0到10之间的值,且步进为3(即合法的值为0、3、6和9):
实例
Points:<inputtype="number"name="points"min="0"max="10"step="3"/>
multiple属性
multiple属性规定输入域中可选择多个值。
注释:multiple属性适用于以下类型的<input>标签:email和file。
实例
Selectimages:<inputtype="file"name="img"multiple="multiple"/>
novalidate属性
novalidate属性规定在提交表单时不应该验证form或input域。
注释:novalidate属性适用于<form>以及以下类型的<input>标签:text,search,url,telephone,email,password,datepickers,range以及color.
实例
<formaction="demo_form.asp"method="get"novalidate="true">
E-mail:<inputtype="email"name="user_email"/>
<inputtype="submit"/>
</form>
pattern属性
pattern属性规定用于验证input域的模式(pattern)。
模式(pattern)是正则表达式。您可以在我们的JavaScript教程中学习到有关正则表达式的内容。
注释:pattern属性适用于以下类型的<input>标签:text,search,url,telephone,email以及password。
下面的例子显示了一个只能包含三个字母的文本域(不含数字及特殊字符):
实例
Countrycode:<inputtype="text"name="country_code"
pattern="[A-z]{3}"title="Threelettercountrycode"/>
placeholder属性
placeholder属性提供一种提示(hint),描述输入域所期待的值。
注释:placeholder属性适用于以下类型的<input>标签:text,search,url,telephone,email以及password。
提示(hint)会在输入域为空时显示出现,会在输入域获得焦点时消失:
实例
<inputtype="search"name="user_search"placeholder="SearchW3School"/>
required属性
required属性规定必须在提交之前填写输入域(不能为空)。
注释:required属性适用于以下类型的<input>标签:text,search,url,telephone,email,password,datepickers,number,checkbox,radio以及file。
实例
Name:<inputtype="text"name="usr_name"required="required"/>
这份简易的HTML5教程是为了新手准备,HTML5还有很大其他的更高级的东西,我在这里没有介绍,不过随着学习的深入,以后你肯定会接触到的,我在最后给大家展示一些HTML5开发的实例,包括游戏,应用以及各种demo。
HTML5开发的驴子跳游戏:
HTML5开发游戏场景:
HTML5和JS结合开发的植物大战僵尸:
HTML5的传奇还在继续,你现在是不是充满了热情,摩拳擦掌的想要试试HTML5具有什么样的魅力?那就快来学习吧,希望这份教程在你HTML5的启蒙道路有所帮助。