首页 > 解决方案 > IE11:Flex 容器内的绝对 DIV 位置保持在流动之外

问题描述

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

这是它在 IE11 上的样子: 在此处输入图像描述

这就是它的外观(Chrome): 在此处输入图像描述

这是我的 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;
}

标签: htmlcssflexboxinternet-explorer-11absolute

解决方案


在IE中遇到flexbox和absolute position的问题是正常的。

更推荐的方法是使用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;
        }

结果截图:结果


推荐阅读