2015-01-06 23 views
1

我遇到了什麼似乎是一個非常具體的錯誤在IE9佈局渲染,其中box-sizing: border-boxmin-height的div的高度計算不正確,當內容是調整大小。IE9錯誤計算DOM更新的最小高度與溢出設置

考慮下面的標記和CSS:

<div class="constrained"> 
    <div class="content">Content</div> 
</div> 
* { box-sizing: border-box; } 
.constrained { 
    border: 1px solid blue; 
    min-height: 300px; 
    padding: 10px; 
    overflow-x: auto; 
} 

div.constrained在適當高度300像素(278px內部高度),頁面加載時呈現。當通過JavaScript將新內容注入div.content時,div.constrained容器增長到322px高度,就好像不再應用框尺寸。

的jsfiddle示範: http://jsfiddle.net/eafztwb2/16/

這僅與autovisiblescroll溢出值,就會發生。將overflow-x設置爲hiddeninherit(只要繼承不會最終評估爲前者)就不會顯示問題。

這不是一個問題,而是知識共享,但我會對解決方案感興趣,同時仍然允許overflow-x: auto

回答

6

這絕對看起來像一個佈局錯誤,但幸運的是解決方法非常簡單。將heightmin-height一起應用於您的元素。例如:

.constrained { 
    height: 100%; 
    min-height: 300px; 
} 

該問題也存在於Internet Explorer 10中。此解決方案適用於IE 9和10. Internet Explorer 11似乎已經自行解決了這個問題 - 我無法在那裏重現問題。

小提琴:http://jsfiddle.net/eafztwb2/23/

+0

這並解決不正確調整大小,但它引入了當添加更多的內容是約束DIV不會增長的另一個問題。 – timbonicus

+2

@timbonicus對不起,'0'不適合使用。使用'100%'代替會產生更好的結果。 – Sampson