HTML5入门之标签篇《下》 »
doctype, charset & XHTML-style markup
In HTML, you can already reduce content size significantly by omitting optional tags. HTML 5, which is still under development, offers you a couple more options to decrease your file size beside leaving out optional stuff. Here we’ll feature some basic measures to reduce content size a bit more, plus the async and defer attributes useful to improve script execution.
Author: Jens Meiert, Google Webmaster
根据上面引用的内容我们知道了,HTML5简化了HTML中那些无关紧要的声明和减小 HTML 文件的大小,以达到提速的目的。
对比一下XHTML 1.0 Transitional的规范,html5基本上没有XHTML 1.0 Transitional严格的要求,并且简化了很多东西。
DTD / 文档类型定义
文档声明更简单了。HTML 5中,您可以设置 文档类型 只是说明(以任何形式,DTD是不区分大小
1 2 |
<!DOCTYPE html> |
与此相比,
1 2 3 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!--或者--> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
你会发现,HTML 5 DTD是短得多,变得简单了。
xmlns 属性 / 命名空间
xmlns 属性可以在文档中定义一个或多个可供选择的命名空间。该属性可以放置在文档内任何元素的开始标签中。该属性的值类似于 URL,它定义了一个命名空间,浏览器会将此命名空间用于该属性所在元素内的所有内容。
HTML5不需要声明命名空间
1 | <html xmlns="http://www.w3.org/1999/xhtml" lang="en"> |
在HTML5中,这样写:
1 | <html lang="en"> |
Encoding / 编码
当您指定您的文档的编码,HTML5 的编码声明使用起来就更容易,也更轻巧:
1 | <meta charset="utf-8"> |
以前会这么做:
1 | <meta http-equiv="content-type" content="text/html; charset=utf-8"> |
您的浏览器通常都知道,它得使用HTML处理。
type attributes / type 属性
在今天的 HTML 5 中,你可以去除声明 MIME 类型的 type 属性,比如
1 | type="text/css" |
或
1 | type="text/javascript" |
你可以用
1 2 3 | <script> //写一些脚本 </script> |
替代
1 | <script type="text/javascript"></script> |
用
1 2 3 | <style> /*写一些样式*/ </style> |
替代
1 | <style type="text/css"></style> |
在所有类型的页面中(甚至是 XHTHML)你可以省略
type="text/css"
HTML 5 使这一切变得更简单。
提示:在 HTML 5 中,所有元素都不支持 style 属性,如需为一个元素添加样式,请在 style 元素中使用 scoped 属性。
注释:如果没有定义 scoped 属性,则 < style> 元素必须是 head 元素的子元素,或者是(属于 head 元素的子元素的) noscript 元素的子元素。
async (and defer) / 用 HTML 5 来提升性能
async (and defer) 属性与将在与脚本元素一起使用。
要解释为什么这些属性会提升性能,最好是看一下未使用时发生了什么 — 各自的脚本在用户代理(浏览器,下同)继续解析页面前将被提取并直接执行,有时这个行为是我们想要的,有时不是。
新的 async 属性允许各自的脚本在可用时异步执行。HTML 4 中已经包含 defer 属性,指出 defer “对用户代理提供一个暗示:脚本不产生任何文档内容(比如,在Javascript 中没有 document.write ),这样,用户代理会继续解析并渲染”。
如果不使用 async 属性而只使用 defer,脚本在页面解析完成时已经执行。即使指定了 async 属性,也可同时指定defer 属性。这使得那些旧的只理解defer 的浏览器来回退 defer 行为而非默认的同步阻塞行为。
参考文献:
– The End –