无法在IE11上使用Flexbox垂直居中内容

时间:2018-01-12 16:43:30

标签: html css css3 internet-explorer flexbox

所以,我正在使用flexbox垂直居中2个div,它以所有主流浏览器为中心,但它并没有在IE11上正确居中。

搜索这个我发现有一个问题,以最小高度为中心的div,但我没有使用它,所以我不知道什么是错的或丢失。

JSFiddle

.container {
  position: relative;
  display: flex;
  align-items: center;
}

img {
  max-width: 100%;
}

.prev {
  width: 40px;
  height: 40px;
  background: rgba(0,0,0,.8);
  position: absolute;
  left: 30px;
}

.next {
  width: 40px;
  height: 40px;
  background: rgba(0,0,0,.8);
  position: absolute;
  right: 30px;
}
 <div class="container">
  <img src="https://www.w3schools.com/css/trolltunga.jpg">
  <div class="prev"></div>
  <div class="next"></div>
</div>

1 个答案:

答案 0 :(得分:0)

您可以移除弹性箱规则,而是使用transform ...

垂直居中您的div

fiddle

&#13;
&#13;
.container {
  position: relative;
}

img {
  max-width: 100%;
  display: block;
  /* added */
}

.prev,
.next {
  top: 50%;
  transform: translateY(-50%);
  width: 40px;
  height: 40px;
  background: rgba(0, 0, 0, .8);
  position: absolute;
}

.prev {
  left: 30px;
}

.next {
  right: 30px;
}
&#13;
<div class="container">
  <img src="https://www.w3schools.com/css/trolltunga.jpg">
  <div class="prev"></div>
  <div class="next"></div>
</div>
&#13;
&#13;
&#13;

或者,如果您想保留Flexbox规则,可以添加topbottommargin属性以满足IE。

fiddle

&#13;
&#13;
.container {
  position: relative;
  display: flex;
  align-items: center;
}

img {
  max-width: 100%;
  display: block; /* added */
}

.prev,
.next {
  top: 0;
  bottom: 0;
  margin: auto;
  width: 40px;
  height: 40px;
  background: rgba(0, 0, 0, .8);
  position: absolute;
}

.prev {
  left: 30px;
}

.next {
  right: 30px;
}
&#13;
<div class="container">
  <img src="https://www.w3schools.com/css/trolltunga.jpg">
  <div class="prev"></div>
  <div class="next"></div>
</div>
&#13;
&#13;
&#13;