【发布时间】:2015-01-16 00:08:37
【问题描述】:
我正在使用以下 CSS 将 div 置于页面中间:
.someWrapper {
width: 100%;
height: 100%;
position: relative;
}
.centredDiv {
width: (some width);
height: (some height)
position: absolute;
top: 50%;
left: 50%;
-webkit-transform: translate(-50%, -50%);
-moz-transform: translate(-50%, -50%);
-ms-transform: translate(-50%, -50%);
-o-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
}
我已经在 Chrome、Firefox 和 Safari 中对此进行了测试,并且可以正常工作。然而,在 Internet Explorer 中(在 IE11 上测试),虽然它确实将 div 居中在窗口的中间,但 IE 似乎认为仍然存在一个不可见的“幽灵 div”,其宽度为 50%,向下为 50%,尚未转换。
这会导致屏幕右下角出现一大堆白色溢出空间和不必要的滚动条。如果我打开溢出:隐藏,这可以解决问题,但在我的网站上这不是一个可行的选项。
那么为什么 IE 会这样做,有没有简单的方法可以绕过它?
编辑:以下代码说明了问题。在 Chrome 或 Firefox 中打开代码,没有溢出。在 IE 中打开它(在 IE11 中测试),你会看到溢出导致空白和底部和右侧的滚动条。
<!DOCTYPE HTML>
<html>
<head>
<style>
html, body {
height: 100%;
width: 100%;
margin: 0;
padding: 0;
}
#wrapper {
width: 100%;
height: 100%;
position: relative;
}
#centred {
width: 90%;
height: 90%;
position: absolute;
top: 50%;
left: 50%;
background-color: red;
-webkit-transform: translate(-50%, -50%);
-moz-transform: translate(-50%, -50%);
-ms-transform: translate(-50%, -50%);
-o-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
}
</style>
</head>
<body>
<div id="wrapper">
<div id="centred">
Hello world!
</div>
</div>
</body>
</html>
【问题讨论】:
-
等等。什么?您的代码在除 IE 之外的所有浏览器中都按预期工作?离开这儿!你一定是在开玩笑;)
-
很有趣,但仍然无济于事......
-
@AzzyDude 你能提供这个问题的演示吗?我在 Internet Explorer 团队工作,想更仔细地研究一下。另外,我们的Internet Explorer technical preview 中是否存在问题?
-
@JonathanSampson 嗨乔纳森,我已经编辑了我的答案并提供了一个可以测试的示例。如果您需要更多信息,请告诉我!
-
@JonathanSampson 我刚刚在技术预览上测试过,也出现了异常。
标签: css internet-explorer transform