关于<!DOCTYPE>

View Code
 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 2 <html>
 3   <head>
 4     <meta http-equiv="content-type" content="text/html;charset=gb2312" />
 5     <title>添加了XHTML DOCTYPE声明时设置绝对位置对象需要加单位</title>
 6   </head>
 7   <body>
 8   
 9   <div id="dv1" style="border:solid 1px black;width:200px;height:200px;top:200;left:200;position:absolute;"></div>
10   
11   <div id="dv2" style="border:solid 1px black;width:200px;height:200px;top:200px;left:200px;position:absolute;"></div>
12   </body>
13 </html>

在Firefox,IE下,如果添加了DOCTYPE,XHTML声明,则要设置display为absolute,绝对位置的对象时,需要加上单位,如px,要不没有效果。

运行例子,发现两个绝对位置的div位置并没有重合,第一个按照正常流的位置布局,而第二个div则按照指定的left和top值来显示。

  如果去掉XHTML DOCTYPE申明,则两个div都能按照指定的left,top值来显示,如下

View Code
 1 <html>
 2   <head>
 3     <meta http-equiv="content-type" content="text/html;charset=gb2312" />
 4     <title>添加了XHTML DOCTYPE声明时设置绝对位置对象需要加单位</title>
 5   </head>
 6   <body>
 7   
 8   <div id="dv1" style="border:solid 1px black;width:200px;height:200px;top:200;left:200;position:absolute;"></div>
 9   
10   <div id="dv2" style="border:solid 1px black;width:200px;height:200px;top:200px;left:200px;position:absolute;"></div>
11   </body>
12 </html>

两者的显示区别很明显,当不加<!DOCTYPE>声明时,浏览器按照Quirks Mode来渲染。

所以为了兼容性更加好,注意都加上单位px
  如拖拽效果什么的,如果加了XHTML DOCTYPE声明,但是设置left和top时忘记加上单位,就不会出校效果了。

至于加不加单位,根本在于是否按照W3C标准来进行。即用<!DOCTYPE>的情况下就要用px单位,因为它是按照标准来解析文档的。否则是按照Quirks Mode,可以不加px。

posted @ 2013-04-19 17:21  daishuguang  阅读(139)  评论(0编辑  收藏  举报