"转换:translateX(-50%)"与"位置:绝对"和"左:50%"导致Internet Explorer中的滚动条

时间:2014-08-26 14:36:54

标签: html css3 internet-explorer transform

我想将main容器放在视口中间。

容器绝对定位,因为我希望它使用position: absolute;top: 0;bottom: 0来填充整个垂直空间(我知道我可以通过height:100%使用html, body, main来达到类似的效果,但只要main的内容超过了整个高度,main容器就不会在这100%的范围内伸展,这不是我想要的。“

因此,为了将绝对定位的main容器放置在视口的中间,我依靠transform: translateX(-50%),它可以轻松地工作 - 除了在Internet Explorer中添加了不需要的水平滚动条!

看看这支笔:

http://codepen.io/jmuheim/pen/wCzcr

有没有办法阻止水平滚动条? overflow-y: none似乎无法运作。

3 个答案:

答案 0 :(得分:6)

前几天我遇到了同样的问题。它似乎是一个错误,也是更容易解决问题的方法,它可以从right代替left来定位元素。

要使用您的示例,结果将是:

main {
  position: absolute;
  top: 0;
  right: 50%;
  bottom: 0;
  width: 50%;
  background-color: red;
  -webkit-transform: translateX(50%);
  transform: translateX(50%);
}

你可以在那里试一试:https://jsfiddle.net/julienvanderkluft/3udza0te/

答案 1 :(得分:0)

您只需要更改两件事。

right: 50%;
transform: translateX(50%)

答案 2 :(得分:0)

如果您想将元素水平和垂直居中,也可以使用类似的方法。

.parent {
  display: flex;
}

.child {
  margin: auto;
}
<div class="parent">
  <div class="child">
    <span>Center</span>
  </div>
</div>