首先要做的是挑選一個好的瀏覽器。我的選擇是Chrome,因為它擁有強大的調試工具。當我在Chrome上完成調試后,我會接著在Safari或者Firefox上調試。
如果在這些“好的”瀏覽器上沒有達到期望的效果,很有可能是代碼本身違背了CSS規則。不要試圖使用hack方法來解決在這些“好的”瀏覽器上出現的問題,而是應該找出問題的原因。通常我會檢查以下可能的BUG出處:
接下來正文來了
最重要的需要記住的就是,W3C標準并沒有定義錯誤的行為。因此,如果你沒有按照規范寫,那么可能會導致跨瀏覽器不同效果;如果你組合“奇怪的”屬性(例如margin和inline element),那么也可能會導致跨瀏覽器不同效果bug。
Display
我認為書寫CSS就像在選擇一段旅程。你需要作出一些決定.比如你要首先選擇使用不同display方式的元素:block,inline,inline-block和table。當你選擇好以后,你可以使用一些具體的方法來改變其實際的顯示。
塊元素應該使用margin,padding,height和width。然而line-height不適用。
行內元素應該使用line-height,vertical align和空格符。然而margin,padding,height和width不適用。
首先,表格有垂直和水平排列方式。其次,如果你遺漏了表格中的某元素,整個表格可能會有詭異的顯示。最后,margin不適用與表格的行和列,padding不適用與表格和表格的行。
Positioning
如果你選擇使用塊級元素,接下來你需要選擇position方式:
在這里我就不列舉所有的display和position組合了。總之,有兩件事情需要注意:
比如,float,table-cell和行內元素組合在一起是否合適?瀏覽器將如何解釋渲染?在W3C標準里有沒有定義?如果沒有,那么可能就有出現跨瀏覽器bug的風險。當然,這樣的組合并不是不可以,但你要想清楚為什么要這樣做,以及做好足夠的跨瀏覽器測試。
Internet Explorer
當你解決了在“好的”瀏覽器上出現的問題后,現在應開始著手IE平臺。我的建議是從你希望支持的最老版本的IE開始,因為很多老版本IE上的問題在新版本中延續出現。
就算對于IE,你也應該嘗試找出問題而不是依賴于使用hack方法。盲目使用*和_的hack方法就像在一個返回錯誤值的函數中加入修正量(如下),而不是找出其中的算法性錯誤。
新聞熱點
疑難解答