IE11:Flex容器内的绝对位置DIV保持不流动

时间:2018-11-07 09:55:14

标签: html css3 flexbox internet-explorer-11 absolute

我有一个display:flex容器,其中包含一个图像和一个div,图像的宽度为100%,并且div必须在容器中水平和垂直居中(具有flex属性)。为了使图像显示在图像的顶部,我使用position:absolute。问题在于,在IE11上,定位的绝对div始终显示在流之外。

这是在IE11上的外观: enter image description here

这是外观(Chrome): enter image description here

这是我的HTML:

<div class="container shop-service">
    <img class="img-container" src="/_ui/responsive/theme-lambda/services/image-services.jpg">
    <div class="shop-service-content">
        <div class="shop-service-img">
        <img alt="ecommerce" src="/_ui/responsive/theme-lambda/services/ecommerce.svg"></div>
        <h2>E-commerce</h2>
        <p class="col-md-12">Poderá fazer os seus pedidos a qualquer hora do dia, 365 días por ano, de forma
        segura, ágil e confidencial.</p> <a class="btn btn-primary" href="/Open-Catalogue/c/1">Comprar agora</a>
    </div>
</div>

这是我的CSS:

.shop-service {
    width: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    padding-top: 35px;
    padding-bottom: 35px;
    position: relative;
}

.shop-service img {
    width: 100%;
    height: auto;
}

.shop-service .shop-service-content {
    position: absolute;
    width: 100%;
    max-width: 400px;
    padding: 0 15px;
}

3 个答案:

答案 0 :(得分:0)

尝试添加top:0声明;进入您的.shop-service .shop-service-content类。

答案 1 :(得分:0)

尝试指定父容器.shop-service的高度

答案 2 :(得分:0)

在IE中使用flexbox和绝对位置来解决问题是正常的。

一种更推荐的方法是使用 transform:translate()属性。

您可以结合使用Flexbox和transform:translate,因为后者不会影响前者。

我已经做了一个样本,也许您可​​以参考。

HTML。

    <div class="container shop-service">
    <img class="img-container" src="Images/test7.jpg" />
    <div class="shop-service-content">
        <div class="shop-service-img">
            <img alt="ecommerce" src="Images/test6.jpg" />
        </div>
        <h2>E-commerce</h2>
        <p class="col-md-12">
            Poderá fazer os seus pedidos a qualquer hora do dia, 365 días por ano, de forma
            segura, ágil e confidencial.
        </p> <a class="btn btn-primary" href="#">Comprar agora</a>
    </div>
</div>

CSS。

   .shop-service {
        width: 100%;
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        text-align: center;
        padding-top: 35px;
        padding-bottom: 35px;
        position: relative;
    }

        .shop-service .shop-service-content {
            position: absolute;
            width: 100%;
            max-width: 400px;
            padding: 0 15px;
            left: 50%;
            top: 50%;
            transform: translate(-50%,-50%);
        }

        .shop-service img {
            width: 100%;
            height: auto;
        }

结果屏幕截图:jfiddle