width不同瀏覽器兼容問題

CSS盒子盒子佔據面積的大小一共是:邊距(margin)+邊框(border)+填白(padding)+寬度(width)在這裏要明白什麼是div佔據的寬度和什麼是內容佔據的寬度。div佔據的寬度是塊的寬度即是(margin+border+padding+width),而內容佔據的寬度是塊裏面的內容寬度,即是(width)所以當你設置width爲200px border:1px的時候,實際的這個DIV的width最大值還是200的內容寬度只是DIV的實際佔據頁面的寬度是:1(左邊框)+200(width)+1(右邊框)=202。當然如果裏面的DIV寬度大於200,外面DIV定義的寬度就會失去效果。

如果設定padding:2px這個屬性,按照正確的解釋,DIV的寬度應該是:

1(左邊框)+2(padding)+200(width)+2(padding)+1(右邊框)=206

上面當然算的是正確的解釋,但是注意拉IE6.0不會按照CSS2的正確解釋來算,IE的算法有時候會安正確解釋算,大多時候IE會把padding算在width裏面按照IE的算法上面的結果還會是202,因爲IE大多時候認爲padding是width的一部分。所以在IE下面這個div實際可以運用的width是200-2-2=196,但是其他瀏覽器DIV實際可以運用的width還是200.

這是IE6.0典型的hack(瀏覽器兼容性)。所以強烈建議不到萬不得已不要給DIV定義padding。本人就在操作過程中見過IE最變態的解釋,IE把我的第一個DIV按照正確解釋運算DIV寬度,把之後的另外一個DIV按照IE自己的方法(就是padding是width的一部分)。當時我2個DIV調用的同一個類。

附:如果又設置了margin:2px;則上述的寬度可計算爲

CSS的規則: 2(margin-left)+1(border-left)+2(padding-left)+200(width)+2(padding-right)+1(border-right)+2(margin-right)=210

IE6.0以前的版本:  2(margin-left)+200(width)+2(margin-right)=204

IE6.0:  2(margin-left)+1(border-left)+200(width)+1(border-right)+2(margin-right)=206


發佈了12 篇原創文章 · 獲贊 16 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章