翻譯:onestab [2004.03.09]
原文:mezzoblue CSS Crib Sheet
在使用CSS建站時,您肯定遇到過形色的佈局問題,最後可能被搞得焦頭爛額。本文的目的是讓您的設計過程更容易,當您遇到困難時為您提供快速參考。
如果您有補充,請在這裡發表您的意見.
本文的其他語言版:法語, 德語, 西班牙語 和 匈牙利語。 歡迎提供其他翻譯。
有疑問,先驗證
在調試時,先驗證您的程式碼驗證往往能省去不少麻煩事。格式不正確的XHTML/CSS 會導致許多版面上的錯誤。
在其他瀏覽器中進行測試之前,請先在最先進的瀏覽器中撰寫和測試CSS程式碼,而不是相反。
如果您在破舊的瀏覽器中編寫和測試,你的程式碼就不得不依賴那個破舊瀏覽器的糟糕的顯示,然後在符合標準的瀏覽器中進行測試,看到顯示結果「不正常」時,你會很沮喪的。相反,您應該先將您的程式碼完善,然後再設法為較低階的瀏覽器打算。這樣從一開始您的程式碼就是符合標準的,你不必再為支援其他瀏覽器而勞心費神。當然了,目前遵從標準的瀏覽器無疑就是 Mozilla, Safari 或 Opera。
確保您想要的效果真的存在
許多特定的瀏覽器專有的CSS擴充在正式標準中並不存在。 如果您對 filter(濾鏡) 或捲軸指定樣式,您使用的就是私有程式碼,除了IE之外,在別的瀏覽器中毫無作用。如果驗證器告訴您程式碼沒有定義,極有可能您使用了私有樣式,別指望在不同的瀏覽器中得到一致的效果。
如果佈局中一定要用浮動對象,別忘了適時使用清除(clear)屬性。
浮動元素似易實難,而且難以駕馭。如果您發現浮動物件伸出了容器的邊界,或者不像您所期望的那樣顯示,請檢查您的期望是否正確。關於這個問題請看Eric Meyer 的教學
邊距的合併:可用padding 或 border 來避免。
您可能被多餘的(或想要卻不出現的)空白搞得焦頭爛額。如果您用了 margins,邊距的合併可能是問題的根源。 Andy Budd 對此的解釋也許能為你解惑。 再這裡對PJblog的結構補充一下。如果你用了Flash請檢查一下Xml檔案裡是是否設定了邊距
避免將 padding/border 和固定寬度同時應用到同一元素。
IE5 錯誤的區塊模型是罪魁禍首,是它將事情弄得亂七八糟。雖然有補救方案,不過最好是繞過這個問題,當子元素的寬度固定時,為其父元素指定padding。
避免IE下未指定樣式內容的閃爍。
如果您用 @import 來輸入外部樣式表,早晚會發現IE有「閃爍」的毛病。在套用CSS樣式之前,未格式化的HTML文字會短暫出現。 這是可以避免的.
別指望 min-width 在IE中有用。
IE不支援它,但是它將width 當作min-width,所以透過一些IE 的過濾技巧(filtering),可以實現同樣的最終效果。 這很鬱悶我現在這個Skin就沒能實現
走投無路時,試一試減少寬度
由於舍入誤差,有時由於舍入誤差,有時50 % 加上50% 等於100.1%,破壞某些瀏覽器中的佈局。不妨試試將 50% 減到 49%,甚至 49.9%。 還有假如你用了邊框(border)記得要把他的寬度加進去,500px的框加了一圈1px的邊框那他就是502px。
IE 中顯示不正常?
可能是 Peekaboo 臭蟲在作怪,尤其是當滑鼠經過超連結時能顯示正常。修補方法見Position is Everything。
如果使用了錨點,在套用超連結樣式時要特別小心。
如果您在程式碼中使用了傳統的錨點(),您會注意到:hover 和),您會注意到:hover 和<:> active: 偽類也會作用於它。要避免這種情形,你可以使用id,或使用鮮為人知的語法:
:link:hover, :link:active記住“LoVe/HAte” (愛/恨)連結規則
要以下列的順序指定超連結偽類:Link, Visited, Hover, Acitve。任何其他順序都不妥當。假如用了 :focus,次序應為 LVHFA(“Lord Vader's Handle Formerly Anakin”,
Matt Haughey這樣建議)。 請記住「TRouBLED」(麻煩的)邊框。
邊框(border)、邊距(margin)和補白(padding)的簡寫次序為:順時針方向從上開始,即 Top, Right, Bottom, Left。如
margin: 0 1px 3px 5px;表示上邊距為零,右邊距為1px,依此類推。 非零值要指明單位。
在用CSS指定字體、邊距或大小時,必須指明所使用的單位(唯一的例外是 line-height,很奇怪,它不需要單位)。某些瀏覽器對未指明單位的處理方法不足為憑。零就是零,不管是 px 還是 em。其他的非零值都要明確指定單位。例如:
padding: 0 2px 0 1em; 測試不同的字體大小。
像 Mozilla 和 Opera 這樣的進階瀏覽器都允許你改變字體大小,不管你用什麼字體單位。某些使用者的預設字體大小肯定和你的不同,盡最大努力去滿足他們。 測試時用嵌入式樣式,發佈時再改為外部輸入。
將樣式表嵌入在你的 HTML 原始碼中,測試時可以消除許多快取所造成的錯誤,尤其是某些 Mac 下的瀏覽器。但在發布前,一定要記住將樣式表移到外部文件,用 @import 或 引入。 加上明顯的邊框有助於佈局調試。
像 div {border: solid 1px #f00;} 之類的全域規則可以暫時為你找出佈局問題。為特定的元素加上邊框可幫助您找到難以發覺的重疊或空白問題。
這個方法很實用,大家一定要試試看圖片路徑不要用單引號。
當設定背景圖片時,要堅持使用雙引號。儘管看起來好像多此一舉,但如果不這麼做,IE5/Mac 會噎住。
這個好像最容易忽略了不要為未來的樣式表(例如手持式裝置或列印用樣式表)「佔位子」。
Mac IE5 空的樣式表較為感冒,會增加頁面的裝入時間。建議樣式表中至少應該有一條規則(就算是註解也好),免得 MacIE噎住。
還有一些建議雖然不針對某些功能,但在開發過程中值得注意:
好好組織您的CSS檔案
恰當地成塊註釋CSS,將相似的CSS選擇符編為一組,養成一致的命名習慣和空白格式(為跨平台考慮,建議用空白字符而不是tab。)以及適當的次序。
以功能(而不是外觀)為類別和ID命名
假如您創建了一個.smallblue 類,後來打算將文字改大,顏色變為紅色,這個類名就不再有任何意義了。相反,您可以使用更有描述性的名字如 .copyright 和 .pullquote。
組合選擇子
維持CSS短小對減少下載時間非常重要。請盡量為選擇符分組、 使用繼承(inheritance)以及使用簡寫(shorthand)來減少冗餘。
使用圖片替換技術時要考慮親和力
已經發現傳統的FIR在螢幕閱讀器,以及關閉圖片顯示的瀏覽器中會出問題。對此有其他解決辦法,要根據具體情況,慎重使用。