作為 Web 設計師,你的網站在各種瀏覽器中有完全一樣的表現是很多人的目標,然而這是一個永遠無法真正實現的目標,很多人認為,完美的跨瀏覽器安全色並不必要,這樣說雖然沒錯,但在很多情形,一種近似的相容還是很容易實現的,本文講的是各種跨瀏覽器安全色的 CSS 編碼準則和技巧。
理解 CSS 盒子模型
如果你想實現不需要很多奇巧淫技的跨瀏覽器安全色的 CSS 代碼,透徹地理解 CSS 盒子模型是首要事情,CSS 盒子模型並不難,且基本支援所有瀏覽器,除了某些特定條件下的 IE 瀏覽器。
CSS 盒子模型負責處理以下事情:
- 一個 blcok (區塊)級對象佔據多大的空間
- 該對象的邊界,留白
- 盒子的尺寸
- 盒子與頁面其它元素的相對位置
CSS 盒子模型有以下準則:
- Block (區塊)對象都是矩形 (事實上所有對象都如此)
- 其尺寸由 width, height, padding, borders, 以及 margins 決定
- 如果不設定高度,該盒子的高度將自動適應其包含的內容,加上留白等(除非使用了 float)
- 如果不設定寬度,一個非 float 型盒子水平上將充滿其父容器(扣除父容器的留白)
處理 block 級對象時,必須注意以下事項:
- 如果一個盒子的寬度設定為 100%,它就不能再設定 margins, padding, 和 borders,否則會撐破其父容器
- 垂直毗鄰的 margin 會引起複雜的坍塌問題, 導致布局問題(比如兩個垂直毗鄰的 Block 對象,上面的對象的 bottom-margin 為 40,下面的對象的 top-margin 為 20,則兩個對象的間距將是 40,而不是 60 - 譯者)
- 擁有相對位置和絕對位置的對象,擁有不同的行為
在 Firefox 的 Firebug 中顯示的盒子模型
理解 block 級和 inline 級 對象的區別
這個看似簡單的問題事如果能透徹地理解,會受益匪淺。
下圖講解了 block 級對象和 inline 級對象的區別: