【问题标题】:Flex on Internet Explorer not workingInternet Explorer 上的 Flex 无法正常工作
【发布时间】:2015-02-08 20:15:44
【问题描述】:

我有以下 CSS 和 HTML 代码:

.login-body{
    background: url(../img/bg.png) center center no-repeat;
    background-size: cover;
    min-height: 100vh;
    max-height: 100vh;
    height: auto;
    background-color: #26A65B;
    display: -webkit-box;      
    display: -moz-box;         
    display: -ms-flexbox;      
    display: -webkit-flex;     
    display: flex;
    align-content: center;
    align-items: center;
    justify-content: center;
}
.navbar-contarte{
    border-radius: 0px;
    background-color: #27ae60;
}
.navbar-contarte a{
    color: #fff !important;
    border: 0;
}
.col-centered{
    float: none;
    margin: 0 auto;
}
.center-btn-or-img{
    display: block;
    margin: 0 auto;
}
.pub-banner-block{
    text-align: center;
    background-color: rgba(255,255,255, 0.4);
    padding: 20px;
    border-radius: 4px;
    box-shadow: 1px 1px 10px #fff;

}

HTML:

<nav class="navbar navbar-inverse navbar-contarte navbar-fixed-top">
        <div class="container-fluid">
        <!-- Brand and toggle get grouped for better mobile display -->
            <div class="navbar-header">
                <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                </button>
                <a class="navbar-brand" href="#">Contarte</a>
            </div>
            <div class="collapse navbar-collapse navbar-right" id="bs-example-navbar-collapse-1">
                <button type="button" class="btn btn-primary navbar-btn">Crear Cuenta</button>
                <ul class="nav navbar-nav navbar-right">
                    <li><a href="#">Iniciar Sesión</a></li>
                </ul>
            </div>
        </div>
    </nav>
    <div class="login-body">
        <div class="pub-banner-block">
            <h1>ContarteHN</h1>
            <h2>Contabilidad y Finanzas<br> automatizadas para tu empresa</h2>
            <hr>
            <form method="post" role="form">
                <div class="form-group">
                    <input type="emal" placeholder="email" class="form-control input-lg">
                    <br>
                    <button type="button" class="btn btn-success btn-lg btn-block">Crear Cuenta</button>
                </div>
            </form>
        </div>
    </div>

它适用于除 Internet Explorer 之外的所有网络浏览器。以下是有关该问题的一些屏幕截图:

这是它在 Internet Explorer 上的外观:

不知道为什么 Internet Explorer 没有按应有的方式呈现它。这个网络应用程序应该支持 IE10+,但显然,IE 又做到了,它搞砸了布局。有想法该怎么解决这个吗?

【问题讨论】:

    标签: css internet-explorer flexbox


    【解决方案1】:

    MSN 状态:

    在 Internet Explorer 10-11(但不是 12+)中,带有 flex-basis 部分中的无单位值在语法上被考虑 无效,因此将被忽略。一种解决方法是始终包含一个 flex 速记值的 flex-basis 部分中的单位。

    在您的.login-body 类中,我删除了min-height: 100vh; max-height: 100vh; 并将height:auto(无单位)替换为height: 80vh;。现在该框垂直居中(在全屏模式下查看):

    .login-body{
        background: url(http://kclr96fm.com/wp-content/uploads/2015/01/keyboard.jpg) center center no-repeat;
        background-size: cover;
        height: 80vh;
        background-color: #26A65B;
        display: -webkit-box;      
        display: -moz-box;         
        display: -ms-flexbox;      
        display: -webkit-flex;     
        display: flex;
        align-content: center;
        align-items: center;
        justify-content: center;
    }
    .navbar-contarte{
        border-radius: 0px;
        background-color: #27ae60;
    }
    .navbar-contarte a{
        color: #fff !important;
        border: 0;
    }
    .col-centered{
        float: none;
        margin: 0 auto;
    }
    .center-btn-or-img{
        display: block;
        margin: 0 auto;
    }
    .pub-banner-block{
        text-align: center;
        background-color: rgba(255,255,255, 0.4);
        padding: 20px;
        border-radius: 4px;
        box-shadow: 1px 1px 10px #fff;
    
    }
    <nav class="navbar navbar-inverse navbar-contarte navbar-fixed-top">
            <div class="container-fluid">
            <!-- Brand and toggle get grouped for better mobile display -->
                <div class="navbar-header">
                    <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
                    <span class="sr-only">Toggle navigation</span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    </button>
                    <a class="navbar-brand" href="#">Contarte</a>
                </div>
                <div class="collapse navbar-collapse navbar-right" id="bs-example-navbar-collapse-1">
                    <button type="button" class="btn btn-primary navbar-btn">Crear Cuenta</button>
                    <ul class="nav navbar-nav navbar-right">
                        <li><a href="#">Iniciar Sesión</a></li>
                    </ul>
                </div>
            </div>
        </nav>
        <div class="login-body">
            <div class="pub-banner-block">
                <h1>ContarteHN</h1>
                <h2>Contabilidad y Finanzas<br> automatizadas para tu empresa</h2>
                <hr>
                <form method="post" role="form">
                    <div class="form-group">
                        <input type="emal" placeholder="email" class="form-control input-lg">
                        <br>
                        <button type="button" class="btn btn-success btn-lg btn-block">Crear Cuenta</button>
                    </div>
                </form>
            </div>
        </div>

    【讨论】:

    • 谢谢,它就像一个魅力!但我不明白这里到底发生了什么,你能更详细地解释一下吗?
    • 为了正确对齐,IE 要求容器元素的大小(水平对齐的宽度,垂直的高度)以明确的单位表示,即 px、em、pt、hv 等。值 'auto ' 被认为是无单位的,所以 IE 不知道如何对齐。我只是通过将高度设置为“80hv”来修复它。