zoukankan      html  css  js  c++  java
  • 读书笔记:HTML5的Doctype

    我们在HTML文档书写中,在开头总会添加一句<!DOCTYPE>,我们大概粗略的知道这是用来标识文档类型的。而在老版本的HTML中,如HTML4规范中,需要写:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

    但这样的语句很难记忆,它想告诉浏览器“这个文档是XHTML1.0的文档”,在HTML5中简化了规范。

    但是,只是看到这个DOCTYPE,可能不知道到底要怎么告诉浏览器具体的信息,所以这到底该怎么解释?

    其实这个DOCTYPE并不是写给浏览器看的,而是给验证器,我们在开头写下XHTML1.0是为了让验证器按照这个来验证文档。

    而对浏览器来说,什么版本都无所谓,浏览器不会因为某个标签不存在某个版本的规范中而不被解析,因为浏览器遵守伯斯塔尔法则——“对自己严格,对别人宽容”,所以浏览器会支持所有版本的HTML,会尽量让我们任性,所以这就是为什么我们书写的HTML很多并不规范,但任然不影响它们在网页中被正常解析(但为了养成一个良好的习惯,我们也应该严格要求自己)。话再说回来,验证器会在意这个格式类型,这就是DOCTYPE存在的原因。

    HTML5 不基于 SGML,所以不需要引用 DTD。

    在 HTML 4.01 中,<!DOCTYPE> 声明引用 DTD,因为 HTML 4.01 基于 SGML。DTD 规定了标记语言的规则,这样浏览器才能正确地呈现内容。

    SGML:标准通用标记语言。

    HTML5的一个设计原理,就是要求它前后兼容,以往的将来的都应该兼容,因此把一个版本号放在DOCTYPE里面没有多大的意义,对验证器也一样。

    但是也不是说DOCTYPE完全可以不用存在。当初微软在引入CSS的时候,它的浏览器率先支持了CSS,也推出了自己的盒子模型标准。但是标准发布后,两种盒子模型截然不同。微软希望支持标准,也希望能保留自己的东西,所以就利用了DOCTYPE。在文档中加入DOCTYPE就表示触发标准模式。但是这不是DOCTYPE发明的本意。

    总之,HTML5希望给用户一个简短的DOCTYPE标签。

  • 相关阅读:
    MySQL的语句执行顺序
    linux 常用命令
    scala 样例类转json字符串
    Hadoop之——HDFS的RPC机制
    Hadoop之——机架感知配置
    hadoop-2.6.0-cdh5.14.0 集群高可用搭建
    spark 运行在YARN上参数配置
    日志框架SLF4J和log4j以及logback的联系和区别
    spark的rdd.saveastextfile可以追加写入hdfs同一个文件吗?
    ojdbc14-10.2.0.1.0 jar包下载
  • 原文地址:https://www.cnblogs.com/rimochiko/p/7487241.html
Copyright © 2011-2022 走看看