HTML5 文档定义Doctype

本文深入探讨了HTML文档类型定义的概念,解释了标准模式与怪异模式的区别,并介绍了如何正确声明文档类型定义以确保网页被正确解析。同时,文章还提供了关于文档类型定义在不同浏览器中的作用和常见误区的解答。

======================================================
注:本文源代码点此下载
======================================================

我们都知道,在编写一个标准化网页时,第一行的文档定类型义是必须的。其缘由是,浏览器厂商为了保证标准化之后浏览器可以向后兼容,即依然可以正确解析过去没有按照标准规范编写的网页,提供了两套模式解析方案:标准模式和怪异模式。

要简单介绍这两种模式的不同之处,有一个经典的例子,就是ie框模型的解析。怪异模式下元素的宽度包括了padding和border的总和,而标准模式下不会包括它们。

所以,我们之后必须要在网页第一行写上类似这样的文档类型定义,来保证浏览器会以正确模式来解析网页:

另外,也提一下一些细节:

就算写了文档类型定义,但是如果在文档类型定义之前出现非空格和换行字符,浏览器也会激活怪异模式。

激活怪异模式的方式有很多种,不同浏览器有不同的激活方式。但是不写文档类型定义是最通用也是最简单的一种方式。

不要认为写了文档类型定义就表示一定不进入怪异模式,因为有某些文档类型定义方式就是用来激活怪异模式的。这篇文章《activating browser modes with doctype》有详细讲解。

许多高版本的现代浏览器已经不能进入怪异模式了,这倒也不是什么坏事。

我估计很多人在之前都会和我一样有一个误区:要让网页使用标准模式来解析,必须完整一字不错地把标准模式的文档类型定义写出来。这个想法倒没有错,错的是我们还认为,如果写错了,网页可能会进入怪异模式。而事实上,浏览器只要看到了文档类型定义标签:,就已经默认是标准模式(严格模式)了,然后它会继续看其他信息,如果信息正确,它会激活相应的解析模型,如果信息不正确或者索性没有下文了,那文档就会直接按照标准模式来解析。

所以,我们在编写html5网页的时候,用来声明文档类型定义是有两层含义的:

对于尚未支持html5的浏览器,它无法获得具体文档类型定义,默认激活标准模式,它会按照标准模式来解析文档

对于已经支持html5的浏览器,它会检测到这是html5的文档类型声明,激活相应解析模式,使html5特性可以表现出来

参考资料

quirks mode and strict mode

为什么使用

doctype switches support in opera presto 2.6

mozilla's doctype sniffing


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值