# 一、HTML5的新特性
# 1. 声明方式
HTML4和HTML5的区别
最重要的标志,就是看类型声明;
- HTML5是用
<!DOCTYPE html>
这种的声明 - HTML4是用
<! DOCTYPE html PUBLIC “-//W3C//DTD XHTML 4.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
这种的声明;
<!DOCTYPE>
声明推荐是放在 HTML 文档的第一行,位于 <html>
标签之前。
为什么HTML和HTML5声明的类型不同?
- 在 HTML4 中,
<!DOCTYPE>
声明引用 DTD,因为 HTML4 基于 SGML。DTD 规定了标记语言的规则,这样浏览器才能正确地呈现内容。 - HTML5 不基于 SGML,所以不需要引用 DTD。
# 2. 移除的元素
- 纯表现的元素: basefont 、 big 、 center 、 font 、 s 、 strike 、 tt 、 u
- 对可⽤性产⽣负⾯影响的元素: frame 、 frameset 、 noframes
# 3. 新增的元素
# 3.1 语义化标签
常见标签和应用场景
header
如果页面中有一块包含一组介绍性或导航的区域, 应该用 header 元素对其进行标记。
一个页面可以有任意数量的 header 元素, 它们的含义可以根据其上下文而有所不同。
例如,处于页面顶端或接近这个位置的 header 可能代表整个页面的页眉(有时称为 页头)
通常,页眉包括网站Logo、主导航和其他全站链接,甚至搜索框。这是 header 元素最常见的使用形式。
footer
页面底部的页脚(通常包括版权声明, 可能还包括指向隐私政策页面的链接以及其他类似的内容)。
HTML5 的 footer 元素可以用在这样的地方, 但它同 header 一样, 还可以用在其他的地方。
footer 元素只有当它最近的祖先是 body 时, 它才是整个页面的页脚。
article
<article>
元素可以是 一篇论坛帖子、一篇杂志或报纸文章、一篇博客详情、一则用户提交的评论或者任何其他独立的内容项。
<article>
元素用来包裹独立的内容片段。
最明显的例子 就是博客正文。
details
details 标签定义元素的细节,用户可进行查看,或通过点击进行隐藏。
与 legend 一起使用,来制作 detail 的标题。该标题对用户是可见的,当在其上 点击时可打开或关闭 detail。
mark
mark 主要用来在视觉上向用户呈现那些需要突出的文字。mark 标签的一个比较 典型的应用就是在搜索结果中向用户高亮显示搜索关键词。
# 3.2 音频、视频标签
音频、视频 API(audio,video)
- audio
- video
<embed>
作为外部应用的容器<track>
标签为诸如 video 元素之类的媒介规定外部文本轨道。用于规定字幕文件或其他包含文本的文件,当媒介播放时,这些文件是可见的。<source>
对多种媒体源的支持很有帮助
# 3.3 表单控件
HTML5 拥有多个新的表单输入类型。这些新特性提供了更好的输入控制和验证。
- color
- date
- datetime
- datetime-local
- month
- number
- range
- search
- tel
- time
- url
- week
具体参考:HTML5 新的 Input 类型
# 3.4 五个API
localStorage/sessionStorage
localStorage
本地离线存储 localStorage 长期存储数据,浏览器关闭后数据不丢失;
只读的 localStorage 属性允许你访问一个 Document 源(origin)的对象 Storage;存储的数据将保存在浏览器会话中。
localStorage 类似 sessionStorage,但其区别在于:存储在 localStorage 的数据可以长期保留;而当页面会话结束——也就是说,当页面被关闭时,存储在 sessionStorage 的数据会被清除 。
具体参考:https://developer.mozilla.org/zh-CN/docs/Web/API/Window/localStorage
sessionStorage
sessionStorage 的数据在浏览器关闭后自动删除
sessionStorage 属性允许你访问一个 session Storage 对象。它与 localStorage 相似,不同之处在于 localStorage 里面存储的数据没有过期时间设置,而存储在 sessionStorage 里面的数据在页面会话结束时会被清除。页面会话在浏览器打开期间一直保持,并且重新加载或恢复页面仍会保持原来的页面会话。在新标签或窗口打开一个页面时会复制顶级浏览会话的上下文作为新会话的上下文,这点和 session cookies 的运行方式不同。
具体参考:https://developer.mozilla.org/zh-CN/docs/Web/API/Window/sessionStorage
画布/Canvas
演示:https://wow.techbrood.com/fiddle/30964
地理/Geolocation
地理位置 API 允许用户向 Web 应用程序提供他们的位置。出于隐私考虑,报告地理位置前会先请求用户许可。
类似Google搜索页面,底部显示位置的样子,还有点餐的,我的位置相关的;
延伸:如果我们打算根据不同的地理位置加载不同的资源,可以借助第三方的IP库;参考 JavaScript 获取用户客户端的 ip 地址,邮编,城市名;
拖拽释放
HTML拖拽释放 (Drag and drop) 接口使应用程序能够在浏览器中使用拖放功能。
例如,通过这些功能,用户可以使用鼠标选择可拖动元素,将元素拖动到可放置元素,并通过释放鼠标按钮来放置这些元素。
可拖动元素的一个半透明表示在拖动操作期间跟随鼠标指针。
详情参考 HTML 拖放 API
在线浏览拖拽效果:https://mdn.github.io/dom-examples/drag-and-drop/copy-move-DataTransfer.html
核心
功能:可以把一个元素拖动放到目标区域,并且可以定义它的中间效果;
它的实现过程有:
- 1.确定什么是可拖动的源
- 2.定义拖动元源
- 定义拖动数据
- 定义拖动图像
- 定义拖动效果
- 3.定义一个放置区
- 4.处理放置效果
- 5.拖动结束
Web Workers
webworker, websocket, Geolocation
当在 HTML 页面中执行脚本时,页面的状态是不可响应的,直到脚本已完成。
web worker 是运行在后台的 JavaScript,独立于其他脚本,不会影响页面的性能。您可以继续做任何愿意做的事情:点击、选取内容等等,而此时 web worker 在后台运行。
具体参考:HTML5 Web Workers
核心
Web Worker 的作用,就是为 JavaScript 创造多线程环境,允许主线程创建 Worker 线程,将一些任务分配给后者运行。
在主线程运行的同时,Worker 线程在后台运行,两者互不干扰。等到 Worker 线程完成计算任务,再把结果返回给主线程。
这样的好处是,一些计算密集型或高延迟的任务,被 Worker 线程负担了,主线程(通常负责 UI 交互)就会很流畅,不会被阻塞或拖慢。
# 3.5 其他
推荐一个HTML和HTML5的速查,可以了解一下:HTML 速查表
# 4. Doctype作用?严格模式与混杂模式如何区分?它们有何差异?
# 4.1 Doctype作用
<!DOCTYPE>声明叫做文件类型定义(DTD),声明的作用为了告诉浏览器该文件的类型。让浏览器解析器知道应该用哪个规范来解析文档。<!DOCTYPE>声明必须在 HTML 文档的第一行,这并不是一个 HTML 标签。
# 4.2 严格模式与混杂模式如何区分?它们有何意义?
严格模式[Standards]: 又称标准模式,是指浏览器按照 W3C 标准解析代码。
混杂模式[Quirks]: 又称怪异模式或兼容模式,是指浏览器用自己的方式解析代码。
如何区分: 浏览器解析时到底使用严格模式还是混杂模式,与网页中的 DTD 直接相关。
1、如果文档包含严格的 DOCTYPE ,那么它一般以严格模式呈现。(严格 DTD ——严格模式) 2、包含过渡 DTD 和 URI 的 DOCTYPE ,也以严格模式呈现,但有过渡 DTD 而没有 URI (统一资源标识符,就是声明最后的地址)会导致页面以混杂模式呈现。(有 URI 的过渡 DTD ——严格模式;没有 URI 的过渡 DTD ——混杂模式) 3、DOCTYPE 不存在或形式不正确会导致文档以混杂模式呈现。(DTD不存在或者格式不正确——混杂模式) 4、HTML5 没有 DTD ,因此也就没有严格模式与混杂模式的区别,HTML5 有相对宽松的语法,实现时,已经尽可能大的实现了向后兼容。( HTML5 没有严格和混杂之分)
意义: 严格模式与混杂模式存在的意义与其来源密切相关,如果说只存在严格模式,那么许多旧网站必然受到影响,如果只存在混杂模式,那么会回到当时浏览器大战时的混乱,每个浏览器都有自己的解析模式。
# 5. 在 HTML5 页面嵌入音频
HTML 5 包含嵌入音频文件的标准方式,支持的格式包括 MP3、Wav 和 Ogg:
HTML <audio>
元素用于在文档中表示音频内容。
<audio> 元素可以包含多个音频资源, 这些音频资源可以使用 src 属性或者