踢到Doctype的铁板

下午调整一个页面样式,在给一个标签加粗体后,突然在Firefox预览中出现了奇怪的错排现象,IE下却没有问题。于是做了各种尝试,均不能很好的解决问题。

忽然起了飞智,在当前IDE下新建一个页面,把样式和内容粘贴过来——问题莫名其妙的就解决了……

出错页面代码如下:
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01//EN” “http://www.w3.org/TR/html4/strict.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml” lang=”utf-8″>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
<title>样例 - 踢到Doctype的铁板 - Elvis’ Blog</title>
<style type=”text/css”>
dt { float:left; font-weight:bold;}
</style>
</head>
<body>
<dl>
<dt>项目1:</dt><dd>一</dd>
<dt>项目2:</dt><dd>二二</dd>
<dt>项目3:</dt><dd>三三三</dd>
</dl>
</body>
</html>

新建页面与出错页面的区别只有一行,即
<html xmlns=”http://www.w3.org/1999/xhtml” lang=”zh-cn”>

原来是lang(语系)属性写错了,但lang和样式有什么关系呢?

某牛人告诉我:“大概是写错lang,相当于没有Doctype(文档类型) 或用错了 Doctype,触发了Firefox的Quirks Mode(怪异模式),所以表现上出问题了。”

扩展阅读:
Peter-Paul Koch(《ppk on JavaScript》的作者):《Quirks mode and strict mode
Jukka K. Korpela:《What happens in Quirks Mode?
Henri Sivonen:《Activating the Right Layout Mode Using the Doctype Declaration

没有评论

Leave a reply