当儿童图像在IE

时间:2017-09-15 21:13:03

标签: css css3 internet-explorer flexbox internet-explorer-11

我再次意识到这个问题已被问过几次,但不管我找到什么答案,它实际上什么也没做。

我正在尝试做Chrome以及任何其他受人尊敬的浏览器所做的事情:

Chrome rendering of the flexbox

然而,在IE11中,我得到了这个:

IE version

.inner-image img {
  border-radius: 50%;
  max-width: 100%;
  // http://jsfiddle.net/qgybon8q/2/
  flex-shrink: 0;

  // http://jsfiddle.net/mftnbk38/4/
  //flex: 0 0 auto;
  //object-fit: scale-down;

  // https://connect.microsoft.com/IE/feedback/details/1218984/ie11-display-flex-issue
  //flex: 1;

  // 
  //max-width: calc( 100% - 0.1px );
}

这个小提琴可以在这里找到:https://jsfiddle.net/Kikketer/e9jb5pvh/

我尝试过的所有尝试都以失败告终。事实上即使在运行其他解决方案的小提琴时,它似乎也无法发挥作用。

我有什么遗失的吗?

1 个答案:

答案 0 :(得分:1)

也许您在Microsoft文档中错过了这篇文章:

来自文章:

  

如果有人到达这里试图修复IE11中的这个令人抓狂的问题 - 我建议在图像的flex包装器中添加min-height: 1px以强制IE根据height: auto的图像重新计算大小适用于它。这解决了这个问题并且对其他浏览器没有影响,因此我不需要专门针对IE11。

所以,将min-height: 1px添加到.body

revised fiddle

.wrapper {
  display: flex;
  flex-direction: column;
  border: 1px solid black;
  width: 400px;
}

.head {
  background-color: rgba(200, 100, 100, 1);
}

.body {
  min-height: 1px; /* NEW (for IE11) */
  background-color: rgba(200, 200, 200, 1);
}

.inner {
  display: flex;
  flex-direction: row;
}

.inner-content {
  flex: 1 1 75%;
}

.inner-image {
  flex: 1 1 25%;
}

.inner-image img {
  border-radius: 50%;
  max-width: 100%;
  flex-shrink: 0;
}

.foot {
  background-color: rgba(100, 200, 100, 1);
}
<div class="wrapper">
  <div class="head">
    <p>Header content</p>
  </div>
  <div class="body">
    <div class="inner">
      <div class="inner-content">
        <p>The image to the right is normally 253px high/wide</p>
      </div>
      <div class="inner-image">
        <img src="http://connectorsdemo.azurewebsites.net/images/MSC12_Oscar_002.jpg">
      </div>
    </div>
  </div>
  <div class="foot">
    <p>Footer Content</p>
  </div>
</div>