轉自:http://www.blogjava.net/sealyu/archive/2010/01/08/308640.html
一般在将div居中顯示時,使用css:
divX {margin:0 auto;}
此css在firefox下是好的,但是在ie下不起作用,網上看到原因如下:
<div
id="cnbruce">margin: 0 auto
看看内容居中否</div>
如上調試結果,IE6.0是不居中的,當然解決的辦法可以是對網頁主體“<body>”聲明文本居中,即
[
Copy ] [ Run ] [ Save
]
<style>
body{text-align:center}
#cnbruce{width:500px;
background-color: #ccc; margin: 0 auto}
</style>
看看内容居中否(加了body文本居中)</div>
然後,單個div的CSS居中,非要扯上<body>?
于是在不采用“<body>”聲明文本居中的情況下,将DOCTYPE聲明加上,立馬有效果
<!DOCTYPE
看看内容居中否(加了DOCTYPE聲明)</div>
其實原理都知道,就是因為用這個“懶人”的HTML調試框,懶得去輸入些忘卻的東西,到頭來還以為真相就是如此呢。。。
同樣,關于“一邊固定,一邊自動擴充”的例子,加與不加在IE效果完全不同
如下是不加的情況:
Copy ] [ Run ] [ Save ]
<head>
<meta
http-equiv="Content-Type" content="text/html; charset=gb2312"
/>
<title>CSS布局</title>
<style
type="text/css">
<!--
body {
margin:0;
}
#dv1
{
background-color: #3399FF;
float: left;
width: 280px;
#dv2
background-color:
#FFCC00;
width:100%;
-->
</head>
<body>
id="dv1">
<pre>#dv1 {
float:
left;
} </pre>
</div>
id="dv2">
<pre>#dv2 {
</pre>
</body>
</html>
如下是添加了DOCTYPE聲明
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
<html
<title>CSS布局1</title>
下次再也不信HTML調試框了,還是用軟體,呵呵。
引用W3C的一些關于DOCTYPE的說明
<a href="http://www.w3cn.org/article/step/2004/26.html" target="_blank">http://www.w3cn.org/article/step/2004/26.html</a>
引用
什麼是DOCTYPE
上面這些代碼我們稱做DOCTYPE聲明。DOCTYPE是document
type(文檔類型)的簡寫,用來說明你用的XHTML或者HTML是什麼版本。
其中的DTD(例如上例中的xhtml1-transitional.dtd)叫文檔類型定義,裡面包含了文檔的規則,浏覽器就根據你定義的DTD來解釋你頁面的辨別,并展現出來。
要建立符合标準的網頁,DOCTYPE聲明是必不可少的關鍵組成部分;除非你的XHTML确定了一個正确的DOCTYPE,否則你的辨別和CSS都不會生效。
XHTML
1.0
提供了三種DTD聲明可供選擇:
過渡的(Transitional):要求非常寬松的DTD,它允許你繼續使用HTML4.01的辨別(但是要符合xhtml的寫法)。完整代碼如下:
嚴格的(Strict):要求嚴格的DTD,你不能使用任何表現層的辨別和屬性,例如<br>。完整代碼如下:
架構的(Frameset):專門針對架構頁面設計使用的DTD,如果你的頁面中包含有架構,需要采用這種DTD。完整代碼如下:
我們選擇什麼樣的DOCTYPE
理想情況當然是嚴格的DTD,但對于我們大多數剛接觸web标準的設計師來說,過渡的DTD(XHTML
Transitional)是目前理想選擇(包括本站,使用的也是過渡型DTD)。因為這種DTD還允許我們使用表現層的辨別、元素和屬性,也比較容易通過W3C的代碼校驗。
注:上面說的"表現層的辨別、屬性"是指那些純粹用來控制表現的tag,例如用于排版的表格、背景顔色辨別等。在XHTML中辨別是用來表示結構的,而不是用來實作表現形式,我們過渡的目的是最終實作資料和表現相分離。
打個比方:人體模特換衣服。模特就好比資料,衣服則是表現形式,模特和衣服是分離的,這樣你就可以随意換衣服。而原來HTML4中,資料和表現是混雜在一起的,要一次性換個表現形式非常困難。呵呵,有點抽象了,這個概念需要我們在應用過程中逐漸領會。
補充
DOCTYPE聲明必須放在每一個XHTML文檔最頂部,在所有代碼和辨別之上。這個是很關鍵的,不然margin:0 atuo ;都不能居中!