Firefox下樣式設(shè)置寬度奇怪現(xiàn)象
更新時間:2008年09月10日 23:46:10 作者:
前段時間做項目時碰到一個奇怪的現(xiàn)象
頁面中有一個數(shù)據(jù)列表,是table,放在一個div窗口中,結(jié)構(gòu)如下:
<body>
<div id="container">
<table id="grid">....列表數(shù)據(jù)....</table>
</div>
</body>
給 container 設(shè)置了樣式 #container {width:100%; margin:10px;}
給 grid 設(shè)置了樣式 #grid {width:100%}
測試結(jié)果在IE中正常,在 Firefox 下 container 的實際寬度會超過100%而出現(xiàn)橫向滾動條,因為Firefox把margin算進了寬度,實際等于100%+20px>100%。
當(dāng)然可以去掉div的margin定義,改用body的padding來設(shè)置,但是頁面中有其他內(nèi)容要占滿整個頁。
于是以前為了解決這個問題會給div在Firefox區(qū)別定義一個width:98%,這樣好像是解決了問題,但是如果瀏覽器窗口變小,F(xiàn)irefox下的98%+20px說不定就又大于100%而出現(xiàn)橫向滾動條。
出于試試看的心理,我把container的樣式改成了#container {width:100%-20; margin:10px},再到Firefox下去看看,呵呵,竟然變得正常了,和IE下一樣,真是奇怪了,width:100%-20這樣的定義應(yīng)該是錯誤的呀!但是卻解決了Firefox把margin算進去的問題,進一步試下,發(fā)現(xiàn)隨便100%減隨便一個數(shù)字都可以,查了些資料,一直沒有明白是什么原因。
或許就是個bug,呵呵!也許哪個高手知道原因。自己做過測試,把代碼和截圖貼上來:

[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]
復(fù)制代碼 代碼如下:
<body>
<div id="container">
<table id="grid">....列表數(shù)據(jù)....</table>
</div>
</body>
給 container 設(shè)置了樣式 #container {width:100%; margin:10px;}
給 grid 設(shè)置了樣式 #grid {width:100%}
測試結(jié)果在IE中正常,在 Firefox 下 container 的實際寬度會超過100%而出現(xiàn)橫向滾動條,因為Firefox把margin算進了寬度,實際等于100%+20px>100%。
當(dāng)然可以去掉div的margin定義,改用body的padding來設(shè)置,但是頁面中有其他內(nèi)容要占滿整個頁。
于是以前為了解決這個問題會給div在Firefox區(qū)別定義一個width:98%,這樣好像是解決了問題,但是如果瀏覽器窗口變小,F(xiàn)irefox下的98%+20px說不定就又大于100%而出現(xiàn)橫向滾動條。
出于試試看的心理,我把container的樣式改成了#container {width:100%-20; margin:10px},再到Firefox下去看看,呵呵,竟然變得正常了,和IE下一樣,真是奇怪了,width:100%-20這樣的定義應(yīng)該是錯誤的呀!但是卻解決了Firefox把margin算進去的問題,進一步試下,發(fā)現(xiàn)隨便100%減隨便一個數(shù)字都可以,查了些資料,一直沒有明白是什么原因。
或許就是個bug,呵呵!也許哪個高手知道原因。自己做過測試,把代碼和截圖貼上來:

[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]
相關(guān)文章
轉(zhuǎn)載未知大小的圖片在一個已知大小容器中的水平和垂直居中(二)
轉(zhuǎn)載未知大小的圖片在一個已知大小容器中的水平和垂直居中(二)...2007-01-01推薦三種簡潔的Tab導(dǎo)航(網(wǎng)頁選項卡)簡析
推薦三種簡潔的Tab導(dǎo)航(網(wǎng)頁選項卡)簡析...2007-05-05div+css布局必了解的列表元素ul ol li dl dt dd詳解
dt 和dd中可以再加入 ol ul li和p,理解這些以后,在使用div布局的時候,會方便很多,其實w3c提供了很多元素輔助布局都是有它的用處的,而不盡是div。2008-04-04