标准模式与怪异模式

标准模式与怪异模式

由于历史的原因,各个浏览器在对页面的渲染上存在差异,甚至同一浏览器在不同版本中,对页面的渲染也不同。在W3C标准出台以前,浏览器在对页面的渲染上没有统一规范,产生了差异(Quirks mode或者称为Compatibility Mode);由于W3C标准的推出,浏览器渲染页面有了统一的标准(CSScompat或称为Strict mode也有叫做Standars mode),这就是二者最简单的区别。

W3C标准推出以后,浏览器都开始采纳新标准,但存在一个问题就是如何保证旧的网页还能继续浏览,在标准出来以前,很多页面都是根据旧的渲染方法编写的,如果用的标准来渲染,将导致页面显示异常。为保持浏览器渲染的兼容性,使以前的页面能够正常浏览,浏览器都保留了旧的渲染方法(如:微软的IE)。这样浏览器渲染上就产生了Quircks mode和Standars mode,两种渲染方法共存在一个浏览器上。

火狐一直工作在标准模式下,但IE(6,7,8)标准模式与怪异模式差别很大,主要体现在对盒子模型的解释上,这个很重要,下面就重点说这个。

那么浏览器究竟该采用哪种模式渲染呢?这就引出的DTD,既是网页的头部声明,浏览器会通过识别DTD而采用相对应的渲染模式:

1. 浏览器要使老旧的网页正常工作,但这部分网页是没有doctype声明的,所以浏览器对没有doctype声明的网页采用quirks mode解析。
2. 对于拥有doctype声明的网页,什么浏览器采用何种模式解析,这里有一张详细列表可参考:http://hsivonen.iki.fi/doctype/
3. 对于拥有doctype声明的网页,这里有几条简单的规则可用于判断:对于那些浏览器不能识别的doctype声明,浏览器采用strict mode解析
4. 在doctype声明中,没有使用DTD声明或者使用HTML4以下(不包括HTML4)的DTD声明时,基本所有的浏览器都是使用quirks mode呈现,其他的则使用strict mode解析。
5. 可以这么说,在现有有doctype声明的网页,绝大多数是采用strict mode进行解析的。
6. 在ie6中,如果在doctype声明前有一个xml声明(比如:),则采用quirks mode解析。这条规则在ie7中已经移除了。

如何设置为怪异模式:

方法一:在页面项部加

我们用Eclipse的HTML模板新建的html页面,自动就有上面东东

方法二:什么也不加。

这里有一张详细列表可参考:http://hsivonen.iki.fi/doctype/

如何设置为标准模式:

加入以下任意一种:

HTML4提供了三种DOCTYPE可选择:

XHTML1.0提供了三种DOCTYPE可选择:

(1)过渡型(Transitional )

(2)严格型(Strict )

(3)框架型(Frameset )

这里有一张详细列表可参考:http://hsivonen.iki.fi/doctype/

如何判定现在是标准模式还是怪异模式:

方法一:执行以下代码

alert(window.top.document.compatMode) ;
//BackCompat 表示怪异模式
//CSS1Compat 表示标准模式

方法二:jquery为我们提供的方法,如下:

alert($.boxModel)
alert($.support.boxModel)

IE6,7,8浏览器的标准模式还是怪异模式 盒子模型的 差异

(由于火狐的始终表现的很一致,不种我们操心。所以这里我们重点说IE浏览器)

-------------------------------------------------模态窗口----------------------------------------------------

我们想做一个DIV蒙层,中间放一个iframe,做一个像模态窗口的dialog工具

思路如下:

取出页面 网页可见区域 的宽与高, 进行蒙层,

通过CSS的固定定位属性{position:fixed}来实现,可以让HTML元素脱离文档流固定在浏览器的某个位置,

这样拖动滚动条时, 蒙层不会移动,一直在中心位置。

中心位置放一个iframe,用来显示其它网页,并可以提交表单。

可以用以下代码计算 蒙层的宽与高:

Js代码

//计算窗口的高宽和滚动条的位置
alert(window.top.document.compatMode) ;//区分怪异模式或标准模式
var cw = window.top.document.compatMode == "BackCompat" ?window.top.document.body.clientWidth:window.top.document.documentElement.clientWidth;//窗体高度
var ch = window.top.document.compatMode == "BackCompat" ?window.top.document.body.clientHeight:window.top.document.documentElement.clientHeight;//窗体宽度//必须考虑文本框处于页面边缘处,控件显示不全的问题
var sw = Math.max(window.top.document.documentElement.scrollLeft, window.top.document.body.scrollLeft);//横向滚动条位置
var sh = Math.max(window.top.document.documentElement.scrollTop, window.top.document.body.scrollTop);//纵向滚动条位置//考虑滚动的情况
alert("cw:"+cw+" ch:"+ch+" sw:"+sw+" sh"+sh);

----------------------------------------------参考 1-----------------------------------------------------
我们先来认识一下有哪些属性可以使用:

scrollLeft:设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离
scrollTop:设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离
scrollWidth:获取对象的滚动宽度
scrollHeight: 获取对象的滚动高度。
obj.offsetTop 指 obj 相对于版面或由 offsetParent 属性指定的父坐标的计算上侧位置,整型,单位像素。
obj.offsetLeft 指 obj 相对于版面或由 offsetParent 属性指定的父坐标的计算左侧位置,整型,单位像素。
obj.offsetWidth 指 obj 控件自身的绝对宽度,不包括因 overflow 而未显示的部分,也就是其实际占据的宽度,整型,单位像素。
obj.offsetHeight 指 obj 控件自身的绝对高度,不包括因 overflow 而未显示的部分,也就是其实际占据的高度,整型,单位像素
event.clientX 相对文档的水平座标
event.clientY 相对文档的垂直座标
event.offsetX 相对容器的水平坐标
event.offsetY 相对容器的垂直坐标
clientWidth 内容可视区域的宽度
clientHeight 内容可视区域的高度
clientTop 内容可视区域相对容器的垂直坐标
clientLeft 内容可视区域相对容器的水平坐标

参考图片:

----------------------------------------------参考 2-----------------------------------------------------

Js代码

var Width_1=document.body.scrollWidth; //body滚动条总宽
var Height_1=document.body.scrollHeight; //body滚动条总高
var Width_2=document.documentElement.scrollWidth; //documentElement滚动条总宽
var Height_2=document.documentElement.scrollHeight; //documentElement滚动条总宽

var Width_3=document.body.clientWidth; //body网页可见区域宽,滚动条隐藏部分不算
var Height_3=document.body.clientHeight; //body网页可见区域高,滚动条隐藏部分不算
var Width_4=document.documentElement.clientWidth; //documentElement网页可见区域宽,滚动条隐藏部分不算
var Height_4=document.documentElement.clientHeight; //documentElement网页可见区域高,滚动条隐藏部分不算

var Width_5=window.screen.availWidth; //屏幕可用工作区宽度(用处不大)
var Height_5=window.screen.availHeight;//屏幕可用工作区高度

var scrollLeft_7=window.top.document.body.scrollLeft;//body水平滚动条位置
var scrollTop_7=window.top.document.body.scrollTop;//body垂直滚动条位置

var scrollLeft_8=window.top.document.documentElement.scrollLeft;//documentElement水平滚动条位置
var scrollTop_8=window.top.document.documentElement.scrollTop;//documentElement垂直滚动条位置

alert(" body滚动条总宽:"+Width_1+",body滚动条总高:"+Height_1+
",\n documentElement滚动条总宽:"+Width_2+",documentElement滚动条总高:"+Height_2+
",\n"+
"\n body网页可见区域宽:"+Width_3+",body网页可见区域高:"+Height_3+
",\n documentElement网页可见区域宽:"+ Width_4+",documentElement网页可见区域高:"+Height_4+
",\n"+
"\n 屏幕可用工作区宽度:"+Width_5+", 屏幕可用工作区高度:"+Height_5+
",\n"+
"\n body水平滚动条位置:"+scrollLeft_7+",body垂直滚动条位置:"+scrollTop_7+
",\n documentElement水平滚动条位置:"+scrollLeft_8+",documentElement垂直滚动条位置:"+scrollTop_8);

(需要提一下:CSS中的margin属性,与clientWidth、offsetWidth、clientHeight、offsetHeight均无关)

下面是从w3school查到的,说的不是很详细

根节点
有两种特殊的文档属性可用来访问根节点:

document.documentElement
document.body

第一个属性可返回存在于 XML 以及 HTML 文档中的文档根节点。

第二个属性是对 HTML 页面的特殊扩展,提供了对标签的直接访问。

http://www.w3school.com.cn/htmldom/dom_nodes_access.asp

收集整理于互联网

参考:

http://cavonchen.iteye.com/blog/738423

http://hsivonen.iki.fi/doctype/

好文要顶 关注我 收藏该文  

时间: 2024-10-15 09:20:19

标准模式与怪异模式的相关文章

浏览器的标准模式和怪异模式的区别

所谓的标准模式是指,浏览器按W3C标准解析执行代码:怪异模式则是使用浏览器自己的方式解析执行代码,因为不同浏览器解析执行的方式不一样,所以我们称之为怪异模式.浏览器解析时到底使用标准模式还是怪异模式,与你网页中的DTD声明直接相关,DTD声明定义了标准文档的类型(标准模式解析)文档类型,会使浏览器使用相应的方式加载网页并显示,忽略DTD声明,将使网页进入怪异模式(quirks mode).

浏览器的标准模式与怪异模式的设置与区分方法

由于历史的原因,各个浏览器在对页面的渲染上存在差异,甚至同一浏览器在不同版本中,对页面的渲染也不同.在W3C标准出台以前,浏览器在对页面的渲染上没有统一规范,产生了差异(Quirks mode或者称为Compatibility Mode):由于W3C标准的推出,浏览器渲染页面有了统一的标准(CSScompat或称为Strict mode也有叫做Standars mode),这就是二者最简单的区别.W3C标准推出以后,浏览器都开始采纳新标准,但存在一个问题就是如何保证旧的网页还能继续浏览,在标准出

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

两种模式的不同主要表现在盒模型和渲染模式的不同上 要想写出跨浏览器的CSS,必须知道浏览器解析CSS的两种模式:标准模式(strict mode)和怪异模式(quirks mode) 所谓的标准模式是指,浏览器按W3C标准解析执行代码:怪异模式则是使用浏览器自己的方式解析执行代码,因为不同浏览器解析执行的方式不一样,所以我们称之为怪异模式.浏览器解析时到底使用标准模式还是怪异模式,与你网页中的DTD声明直接相关,DTD声明定义了标准文档的类型(标准模式解析)文档类型,会使浏览器使用相应的方式加载

浏览器的标准模式和怪异模式

要想写出跨浏览器的CSS,必须知道浏览器解析CSS的两种模式:标准模式(strict mode)和怪异模式(quirks mode). 标准模式: 浏览器按W3C标准解析执行代码: 怪异模式: 使用浏览器自己的方式解析执行代码,因为不同浏览器解析执行的方式不一样,所以我们称之为怪异模式. 浏览器解析时到底使用标准模式还是怪异模式,与你网页中的DTD声明直接相关. DTD声明定义了标准文档的类型(标准模式解析)文档类型,会使浏览器使用相应的方式加载网页并显示: 忽略DTD声明,将使网页进入怪异模式

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

浏览器标准模式和怪异模式之间的区别是什么 所谓的标准模式是指,浏览器按W3C标准解析执行代码:怪异模式则是使用浏览器自己的方式解析执行代码,因为不同浏览器解析执行的方式不一样,所以我们称之为怪异模式.浏览器解析时到底使用标准模式还是怪异模式,与你网页中的DTD声明直接相关,DTD声明定义了标准文档的类型(标准模式解析)文档类型,会使浏览器使用相应的方式加载网页并显示,忽略DTD声明,将使网页进入怪异模式(quirks mode).

(转)标准模式与怪异模式

标准模式与怪异模式 由于历史的原因,各个浏览器在对页面的渲染上存在差异,甚至同一浏览器在不同版本中,对页面的渲染也不同.在W3C标准出台以前,浏览器在对页面的渲染上没有统一规范,产生了差异(Quirks mode或者称为Compatibility Mode):由于W3C标准的推出,浏览器渲染页面有了统一的标准(CSScompat或称为Strict mode也有叫做Standars mode),这就是二者最简单的区别. W3C标准推出以后,浏览器都开始采纳新标准,但存在一个问题就是如何保证旧的网页

浅谈浏览器标准模式与怪异模式、文档类型

在网页设计制作过程中,新人往往会遇到一个问题,就是浏览器的不兼容问题.这种状况在大学学习过程中会经常遇到,但一直也没有得到很好的解决,今天有机会仔细研究了一下,这是有关浏览器标准模式与怪异模式之间的问题.标准模式(strict mode)和怪异模式(quirks mode)是浏览器解析css的两种模式.标准模式是指浏览器按W3C标准解析执行代码:怪异模式则是使用浏览器自己的方式解析执行代码,因为不同浏览器解析执行的方式不一样,所以我们称之为怪异模式. 浏览器解析时使用测是标准模式还是怪异模式,与

关于HTML(二)---------浏览器的标准模式和怪异模式

标准模式和怪异模式的来由 在HTML与CSS的标准化未完成之前,各个浏览器对于HTML和CSS的解析有各自不同的实现,而有很多旧的网页都是按照这些非标准的实现去设计的.在HTML与CSS标准确定之后,浏览器一方面要按照标准去实现对HTML与CSS的支持,另一方面又要保证对非标准的旧网页设计的后向兼容性.因此,现代的浏览器一般都有两种渲染模式:标准模式和怪异模式.在标准模式下,浏览器按照HTML与CSS标准对文档进行解析和渲染:而在怪异模式下,浏览器则按照旧有的非标准的实现方式对文档进行解析和渲染

标准模式和怪异模式

一.< ! DOCTYPE html >有什么作用? H5头部< ! DOCTYPE html > DOCTYPE称为Document  Type  Declaration(文档类型声明,缩写DTD),它在 文档正文之前就确定当前文档的类型,以决定其需要渲染的模式,< ! DOCTYPE html >表示以标准模式渲染如果注释这句话,则以怪异模式渲染,< ! DOCTYPE html >前面不能有 标签或者注释,否则也按照怪异模式渲染. 在ie9往上的浏览器