html - IE Flexbox 不尊重子 Flexbox 大小

标签 html css internet-explorer flexbox cross-browser

我们有 flex-basis: auto 的父 flexbox;在最后一个父容器中,我们有一些 flexboxes 和 flex-basis: 0; 问题是最后一个父容器的行为就像他是空的。这只发生在 IE(11) 中。

请分享一些 hack 来修复它。

fiddler :https://fiddle.sencha.com/#view/editor&fiddle/2slv

这是文本示例:

-div:flex-basis=auto
-div:flex-basis=auto
-div:flex-basis=auto
    --div:flex-basis=0

IE11 在计算顶级 div 的宽度时不考虑二级 div 内容的宽度。

.container {
        display: flex;
        background: #cccccc;
        width: 50%;
    }

    .container > * {
        flex: 1 1 auto;
    }

    .first {
        background: #00ffff;
    }

    .last {
        background: #ff00ff;
        display: flex;
    }

    .btn {
        flex: 1 1 0%;
        display: flex;
        height: 30px;
    }

    .btn-inner {
        flex: 1 1 0px;
        background: rgba(0,0,0,0.2);
        display: flex;
    }


    .inner-inner {
        flex: 1 1 auto;
    }
<div class="container">
    <div class="first">
        <input type="text" \>
    </div>
    <div class="empty"></div>
    <div class="last">
        <div class="btn">
            <div class="btn-inner">
                first item item
            </div>
        </div>
        <div class="btn">
            <div class="btn-inner">
                second item item
            </div>
        </div>
    </div>
</div>

最佳答案

尝试设置 .container 类的 min-width 属性,并为 IE 浏览器将 flex-basis 属性从 0 更改为“auto”。

代码如下:

<style>
    .container {
        display: flex;
        background: #cccccc;
        width: 50%;
        min-width:300px;
    }

        .container > * {
            flex: 1 1 auto;
        }

    .first {
        background: #00ffff;
    }

    .last {
        background: #ff00ff;
        display: flex;
    }

    .btn {
        flex: 1 1 0%;
        display: flex;
        height: 30px;
    }

    .btn-inner {
        flex: 1 1 0px;
        background: rgba(0,0,0,0.2);
        display: flex;
    }

    _:-ms-fullscreen, :root .IE-FlexAuto {
        flex-basis: auto;
    }
    .inner-inner {
        flex: 1 1 auto;
    }
</style>

<div class="container">
    <div class="first">
        <input type="text" \>
    </div>
    <div class="empty"></div>
    <div class="last">
        <div class="btn IE-FlexAuto">
            <div class="btn-inner IE-FlexAuto">
                first item item
            </div>
        </div>
        <div class="btn IE-FlexAuto">
            <div class="btn-inner IE-FlexAuto">
                second item item
            </div>
        </div>
    </div>
</div>

结果如下:

enter image description here

关于html - IE Flexbox 不尊重子 Flexbox 大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56375899/

相关文章:

css - CSS background-color 前的星号是什么意思?

internet-explorer - Internet Explorer 8 无法播放 midi 文件

visual-studio - Visual Studio 2019 安装问题

javascript - 如何识别onbeforeunload是点击关闭按钮引起的

javascript - 防止在移动设备回发时调整大小

html - "modern"浏览器 "handle"一次可以有多少个 HTML 元素?

php - 无法从 HTML5 和 PHP 表单在 MySQL 表中插入记录

html - 智能手机的 CSS3 转换不起作用

jquery - 在 jQuery 中动态分配 div 高度

javascript - 让用户在客户端打开一个 xml 文件并使用 javascript 解析它