【问题标题】:Flex item not taking height of image child in IE 11Flex 项目在 IE 11 中不占用图像子项的高度
【发布时间】:2019-08-02 05:14:08
【问题描述】:

我正在尝试这个:

html,body{
    background-color: black;
    margin: 0;
    padding: 0;
}

.wp {
    margin: 20px auto;
    width: 300px;
}

.a {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
    -ms-flex-direction: column;
    flex-direction: column;
    -webkit-box-pack: justify;
    -ms-flex-pack: justify;
    justify-content: space-between;
    border: 2px solid red;
}

.ai {
    width: 100%;
}

.im {
    outline: 2px solid yellow;
}
<div class="wp">
    <div class="a">

        <div class="ai">
            <img class="im" width="100%" src="https://www.nasaspaceflight.com/wp-content/uploads/2018/10/2018-10-22-13_27_15-Window.jpg">
        </div>
    </div>
</div>

我在 EDGE 与 IE 11 中得到不同的结果:

图中左边是EDGE,右边是IE11。

我尝试按照Flexbugs 的建议在div 中包含img,但得到了相同的结果。

任何想法如何修复 IE11 版本?

【问题讨论】:

    标签: css flexbox internet-explorer-11 microsoft-edge


    【解决方案1】:

    IE 中的 Flex 问题是一个常见问题,而且,display: flex; 不是一个被广泛覆盖的属性。尝试以下选项:

    .a { flex: 1; }
    

    或父母。

    .wp { width: 100%; } // or 80%
    

    这应该可以解决问题。


    如果您想保持.wp 300px,请尝试以下操作。为.wp 添加一个额外的父级并将其设置为 300px 并将.wp 设置为 100%:

    HTML

    <div class="wp-parent">
        <div class="wp">
            <div class="a">
                <div class="ai">
                    <img class="im" width="100%" src="/2018-10-22-13_27_15-Window.jpg">
                </div>
            </div>
        </div>
    </div>
    

    CSS

    .wp-parent { 
        width: 300px; 
    }
    
    .wp { 
        width: 100%; 
    }
    

    【讨论】:

    • 您通常将flex 用于 flex child,而不是 flexbox 容器本身。
    • 尝试将width: 100% 添加到wp 容器或body 并告诉我。
    • 好的,它可以缩放到那个,但是如果我需要 wp 为 300px 怎么办?
    • 恐怕这是 IE 的 flex 的限制。您必须将其更改为 display: inline-blockdisplay: run-in; 或者您可以为 .wp 添加一个额外的父级并将其设置为 300px 并设置为 .wp 100% 宽度。
    【解决方案2】:

    在这种情况下,IE11 的问题似乎是 flex 项 (.ai) 在渲染过程中采用了图像的固有高度 (877px),然后停止响应。

    width: 100% 命令将图像缩小,似乎是在调整 flex 项的大小之后出现的,但 IE11 已经完成。

    我会使用flex-direction: row 来解决这个问题。

    另外,要消除图像下方的小间隙,请参阅此帖子:Mystery white space underneath image tag

    【讨论】:

    • 是的,我想我无法真正使用 flex 列,所以我所做的就是用带背景的 div 替换图像,然后我只使用了比率为原始图像设置正确的宽度和高度百分比。它只发生在 img 标记上,因为它具有您提到的 内在比率。 IE11 确实已经死了,我正在考虑制作一个特殊页面,建议用户升级浏览器……是时候让资源管理器消失了。
    • 您始终可以将实际图像裁剪为您想要的尺寸,然后将其加载到 HTML 中。
    • 如果您选择“升级浏览器” 路径,请在此处查看我的问题:stackoverflow.com/q/33359157/3597276
    • 您无需制作特殊页面,只需将它们重定向到此处即可节省时间:browsehappy.com
    猜你喜欢
    • 2018-06-11
    • 2015-12-10
    • 2019-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-17
    • 1970-01-01
    • 2017-08-12
    相关资源
    最近更新 更多