最大宽度在 IE11 的 flex-box 中无法正常工作

Posted

技术标签:

【中文标题】最大宽度在 IE11 的 flex-box 中无法正常工作【英文标题】:max-width not functioning correctly in flex-box on IE11 【发布时间】:2017-07-18 12:45:00 【问题描述】:

在 IE11 中,如果您为 flex-box 定义宽度并且子 img 元素的 max-width 为 100%,则它不会尊重 max-width。有人找到解决方案了吗?

这适用于 IE10、Chrome 和 Firefox,但不适用于 IE11:http://jsfiddle.net/3ky60heq/

.container 
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
  width: 500px;
  height: 125px;


.image1 
  width: 100%;


.image2,
.image3 
  max-width: 100%;
<div class='container'>
  <img class='image1' src="https://clagnut.com/sandbox/imagetests/wideimg.png">
</div>

<div class='container'>
  <img class='image2' src="https://clagnut.com/sandbox/imagetests/wideimg.png">
</div>

<div class='container'>
  <img class='image3' src="https://clagnut.com/sandbox/imagetests/smimg1.jpg">
</div>

我知道这个问题以前被问过,并且有很多不同的答案,但是我在 *** 或其他地方找到的每个解决方案要么有效地将图像的宽度强制为 100%,要么在其他浏览器上中断。

【问题讨论】:

IE11 与Flexible Box Layout Module 存在各种错误。这是一个GitHub page,记录了所有可能对您有所帮助的 flex-box 已知问题。 【参考方案1】:

我想我已经弄清楚了。 如果我在图像上设置此样式:

flex-shrink: 0;

那么它似乎可以全面发挥作用。http://jsfiddle.net/qgybon8q/2/

【讨论】:

flex-grow 默认情况下已经为 0。 flex-basis 已经是 auto,另一个默认值。您所做的唯一更改是 flex-shrink,将其从 1(默认值)更改为 0。这似乎可以解决问题(不知道为什么)。所以你真正需要的是flex-shrink: 0。很酷的发现。 是的,我刚刚注意到了。我更新了帖子。您是否碰巧知道报告错误/解决方法的最佳地点?感谢您的帮助。 不错的解决方案! +1

以上是关于最大宽度在 IE11 的 flex-box 中无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

图像的最大宽度不适用于 IE 11 的 flexbox,但适用于谷歌浏览器

IE11 flexbox 最大宽度和边距:自动;

Flex-box 项目无法在 chrome 上正确重新渲染

JavaScript在IE中应用最大宽度(像素)

没有javascript的IE6中的最小/最大宽度?

ie8 - 当图像只有最大宽度时,将文本宽度限制为图像宽度