!Doctype的作用,严格模式和混杂模式的区别、以及如何触发两种模式

!Doctype的作用:
<!DOCTYPE>声明叫做文档类型DTD,位于HTML文档中的第一行,处于 <html> 标签之前,不属于HTML文档标签。声明的作用是为了告诉浏览器该文件的类型,告知浏览器的解析器用什么文档标准解析这个文档。DOCTYPE不存在或格式不正确会导致文档以兼容模式呈现。
HTML5为什么只需写<!DOCTYPE HTML>
因为html5不基于SGML,因此不需要对DTD进行引用,但需要doctype来规范浏览器的行为。
严格模式和混杂模式的区别:
1、定义
严格模式:又称标准模式,是指浏览器按照W3C标准解析代码,按照规范呈现页面。
混杂模式:又称怪异模式或兼容模式,是指浏览器用自己的方式解析代码,页面以一种比较宽松的向后兼容的方式显示。

判断是标准还是怪异: 方法如下,执行代码 alert(window.top.document.compatMode) ;
//BackCompat 表示怪异模式
//CSS1Compat 表示标准模式

2、区分:
浏览器根据DOCTYPE是否存在以及使用的哪种DTD来选择要使用的呈现方法

  • 如果XHTML、HTML 4.01文档包含形式完整的DOCTYPE,那么它一般以标准模式呈现。
  • 包含过渡 DTD 和 URI 的 DOCTYPE ,也以严格模式呈现,但有过渡 DTD 而没有 URI (统一资源标识符,就是声明最后的地址)会导致页面以混杂模式呈现。(有 URI 的过渡 DTD ——严格模式;没有 URI 的过渡 DTD ——混杂模式)
  • DOCTYPE 不存在或形式不正确会导致文档以混杂模式呈现。(DTD不存在或者格式不正确——混杂模式)
  • HTML5 没有 DTD ,因此也就没有严格模式与混杂模式的区别,HTML5 有相对宽松的语法,实现时,已经尽可能大的实现了向后兼容。( HTML5 没有严格和混杂之分)
    意义:严格模式与混杂模式存在的意义与其来源密切相关,如果说只存在严格模式,那么许多旧网站必然受到影响,如果只存在混杂模式,那么会回到当时浏览器大战时的混乱,每个浏览器都有自己的解析模式。
    3、严格模式与混杂模式的语句解析不同点
    1)盒模型的高宽包含内边距padding和边框border
    混杂模式下盒子模型的高宽包括padding和border,而W3C标准中设置一个元素的高宽指的是content的高宽;
    2)可以设置行内元素的高宽
    混杂模式下可以设置行内元素的高度,而标准模式下不生效。
    3)可设置百分比的高度
    标准模式下,一个元素的高度是由其包含的内容来决定的,如果父元素没有设置高度,子元素设置一个百分比的高度无效。
    4)用margin:0 auto设置水平居中在IE下会失效
    标准模式下使用margin:0 auto;可以使元素水平居中,但是在混杂模式下会失效,混杂模式下的解决办法,用text-align属性
    5)混杂模式下设置图片的padding会失效
    6)混杂模式下Table中的字体属性不能继承祖先元素的设置
    7)混杂模式下white-space:pre会失效
    8)当一个块元素div或一个单元格中包含的内容只有图片时,在标准模式下,图片底部都会有3px的空白;但在混杂模式下,浏览器中div距图片底部默认没有空白。
    (标准模式下的底部3px空白,与img vertial-align的默认值baseline有关,去除设置vertial-align为一个不是baseline的合法值即可。)
    9)overflow溢出默认值问题。标准模式下,溢出元素是溢出可见的,超出部分的内容呈现在包含它的元素之外;但在混杂模式下,溢出元素会自适应内容的尺寸。
    4、如何触发
    根据是否存在!DOCTYPE判断,根据!DOCTYPE的类型也可判断。
    参考此处
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值