doctype与Quirks Mode和Standards Mode

on Thursday, January 14th, 2010 at 3:58 pm by 阿辛

自从淘宝新首页出来之后,我看了下它的源代码,一惊,怎么如此简洁?如下:

1
2
3
4
5
<!doctype html> 
<html> 
<head> 
<meta charset="gbk" /> 
<title>淘宝网 - 淘!我喜欢</title>

但一直没时间深入了解,所以自己做页面也都按原来的xhtml strict头写div+css。最近有点按耐不住了,想想还是早点了解可以早点使用,这么简洁看了就舒服啊。

于是去w3cshools查了下,原来这个doctype是html5的,那就奇怪了, IE6/7啥的不是还没支持html5吗?根据我以前的经验,产生了两个困惑:
1. 如果不支持html5的IE在无法识别doctype的时候,会默认使用html 4.0,那么css hack啥的就无法使用了?
2. 如果不支持html5的IE能识别meta标签的charset属性?

通过反复google(题外话:由于谷歌要退出中国,这几天我搜索几乎都用google了)。找到了答案:
1. 曾经我由于没深入了解,所以一直存在误区:我一直以为用html 4.0的doctype就不支持css hack,用xhtml的不管是过渡还是严格版本的doctype就都支持css hack。其实完全理解错了,浏览器支不支持现在流行的css hack是根据Quirks Mode和Standards Mode来进行渲染的。所以如果是Quirks Mode就不支持css hack了,如果是Standards Mode就支持。

目前浏览器是这样判断的,如果没任何doctype申明,那么就是Quirks Mode
如果是strict dtd不管是html还是xhtml都是Standards Mode
而我以前产生误区的原因是那时候用editplus新建html文件有模板,而自带的模板doctype申明是html Transitional,这个是Quirks Mode所以导致我以为html的doctype就不支持了。

这回清晰了,再看yahoo.com,用的是html4 strict,淘宝用的是html5的,都是Standards Mode,都能css hack了,兼容浏览器还有什么担心的吗?

2.不支持html5的IE能识别meta的html5新属性charset。原因不明。

日志所属分类: 2.Web程序开发 | 本文地址: http://xinple.org/?p=373
打印此文: Print This Post | TrackBack: http://xinple.org/wp-trackback.php?p=373

No Responses.

Leave a Reply

*