html – Internet Explorer – Flexbox Image Ratio

以下小提琴在Chrome / Firefox中正确显示图像比例.

然而,在Internet Explorer中,当调整大小以适应其容器时,图像(应为正方形)将保持其在FlexBox布局中的原始高度.

http://jsfiddle.net/minlare/knyagjk5/

<section>
<article>
    <div class="details">
        <img src="http://i.ytimg.com/vi/rb8Y38eilRM/maxresdefault.jpg" alt="face"/>
        <h4>Name</h4>
        <div class="description">
            <p>Lorem ipsum dolor sit amet,consectetur adipiscing elit. Donec a ultrices lectus. Curabitur molestie volutpat mattis.</p>
        </div>
    </div>
</article>
<article>
    <div class="details">
        <img src="http://i.ytimg.com/vi/rb8Y38eilRM/maxresdefault.jpg" alt="face"/>
        <h4>Name</h4>
        <div class="description">
            <p>Lorem ipsum dolor sit amet,consectetur adipiscing elit. Donec a ultrices lectus. Curabitur molestie volutpat mattis. Fusce fermentum auctor mauris,auctor lacinia mauris ornare faucibus.</p>
        </div>
    </div>
</article>
</section>

section{
    display: -webkit-Box;
    display: -webkit-flex;
    display: -moz-Box;
    display: -ms-flexBox;
    display: flex;

    -webkit-flex-wrap: wrap;
    -moz-flex-wrap: wrap;
    -ms-flex-wrap: wrap;
    flex-wrap: wrap;
}
article{
    display: -webkit-Box;
    display: -webkit-flex;
    display: -moz-Box;
    display: -ms-flexBox;
    display: flex;

    -webkit-Box-flex: 1;
    -webkit-flex-grow: 1;
    -moz-flex-grow: 1;
    -ms-flex-positive: 1;
    flex-grow: 1;

    -webkit-Box-align: stretch;
    -ms-flex-align: stretch;
    -webkit-align-items: stretch;
    -moz-align-items: stretch;
    align-items: stretch;

    width: 50%;
    padding-left: 10px;
    padding-right: 10px;
    margin-bottom: 20px;
    Box-sizing: border-Box;
}
.details{
    display: -webkit-Box;
    display: -webkit-flex;
    display: -moz-Box;
    display: -ms-flexBox;
    display: flex;

    -webkit-Box-direction: normal;
    -webkit-Box-orient: vertical;
    -webkit-flex-direction: column;
    -moz-flex-direction: column;
    -ms-flex-direction: column;
    flex-direction: column;

    width: 100%;
    border: 1px solid #666;
}
.image{
    width: 100%;
    max-width: 100%;
}
img{
    width: 100%;
    max-width: 100%;
    height: auto;
}
h4{
    padding: 10px;
    margin-bottom: 0;
}
.description{
    -webkit-Box-flex: 1;
    -webkit-flex-grow: 1;
    -moz-flex-grow: 1;
    -ms-flex-positive: 1;
    flex-grow: 1;
}

如何防止/修复?

解决方法

其原因是 known documented bug,其中IE10和IE11并不总是保留内在比率.而且,根据@ gaynorvader的评论,它在IE10中的工作原理是,IE10中“flex”的默认值为0 0,而最终的规格为0 1 auto.这意味着在IE10中,您的图像被视为flex-grow:0,如 flexbug 6所述

这里的修复是将您的图像设置为flex:none;按照:http://jsfiddle.net/hexalys/knyagjk5/12/,或在其周围添加一个附加容器.但是如果您不需要,我建议不要将图像弹出项目.在这种情况下,您的文章容器已经是一个flex-item,所以我不认为你需要从.details类中创建另一个嵌套的flex项.这似乎是不必要的

相关文章

操作步骤 1、进入elasticsearch的plugin,进入ik。进入config。 2、在config下面建立以.dic为后缀的字典...
lengend data数据中若存在&#39;&#39;,则表示换行,用&#39;&#39;切割。
代码实现 option = { backgroundColor: &amp;#39;#080b30&amp;#39;, tooltip: { trigger: &...
问题原因 原因在于直接在js中取的变量并复制给var变量。 于是就变成这样。 解决办法 var data = &#...
前言 最近做了一个调查问卷导出的功能,需求是将维护的题目,答案,导出成word,参考了几种方案之后,选...
对于很多人来说,用字符编码都是熟能生巧,而不清楚为什么是那样的字符编码,所以我在这列了一个表,翻...