出现的背景

在很久之前的浏览器,还是Netscape Navigator和 Microsoft Internet Explorer的时候,页面主要就是为这两个浏览器写的。但是到了今天了,firefox、chrome、opera等浏览器的兴起,再加上W3C创建了web标准。本来要是早统一标准,我们就不用为一个浏览器兼容的问题搞得头昏脑涨。但是一些网站还是主要为之前的Netscape和Microsoft浏览器做的,所以如果用我们现在的web标准去要求浏览器厂家实现的话,之前的一些网站就不能用了,所以浏览器就出现可以有两种模式可以切换,实现向后兼容。或者说,浏览器开发商又要对标准化的HTML、CSS支持,又要对之前做的网站也就是非标准的网站实现向后兼容。

如何触发这两种模式

说到这里,我们说说标签的作用,之前对HTML标签还不怎么感冒的,就看了一些W3C的介绍,然后就做了一些可用的界面,觉得HTML好像挺简单似的,入门没什么压力呀。等到现在,越来越认识到HTML作为Web前端的结构,是一个页面的骨架,确实很重要,还有加上了语义化标签,渐渐地对HTML刮目相看。回到正题,我想说的是也是我忽略的一个标签,可能是看了往年大公司面试题的原因吧,觉得它似乎挺重要的。

DOCTYPE标签的使用跟每个属性的作用

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  • html:表示该文档的跟元素为html
  • PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 一个文档类型的公共标识符,是一个xhtml1.0的过渡文档。解析到这里,浏览器就去寻找这个DTD,如果找到了就用这个DTD的要求去渲染你的网页,如果找不到呢?看下面
  • http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd 浏览器找不到DTD的话,就去到这个url那里下载DTD并使用。

DOCTYPE标签的作用

  • 跟浏览器说要用那个DTD来解析我的网页
  • 能对界面进行有效性验证
  • 实现怪异和标准模式的切换

我们把重点放在两种模式的切换

  • <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    这个将会触发浏览器的标准模式,因为该DOCTYPE标签包括了DTD、URI; 还有就是DOCTYPE标签有DTD但是没有URI也会触发浏览器的标准模式

  • <!DOCTYPE html PUBLIC >

    这个会触发浏览器的怪异模式,因为该DOCTYPE标签中没有DTD、URI。 这里再说明一点就是如果DOTYPE标签没有DTD但是有URI还是会触发怪异模式

  • <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    
    <!-- This comment will put IE 6, 7, 8, and 9 in quirks mode -->
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
    "http://www.w3.org/TR/html4/strict.dtd">
    

    这两个都会在IE6中触发怪异模式,因为IE6一定要DOCTYPE为文档的第一个元素才肯触发标准模式

  • 更为具体的各种浏览器DOCTYPE的触发模式的转换,可以看Activating Browser Modes with Doctype

检测当前浏览器使用的模式

我现在只能想到一种方式去检测浏览器的模式,就是用js来实现的,如果在看的您要是有更好的idea的话,请告诉我!其实它浏览器的兼容性还是可以的。

javascript代码:document.compatMode
(1)BackCompat:标准兼容模式关闭;
(2)CSS1Compat:标准兼容模式开启

标准模式下的页面与怪异模式下的页面区别

  • 在height、width应用的元素有区别

    <span style="height: 40px; width: 200px; background: red;margin:10px">我是行内元素span,但是我可以在quirks模式下用width、height属性</span>

    在IE的怪异模式下,我们可以看下界面


    表现得跟块级元素一模一样呀。
    再来看在IE的标准模式下,界面是什么样子的
  • 区别最大要数盒子模型不一样,对于IE quirk模式下
    box width = content width + padding left + padding right + border left + border right,
    box height = content height + padding top + padding bottom + border top + border bottom,
    但是在W3C标准下:
    box width = content width,
    box height = content height,

    这样的话,会导致什么情况呢?我们来看下例子先:

    .div {border: 5px solid blue;height: 60px;width: 200px;}

    自己在HTML再添加一个div元素,它的class为div就行了。
    在IE quirks model中:


    但是在IE8 standard model中:


    说明下:图片的盒子模型是在IE的开发者工具中截图出来的,红色框应该表示的是border+padding+content的width、height

  • 元素溢出处理方式不同

    在 IE Standard Mode 下,overflow 取默认值 visible,即溢出可见,这种情况下,溢出内容不会被裁剪,呈现在元素框外。而在 Quirks Mode 下,该溢出被当做扩展 box 来对待,即元素的大小由其内容决定,溢出不会被裁剪,元素框自动调整,包含溢出内容。

    其实就是说quirks model会自动包含溢出的子元素。

其他方面不一样还是有的,有兴趣的话,自己百度google下吧!

参考文献

Quirks Mode and Standards Mode
DOCTYPE与浏览器模式分析
Quirks mode
Quirks mode and strict mode
怪异模式(Quirks Mode)对 HTML 页面的影响

quirks mode(怪异模式) 和 standard mode(标准模式)相关推荐

  1. html标准模式,html如何使标准模式工作和怪癖模式?_firefox_开发99编程知识库

    在 Firefox 或者 ie7/8 ( 帶或者不帶樣式標記) 中,以下Html對我很有用 Input.quirks { margin: 1px 0px 1px 0px; border: solid ...

  2. “约见”面试官系列之常见面试题之第五十二篇之标准模式和怪异模式(建议收藏)

    在标准模式页面按照HTML,CSS的定义渲染,而在怪异模式就是浏览器为了兼容很早之前针对旧版本浏览器设计,并未严格遵循W3C标准而产生的一种页面渲染模式.浏览器基于页面中文件类型描述的存在以决定采用哪 ...

  3. 渲染模式 - 标准模式(standards mode) 和 兼容模式(quriks mode)

    标准模式与怪异模式产生原因 在W3C标准出台以前,浏览器在对页面的渲染上没有统一规范,产生了差异(Quirks mode或者称为Compatibility Mode):由于W3C标准的推出,浏览器渲染 ...

  4. 文档模式:标准模式、混杂模式

    一. 背景:  由于历史的原因,不同浏览器对页面的渲染是不同的,甚至同一浏览器的不同版本也是不同的.然后这时候就出现了一个至关重要的标准规范:W3C标准. 在W3C标准出台之前,不同的浏览器在页面的渲 ...

  5. 准标准模式和标准模式之间的差别-1(旧文首发)

    "理论上,标准模式和准标准模式的区别仅在于非IE6/7浏览器对于单元格里(原文说法可能有误,经测试所有图片均受影响)图片布局的不同处理.同事渔隐做了细致地测试并给出了解决方案. Update ...

  6. html 浏览器文档模式,调整:浏览器模式lE8十文档模式8是怎样操作

    本文将讨论IE8浏览器如何确定用以渲染网站的文档模式,如怪异模式(又称IE5模式)和标准模式(更多资料,英文:http://en.wikipedia.org/wiki/Quirks_mode).该内容 ...

  7. 浏览器标准模式和怪异模式之间的区别

    浏览器标准模式和怪异模式之间的区别是什么? 在"标准模式"(Standards Mode) 页面按照 HTML 与 CSS 的定义渲染,而在"怪异模式"(Qui ...

  8. 浏览器标准模式与怪异模式的区别

    两种模式的不同主要表现在盒模型和渲染模式的不同上 要想写出跨浏览器的CSS,必须知道浏览器解析CSS的两种模式:标准模式(strict mode)和怪异模式(quirks mode) 所谓的标准模式是 ...

  9. 浏览器怪异模式和标准模式之间的区别 DTD

    从IE6开始,引入了Standards模式,标准模式中,浏览器尝试给符合标准的文档在规范上的正确处理达到在指定浏览器中的程度. 在IE6之前CSS还不够成熟,所以IE5等之前的浏览器对CSS的支持很差 ...

  10. HTML的标准模式与怪异模式

    HTML的标准模式与怪异模式 HTML 的结构 在HTML4中 DOCTYPE有三种模式 标准模式与怪异模式 HTML 的结构 <html><head><meta cha ...

最新文章

  1. XJOI 3585 The rescue plan 营救计划 题解
  2. 设计模式之_动态代理_03
  3. boost.asio openssl zlib protobuf icu vs2015编译
  4. 算法训练 Pollution Solution(计算几何)
  5. 作者:程学旗,中国科学院计算技术研究所研究员、所长助理、副总工程师。...
  6. 完美解决Mac电脑睡眠之后苹果电脑没有声音的方法
  7. mysql 查看当前数据库编码_MySQL查看并修改当前数据库编码
  8. python网络自动化实例_【python自动化第八篇:网络编程】
  9. UVA10063 Knuth‘s Permutation【排列组合】
  10. 我的代码库-Java8实现FTP与SFTP文件上传下载
  11. php mysql访问不,php不能访问mysql怎么办
  12. java集合练习题_「集合练习题」Java集合框架篇-58-集合框架的几个练习题 - seo实验室...
  13. 天猫行业资深店长认证
  14. 最小二乘法正规方程推导过程
  15. C语言中的free函数
  16. 计算机光盘无法格式化,求助,我的电脑无法格式化DVD光盘,提示为“windows无法完成格式化“。求高手。...
  17. Excel 函数 : 身份证号获取年纪等
  18. Windows下的MySQL实例没有mysql.user表#Olivia丶长歌#
  19. 原生微信小程序使用class 三元运算符实现多选案例
  20. 【SpringMVC】Resultful风格映射url

热门文章

  1. Banner是什么意思,网站banner设计与广告怎么做?
  2. 南部龙凤小学:六一文艺表演
  3. Remote end closed connection without response
  4. 计算机网络 - ECMAScript和Javascript、jscript关系
  5. python图片转黑白_Python 批量转化彩色图片为黑白图片
  6. 8box这件事欠考虑
  7. esp32上传文件方法
  8. 3d Max 2014设置背景没有锁定选项的解决方法
  9. [转]开源软件名的读音
  10. MAML代码及理论的深度学习 PyTorch二阶导数计算