頁面容器(#wrap)與頁面頭部(#header )為100%寬度。而內容的容器(#page)為固定寬度960px。瀏覽窗口縮小而小于內容層寬度時會產生寬度理解上的差異。如下圖所示窗口寬度大于內容層寬度:
改變瀏覽器窗口的大小,小于內容層寬度,如下圖所示。
拖動水平滾動條,出現了bug的樣子。右邊的背景不存在了。如下圖所示。
問題的根本在于:當窗口縮小時,瀏覽器默認100%寬度為瀏覽器窗口的寬度。而忽略了下部內容層固定寬度(960px)。從而出現了固定寬度大于100%寬度的現象。瀏覽以此理解來解析頁面,就出現了容器寬度理解上的差異,出現了一個非常奇特的BUG。如圖所示。
我們分析,問題的解決之道:既然是寬度理解上的差異,只需要告知瀏覽器頁面容器的寬度,頭部元素的寬度不能小于內容層的寬度即可。當瀏覽器窗口縮小時,保持頁面容器和頭部元素的最小寬度為內容層的寬度。這樣就解決了寬度上出現問題。
css代碼為:
#wrap {width:100%;background:#ddd;width:expression(document.body.clientWidth <= 960? "960px": "auto");min-width:960px; } #header {width:100%;height:78px;border-bottom:1px solid #f60;background:#f0f0f0 url(head_tbg.jpg) repeat-x; } #page {width:960px;height:100px;margin:5px auto;background:#fff;border:1px solid #00CCCC; }
html代碼為:
<div id="wrap"><div id="header"></div><div id="page"></div> </div>