出现的背景

在很久之前的浏览器,还是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. 转帖:从C51的指针到病毒-c51软复位,经典,分析透彻
  2. linux+tomcat+oracle_第二步
  3. no module named sklearn
  4. python简单可视化聊天界面_如何用Python制作可视化输入界面
  5. 怎么确定迭代器后面还有至少两个值_为什么range不是迭代器?range到底是什么类型?
  6. redis 零散知识
  7. shell脚本if语句判断
  8. 使用GreenSock插件轻松制作精美的Web动画
  9. 常见电容器图片_最强汇总:燃油锅炉常见故障分析与解决方法简单粗暴!编辑不易!...
  10. CSS实现文字环绕图片效果
  11. java springboot activemq 邮件短信微服务,解决国际化服务的国内外兼容性问题,含各服务商调研情况...
  12. c语言指针选择题库及答案,C语言指针练习习题及答案.doc
  13. 苹果手机指纹识别坏了怎么办?维修需要多少钱?
  14. 深度学习应用于脑电信号处理
  15. 毕业一年经历两次大裁员......
  16. Open Cascade 读取STEP、STL
  17. 这儿有你所需要的所有关于科研的网址
  18. GitHub项目、代码搜索、使用等技巧
  19. 视频教程-由浅入深Java零基础入门-Java
  20. 基于FPGA的复杂的数字时钟设计(代码)

热门文章

  1. 使用Python绘制精美绝伦的股票行情K线图
  2. Kali-WIFI攻防(三)----wifite自动化WEP/WPA破解工具
  3. win 64 安装 sql server 2000、出现挂起 解决
  4. c++ 的绝对值函数
  5. 目前比较好用的同步网盘@2012
  6. emule服务器地址列表地址
  7. Kafka:增加Topic的分区数
  8. iOS第三方库-魔窗Mlink的坑
  9. 什么是CI/CD?它们与敏捷开发和devops的关系?
  10. c语言中浮点数取整函数,浮点取整函数