doctype的影响

以前转过一篇文章说的是css中可以用!important分别设置ie、firefox的样式,转之前我亲手测试过,绝对不会有假的
但是今天当我再用这个方法的时候,却发现这个方法并没有效果:

以上代码,在ie和firefox中框的背景色显示的都是绿色,与我期待的在ie中显示蓝色(background-color:blue;),在firefox中显示绿色background-color:green)并不一致;

而在另一个例子中,得到的结果却与我以前写的结论一致:

firefox中采用:border:20px  solid #60A179 !important;ie中:border:20px  solid #00F;

对比发现,这个偏差的导致者就是:DOCTYPE (关于doctype的简单说明可以参照:http://www.blueidea.com/tech/web/2007/5172.asp

XHTML 1.0中有3种DTD(文档类型定义)声明可以选择:过渡的(Transitional)、严格的(Strict)和框架的(Frameset):

1.过渡的

一种要求不很严格的DTD,允许在页面中使用HTML4.01的标识(符合xhtml语法标准)。过渡的DTD的写法如下:

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

2.严格的

一种要求严格的DTD,不允许使用任何表现层的标识和属性,例如<br/>等。严格的DTD的写法如下:

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

3.框架的

一种专门针对框架页面所使用的DTD,当页面中含有框架元素时,就要采用这种DTD。框架的DTD的写法如下:

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

根据上面两个实例,得出结论:

当doctype声明为:过渡的(Transitional),ie7不能识别!important
而当doctype声明为:严格的(Strict),ie7是可以识别!important的

关于ie6、ie7、firefox中css hack可参考:http://hi.baidu.com/smallmenu/blog/item/f57c02608e42e241ebf8f8ab.html

 

======================================================================

另外,doctype的声明还会影响页面的clientWidth,如下例:

在上例中,如果有doctype的声明(Transitional/strict皆可),则document.body.clientHeight和document.body.scrollHeight相等(我的电脑

商显示的都为2550);而且,此时,固定定位:position:fixed是有效的
如果把doctype去掉,两个值就不同了document.body.clientHeight:854,document.body.scrollHeight:2634;而且此时固定定位是无效的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值