參與測試的浏覽器:IE6 / IE7 / IE8 / FF3 / OP9.6 / SF3 / Chrome2
操作系統:Windows
問這樣的問題的人很多,我對此有比較深入的研究,但自己從來沒有給出過完整的解答與分析,覺得有些對不住列祖列宗。
先請看demo:
運行代碼框
[Ctrl+A 全部選擇 提示:你可先修改部分代碼,再按運行]
大家看到,此時div的實際高寬,完全由left / right / top / bottom這四個屬性所掌控著,於是我們便可以借助這個特性,輕松地完成div仿框架的效果了:
運行代碼框
[Ctrl+A 全部選擇 提示:你可先修改部分代碼,再按運行]
讓我們將應該有滾動條的地方的滾動條效果折騰出來:
運行代碼框
[Ctrl+A 全部選擇 提示:你可先修改部分代碼,再按運行]
以上方法其實早已由wiseinfo在 Html+CSS 構建 B/S結構軟件界面 — 布局篇 — position方式 中進行過介紹,在該文中,IE6亦是分而治之的,它的方法是在Html代碼頂部加入“<?XML version=”1.0″ encoding=”UTF-8″?>”,使得ie6進入quirks mode(怪異模式)來完成IE6下的div仿框架,但這樣做將出現一些影響比較顯著的弊端:
運行代碼框
[Ctrl+A 全部選擇 提示:你可先修改部分代碼,再按運行]
於是我們需要另辟蹊徑。
在很多次失敗之後,我終於發現有一個標簽可以救IE6於水深火熱,那就是最偉大的“<Html>”標簽,它繼承了IE6 quirks mode(怪異模式)下的盒模型狀態。
運行代碼框
[Ctrl+A 全部選擇 提示:你可先修改部分代碼,再按運行]
利用這一點,我們可以在不太輕松的調整之後完成以下效果:
運行代碼框
[Ctrl+A 全部選擇 提示:你可先修改部分代碼,再按運行]
再用下我們的二列布局知識來完成最終形態,在此我們將艷遇著名的3px bug(不喜歡它可以找點別的辦法):
運行代碼框
[Ctrl+A 全部選擇 提示:你可先修改部分代碼,再按運行]
現在我們擁有了ie6的仿框架和非IE6的div仿框架的最終形態,只需要利用hack做個簡單的加法則行了:
(當然,同一屬性寫兩遍,後面的屬性所對應的值將覆蓋前者,這個基礎的優先級基礎大家還需要溫故一下。)
(再“當然”一下——當然,有人對hack深惡痛絕,那麼請在使用之前,閱讀此文看看是否能消消心頭之恨。)
運行代碼框
[Ctrl+A 全部選擇 提示:你可先修改部分代碼,再按運行]
它很強大而實用,真的:
運行代碼框
[Ctrl+A 全部選擇 提示:你可先修改部分代碼,再按運行]