HTML5发展已有4年了,现在已经逐步成熟,而且各主流浏览器也已经支持到位,是时候学习一下了。首先需要了解HTML5与HTML4的区别,这让学习思路更清晰。
语法变化
- 内容类型(ContentType)不变
扩展名和ContentType仍然和HTML4保持一致:扩展名是“.html”或“.htm”,ContentType是“text/html”。 - DOCTYPE声明简化
不再是HTML4带版本的繁琐声明<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!doctype html>
- 指定文档编码
还是使用meta来指定文档编码,但也对HTML4做了简化,HTML4<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta charset="utf-8">
- 可以省略的标记元素
- 不允许写结束标记的元素
area、base、br、col、command、embed、hr、img、input、keygen、link、meta、param、source、track、wbr
- 可以省略结束标记的元素
li、dt、dd、p、rt、rp、optgroup、option、colgroup、thead、tbody、tfoot、tr、td、th
- 可以省略全部标记的元素
html、head、body、colgroup、tbody
- 不允许写结束标记的元素
- 具有boolean值的属性
有些属性是boolean类型的,如disabled、readonly等,只设属性不设置属性值、或把属性值设为任何值即使是空字符串都为真;而不设属性或把属性值设为false都为假。<!--只设属性不设属性值为真--> <input type="checkbox" checked> <!--属性值设为属性名为真--> <input type="checkbox" checked="checked"> <!--属性值设为true为真--> <input type="checkbox" checked="true"> <!--属性值设为空字符串为真--> <input type="checkbox" checked=""> <!--属性值即使设为false都为真--> <input type="checkbox" checked="false"> <!--属性设为任何值都为真--> <input type="checkbox" checked="ssss"> <!--不设属性为假--> <input type="checkbox">
- 省略引号
我们知道在指定属性值的时候,属性值两边既可以用双引号,也可以用单引号。而HTML5在此基础上做了一些改进,当属性值不包括空字符串、“<”、“>”、“=”、单引号、双引号等字符串时属性值两边的引号可以省略。如:<!--只设属性不设属性值为真--> <input type=checkbox checked> <!--属性值设为属性名为真--> <input type=checkbox checked=checked> <!--属性值设为true为真--> <input type=checkbox checked=true> <!--属性值设为空字符串为真--> <input type=checkbox checked=""> <!--属性值即使设为false都为真--> <input type=checkbox checked=false> <!--属性设为任何值都为真--> <input type=checkbox checked=ssss> <!--不设属性为假--> <input type=checkbox>
新增元素
- 新增结构元素
主体结构元素<section>:表示页面的一个内容区块; <article>:表示页面一块独立内容; <aside>:表示页面上<article>元素之外的但是与<article>相关的辅助信息; <nav>:表示页面中导航链接的部分;
<header>:表示页面中一个内容区块<section>或者整个页面的标题; <hgroup>:表示对于整个页面或者页面一个内容区块<section>的<header>进行组合; <footer>:表示对整个页面或者页面一个内容区块<session>的页脚; <figure>:表示一段独立的文档流内容; <figcaption>:表示<figure>元素的标题;
- 与结构无关的元素
<video>:用于定义视频,无需<object type="video/ogg">; <audio>:用于定义音频, 无需<object type="application/ogg">; <embed>:用于插入各种多媒体,可以各种格式; <mark>: 用于向用户在视觉上突出显示某些文字; <progress>:表示运行中的进程; <time>: 用于表示日期或者时间, 或者两者; <ruby>元素: 表示ruby注释; <rt>:表示字符的解释或者发音; <rp>:在<ruby>内使用,表示不支持<ruby>元素的浏览器所显示的内容; <wbr>元素:表示软换行,可以根据浏览器的窗口或者父级元素的宽度自己决定; <canvas>:表示画布,然后让脚本把想画的东西画在上面; <command>:表示命令按钮; <details>:表示当用户点击某元素时候想要得到的细节信息,常和<summary>元素联合使用; <summary>:是<details>元素的第一个子元素,表示了<details>的标题; <datalist>元素:表明了可以选择的数据列表,以下拉列表形式显示; <datagrid>:表明了可选的数据列表,但是以树列表的形式显示; <keygen>:表示生成密钥; <output>:表示不同类型的输出; <source>:表示为<video><audio>等媒体元素定义资源; <menu>:表示了菜单列表;
- 新增的<input>元素的类型
<email>: 表示必须输入email地址的文本输入框; <url>:表示必须输入url地址的文本输入框; <number>:表示必须输入数值的文本输入框; <range>:表示必须输入一定范围内数字的文本输入框; Date Pickers:HTML5拥有多个可供选取日期和时间的新型输入文本框如date、month、week、time、datetime等;
废除的元素
- 能用css代替的元素
basefont、big、center、font、s、strike、tt、u。这些元素纯粹是为画面展示服务的,HTML5中提倡把画面展示性功能放在css中统一编辑。 -
不再使用frame框架
frameset、frame、noframes。HTML5中不支持frame框架,只支持iframe框架,或者用服务器方创建的由多个页面组成的符合页面的形式,删除以上这三个标签。 -
只有部分浏览器支持的元素
applet、bgsound、blink、marquee等标签。 -
其他被废除的元素
废除rb,树勇ruby替代;
废除acronym使用abbr替代;
废除dir使用ul替代;
废除isindex使用form与input相结合的方式替代;
废除listing使用pre替代;
废除xmp使用code替代;
废除nextid使用guids;
废除plaintex使用“text/plian”(无格式正文)MIME类型替代;
新增的属性
-
表单相关的属性
- 对input(type=text)、select、textarea与button指定autofocus属性。它以指定属性的方式让元素在画面打开时自动获得焦点。
- 对input(type=text)、textarea指定placeholder属性,它会对用户的输入进行提示,提示用户可以输入的内容。
- 对input、output、select、textarea、button与fieldset指定form属性。它声明属于哪个表单,然后将其放置在页面的任何位置,而不失表单之内。
- 对input(type=text)、textarea指定required属性。该属性表示用户提交时进行检查,检查该元素内必定要有输入内容。
- 为input标签增加几个新的属性:autocomplete、min、max、multiple、pattern与step。还有list属性与datalist元素配合使用;datalist元素与autocomplete属性配合使用。multiple属性允许上传时一次上传多个文件; pattern属性用于验证输入字段的模式,其实就是正则表达式。step 属性规定输入字段的合法数字间隔(假如 step="3",则合法数字应该是 -3、0、3、6,以此类推),step 属性可以与 max 以及 min 属性配合使用,以创建合法值的范围。
- 为input、button元素增加formaction、formenctype、formmethod、formnovalidate与formtarget属性。用户重载form元素的action、enctype、method、novalidate与target属性。为fieldset元素增加disabled属性,可以把它的子元素设为disabled状态。
- 为input、button、form增加novalidate属性,可以取消提交时进行的有关检查,表单可以被无条件地提交。
-
链接相关属性
- 为a、area增加media属性。规定目标 URL 是为什么类型的媒介/设备进行优化的。该属性用于规定目标 URL 是为特殊设备(比如 iPhone)、语音或打印媒介设计的。该属性可接受多个值。只能在 href 属性存在时使用。
- 为area增加herflang和rel属性。hreflang 属性规定在被链接文档中的文本的语言。只有当设置了 href 属性时,才能使用该属性。注释:该属性是纯咨询性的。rel 属性规定当前文档与被链接文档/资源之间的关系。只有当使用 href 属性时,才能使用 rel 属性。
- 为link增加size属性。sizes 属性规定被链接资源的尺寸。只有当被链接资源是图标时 (rel="icon"),才能使用该属性。该属性可接受多个值。值由空格分隔。
- 为base元素增加target属性,主要是保持与a元素的一致性。
-
其他属性
- 为ol增加reversed属性,它指定列表倒序显示;
- 为meta增加charset属性;
- 为menu增加type和label属性。label为菜单定义一个课件的标注,type属性让才当可以以上下文菜单、工具条与列表cande但三种形式出现。
- 为style增加scoped属性。它允许我们为文档的指定部分定义样式,而不是整个文档。如果使用 "scoped" 属性,那么所规定的样式只能应用到 style 元素的父元素及其子元素。
-
为script增减属性,它定义脚本是否异步执行。async 属性仅适用于外部脚本(只有在使用 src 属性时)有多种执行外部脚本的方法:
如果 async="async":脚本相对于页面的其余部分异步地执行(当页面继续进行解析时,脚本将被执行);
如果不使用 async 且 defer="defer":脚本将在页面完成解析时执行;
如果既不使用 async 也不使用 defer:在浏览器继续解析页面之前,立即读取并执行脚本; - 为html元素增加manifest,开发离线web应用程序时他与API结合使用,定义一个URL,在这个URL上描述文档的缓存信息。
- 为iframe增加撒个属性,sandbox、seamless、srcdoc。用来提高页面安全性,防止不信任的web页面执行某些操作。
废除的属性
在HTML 4中使用的属性 使用该属性的元素 在HTML 5中的替代方案 rev link、a rel charset link、a 在被链接的资源的中使用HTTP Content-type头元素 shape、coords a 使用area元素代替a元素 longdesc img、iframe 使用a元素链接到校长描述 target link 多余属性,被省略 nohref area 多余属性,被省略 profile head 多余属性,被省略 version html 多余属性,被省略 name img id scheme meta 只为某个表单域使用scheme archive、chlassid、codebose、codetype、declare、standby object 使用data与typc属性类调用插件。需要使用这些属性来设置参数时,使用param属性 valuetype、type param 使用name与value属性,不声明之的MIME类型 axis、abbr td、th 使用以明确简洁的文字开头、后跟详述文字的形式。可以对更详细内容使用title属性,来使单元格的内容变得简短 scope td 在被链接的资源的中使用HTTP Content-type头元素 align caption、input、legend、div、h1、h2、h3、h4、h5、h6、p 使用CSS样式表替代 alink、link、text、vlink、background、bgcolor body 使用CSS样式表替代 align、bgcolor、border、cellpadding、cellspacing、frame、rules、width table 使用CSS样式表替代 align、char、charoff、height、nowrap、valign tbody、thead、tfoot 使用CSS样式表替代 align、bgcolor、char、charoff、height、nowrap、valign、width td、th 使用CSS样式表替代 align、bgcolor、char、charoff、valign tr 使用CSS样式表替代 align、char、charoff、valign、width col、colgroup 使用CSS样式表替代 align、border、hspace、vspace object 使用CSS样式表替代 clear br 使用CSS样式表替代 compace、type ol、ul、li 使用CSS样式表替代 compace dl 使用CSS样式表替代 compace menu 使用CSS样式表替代 width pre 使用CSS样式表替代 align、hspace、vspace img 使用CSS样式表替代 align、noshade、size、width hr 使用CSS样式表替代 align、frameborder、scrolling、marginheight、marginwidth iframe 使用CSS样式表替代 autosubmit menu
全局属性
HTML5中新增了一个“全局属性”的概念,所谓全局属性,是指可以对任何元素都使用的属性。
-
contentEditable
该属性允许用户编辑元素中的内容,其中该元素必须是可获得鼠标焦点的元素,该属性还具有继承性,没设置该属性的子元素继承父元素的属性。 -
designMode
该属性置顶整个页面是否可编辑,它只能在脚本中设置on或off,但设置为on时,整个页面支持contentEditable属性的元素都可编辑; -
hidden
所有元素均允许使用一个hidden的属性,该属性通知浏览器不渲染该元素,使该元素处于不可见状态,但元素在Dom中存在; -
spellcheck
拼写检查,但当元素被设为readOnly或disabled,则不拼写检查; -
tabindex
tab键遍历顺序;但它还有一个妙用:当元素不支持获得焦点,可以添加tabindex属性,如果不想tab键获得焦点,可以把值设置为-1即可;