H5开发(一):HTML5的概述、语法和属性
adinnet/2017-08-29 17:08/网站开发
HTML5 概述
HTML5 是 HTML 标准的下一个重要版本,用来替代 HTML 4.01,XHTML 1.0 以及 XHTML 1.1。HTML5 也是一种在万维网上构建和呈现内容的标准。
HTML5 是万维网联盟(W3C)和网页超文本技术工作小组(WHATWG)合作的产物。
这一新标准中加入了视频播放和拖放等特性,过去这都依赖于第三方浏览器插件,比如 Adobe Flash,Microsoft Silverlight 以及 Google Gears。
浏览器支持
更新版 Apple Safari,Mozilla FireFox 和 Opera 支持大部分 HTML5 特性,IE9 也支持一些 HTML5 的功能。
预装在 iPhones,iPads 和 Android 手机上的手机浏览器都对 HTML5 有良好的支持。
新特性
HTML5 引入了许多新元素和属性帮助我们构建现代化的网站。下面是 HTML5 引入的主要特性:
新的语义化元素: 比如 <header>,<footer> 和 <section>。
表单 2.0: 改进了 HTML Web 表单,为 <input> 标签引入了一些新的属性。
持久的本地存储: 为了不通过第三方插件实现。
WebSocket: 用于 Web 应用程序的下一代双向通信技术。
服务器推送事件: HTML5 引入了从 Web 服务器到 Web 浏览器的事件,也被称作服务器推送事件(SSE)。
Canvas: 支持用 JavaScript 以编程的方式进行二维绘图。
音频和视频: 在网页中嵌入音频或视频而无需借助第三方插件。
地理定位: 用户可以选择与我们的网页共享他们的地理位置。
微数据: 允许我们创建 HTML5 之外的自定义词汇表,以及使用自定义语义扩展网页。
拖放: 把同一网页上的条目从一个位置拖放到另一个位置。
向后兼容
HTML5 被设计为尽可能的对现有浏览器向后兼容。新特性都是建立在现有特性的基础上,并且允许我们为旧浏览器提供备用内容。
建议使用少量的 JavaScript 代码检测单个 HTML5 特性的支持度。
HTML5 语法
HTML5 有“自己的” HTML 语法,它与已经发布在网络上的 HTML 4 以及 XHTML1 文档兼容,但是不兼 HTML 4 中更复杂的 SGML 特性。
HTML5 并没有 XHTML 中需要小写标签名,属性要带引号,属性必须有一个值以及必须闭合所有空元素的语法规则。
但是 HTML5 更具灵活性,支持下列形式:
标签名大写。
属性的双引号可选。
属性值可选。
闭合空元素可选。
DOCTYPE
在老版本的 HTML 中,DOCTYPE 很长,因为 HTML 语言是基于 SGML 的,需要引用一个 DTD。
HTML5 作者可以使用简单的语法来指定如下形式的 DOCTYPE:
<!DOCTYPE html>
上述语法不区分大小写。
字符编码
HTML5 作者可以使用简单的语法指定字符编码,如下所示:
<meta charset="UTF-8">
上述语法不区分大小写。
<script> 标签
常见的做法是给 script 元素添加一个值为 "text/javascript" 的 type 属性,如下所示:
<script type="text/javascript" src="scriptfile.js"></script>
HTML5 移除了所需的额外信息,我们可以使用如下所示的简单语法:
<script src="scriptfile.js"></script>
<link> 标签
目前为止我们这样编写 <link>:
<link rel="stylesheet" type="text/css" href="stylefile.css">
HTML5 移除了所需的额外信息,我们可以使用如下所示的简单语法:
<link rel="stylesheet" href="stylefile.css">
HTML5 元素
HTML5 元素使用起始标签和结束标签标记。标签使用尖括号之间的标签名限定。
起始标签和结束标签的区别在于后者标签名前面包含一个斜杠。
下面是一个 HTML5 元素示例:
<p>...</p>
HTML5 标签名不区分大小写,可以全部大写或者混合使用,虽然更常见的约定是始终使用小写。
大多数元素都包含一些内容,比如 <p>...</p> 包含一个段落。但是,有些元素不能包含任意内容,它们被称作空白元素。比如,br,hr,link 和 meta 等等。
这里有一个完整的 HTML5 元素列表。
HTML5 属性
元素可以包含属性(attributes),用来给一个元素设置各种属性(properties)。
有些属性被定义为全局的,可以用在任何元素上,而其他的被定义为元素特有的。所有的属性都有一个名称和一个值,看起来如下面的示例所示。
下面是一个使用 HTML5 属性的例子,演示了如何用名为 class 的属性和值 “example” 标记一个 div 元素:
<div class="example">...</div>
属性只能在起始标签中指定,绝对不能用在结束标签中。
HTML5 属性不区分大小写,可以全部大写或者混合使用,尽管更常见的约定是始终使用小写。
这里有一个完整的 HTML5 属性列表。
HTML5 文档
为了得到更好的结构,引入了下面的标签:
section: 这个标签表示一个通用的文档或者应用程序节。它可以和 h1-h6 一起使用来表示文档结构。
article: 这个标签表示文档内容的一个独立块,比如博客条目或者报纸上的文章。
aside: 这个标签表示与页面其他部分略微相关的内容块。
header: 这个标签表示一个节的头部。
footer: 这个标签表示一个节的脚注,可以包含作者,版权等信息。
nav: 这个标签表示用于导航文档的节。
dialog: 这个标签可以用于标记会话。
figure: 这个标签可以用于关联标题和某些嵌入内容,比如图表和视频。
一个 HTML5 文档的标记看起来就像下面这样:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>...</title> </head> <body> <header>...</header> <nav>...</nav> <article> <section> ... </section> </article> <aside>...</aside> <footer>...</footer> </body>
HTML5 属性
正如 HTML5 语法中所阐述的,元素可以包含属性(attributes)给一个元素设置各种属性(properties)。
有些属性被定义为全局的,可以用在任何元素上,而其他的被定义为元素特有的。所有的属性都有一个名称和一个值,看起来如下面的示例所示。
下面是一个使用 HTML5 属性的例子,演示了如何用名为 class 的属性和值 “example” 标记一个 div 元素:
<div class="example">...</div>
属性只能在起始标签中指定,绝对不能用在结束标签中。
HTML5 属性不区分大小写,可以全部大写或者混合使用,尽管更常见的约定是始终使用小写。
标准属性
下面列出的属性几乎所有的 HTML5 标签都支持。
属性 选项 功能 accesskey 用户自定义 定义访问元素的键盘快捷键。 align right, left, center 水平对齐标签。 background URL 在元素后面设置一个背景图像。 bgcolor 数值,十六进制值,RGB值 在元素后面设置一个背景颜色。 class 用户定义。 分类一个元素,便于使用级联样式表。 contenteditable true, false 定义用户是否可以编辑元素的内容。 contextmenu Menu id 为元素定义上下文菜单。 data-XXXX 用户定义。 自定义属性。 HTML 文档的作者可以定义自己的属性。 自定义属性必须以 "data-" 开头。 draggable true,false, auto 定义用户是否可以拖动元素。 height 数字值 定义表格,图像或表格单元的高度。 hidden hidden 定义元素是否应该可见。 id 用户定义。 命名元素,便于使用级联样式表。 item 元素列表。 用于组合元素。 itemprop 条目列表。 用于组合条目。 spellcheck true, false 定义元素是否必须有拼写或错误检查。 style CSS 样式表。 给元素定义内联样式。 subject 用户定义 id。 定义元素关联的条目。 tabindex Tab number 定于元素的 tab 键顺序。 title 用户定义。 元素的“弹出”标题。 valign top, middle, bottom HTML 元素内标签的垂直对齐方式。 width 数字值。 定义表格,图像和表格单元的宽度。 完整的 HTML5 标签列表以及相关的属性请参考 HTML5 标签。
自定义属性
HTML5 还引入了一个新特性,就是可以添加自定义的数据属性。
自定义数据属性以 data- 开头,基于我们的需求命名。下面是一个简单的例子:
<div class="example" data-subject="physics" data-level="complex"> ... </div>
上面的例子中两个叫做 data-subject 和 data-level 的自定义属性在 HTML5 中是完全有效的。我们还可以使用 JavaScript API 或者在 CSS 中以获取标准属性类似的方式获取它们的值。