我很好奇Safari 5.1上奇怪的渲染行爲。在兩列布局中,第一列的寬度固定,第二列的寬度應該是固定的。爲什麼Safari5中存在一個意外的保證金?
HTML:
<div class="row">
<div class="left">
<p>Left</p>
</div>
<div class="right">
<p>Right. Some more text here, to show how odd the line breaks...</p>
</div>
</div>
CSS:
.row { width: 300px; background: yellow; overflow: hidden; }
.left { width: 100px; background: red; float: left; }
.right { margin-left: 100px; background: green; overflow: hidden; }
這對大多數瀏覽器的偉大工程(在所有 「現代」 的瀏覽器,因爲我認爲),但現在我發現Safari 5在與預期左邊距相同寬度的第二列上添加了無意的右邊距(就像有.right { margin-right: 100px; }
規則一樣)。
大多數瀏覽器:
Safari5:(上5.1.7測試,但它也發生在5.1.9)
當我刪除overflow: hidden;
它工作正常,但我需要其他內部元素。
我的問題不在於如何重新安排這個小例子,但是:
- 這是一個Safari瀏覽器5的Bug,或者是我的CSS規則在某種程度上錯的,即使在最他們的「工作」瀏覽器?
- 如果它是一個錯誤,它是否有一個名稱,我可以谷歌一些解決方法?
- 我能否以某種方式檢測哪些瀏覽器受此行爲影響,爲它們定義一些例外規則。
更新:標準的Android瀏覽器(銀河S3,爲AppleWebKit 534.30)似乎使用同樣的老的WebKit引擎。出現同樣奇怪的右頁邊距:http://jsfiddle.net/MvF3V/1/embedded/result/
您需要溢出:隱藏清除浮動。對 ? – Era
@Era:沒錯。我喜歡用'overflow:hidden'來清除浮動內容。我可以使用clearfix解決方案,但我仍然很好奇,爲什麼會出現這種奇怪的渲染。 –
這可能是safari的一個bug。是的,你可以做這個替代http://jsfiddle.net/MvF3V/2/ – Era