问题描述
我在 ie9 上有一个非常奇怪的问题,其中一个带有 max-height(设置为 calc() 和 vh) 的 div 和 overflow auto 不滚动。
您可以通过点击此图像来看到发生的情况 (如果 GIF 未在此处加载):
我的 HTML:
<div class="modal">
<div class="modal__title">Modal Title</div>
<div class="modal__body">
<p>When I am too tall, I should scroll on ie9, but I don't.</p>
</div>
<div class="modal__footer">Footer here</div>
</div>
相关 CSS:
.modal {
min-width: 500px;
max-width: 800px;
border-radius: 4px;
max-height: 65vh;
overflow: hidden;
background-color: white;
position: fixed;
top: 15vh;
left: 50%;
-webkit-transform: translateX(-50%);
-ms-transform: translateX(-50%);
transform: translateX(-50%);
}
.modal__body {
max-height: calc(65vh - 120px)); // 120 is the combined height of the header and footer
overflow-y: auto;
}
我不明白为什么会发生这种情况,因为 ie9 支持 vh, calc() 和 max-height 。有任何想法吗?
JSFiddle 演示:https://jsfiddle.net/sbgg5bja/3/
最佳解决方案
当组合 position: fixed
和 transform: translate
时,这似乎是一个重印问题。
这里有两个可能的修复:
-
设置 overflow 属性滚动。即,
overflow-y:scroll
-
-ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=1, M12=0, M21=0, M22=1, SizingMethod='auto expand')";
如果这两个都没有,您可以删除 transform: translate
并使用例如 display: table
来使其居中。
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。