首页 > 解决方案 > 图片浮动在模态之上,除非没有为图片定义 z-index

问题描述

我有一个如下定义的模态:

<style>

                                        /* The Modal (background) */
                                        .modal {
                                            display: none; /* Hidden by default */
                                            position: fixed; /* Stay in place */
                                            z-index: 2147483647; /* Sit on top */
                                            padding-top: 70px; /* Location of the box */
                                            left: 0;
                                            top: 0;
                                            width: 100%; /* Full width */
                                            height: 100%; /* Full height */
                                            overflow: auto; /* Enable scroll if needed */
                                            background-color: rgb(0,0,0); /* Fallback color */
                                            background-color: rgba(0,0,0,0.4); /* Black w/ opacity */
                                        }

                                        /* Modal Content */
                                        .modal-content {
                                            background-color: #fefefe;
                                            margin: auto;
                                            padding: 20px;
                                            border: 4px solid #7FBE52;
                                            width: 80%;
                                        }
                                        .modal-content h1 {
                                             text-decoration: underline;
                                             text-decoration-color: #7FBE52;
                                        }

                                        /* The Close Button */
                                        .close {
                                            color: #aaaaaa;
                                            float: right;
                                            font-size: 28px;
                                            font-weight: bold;
                                        }

                                        .close:hover,
                                        .close:focus {
                                            color: #000;
                                            text-decoration: none;
                                            cursor: pointer;
                                        }
</style>

<div id="trainerModel10" class="modal" style="display: block;">
    <div class="modal-content">
        <span id="close" class="close">×</span>
        <div style="">

        </div>                              
    </div>
</div>

然后进一步进入页脚中的页面,有一个图像一直位于模式上方。当根本没有为此图像设置 z-index 时,它应该位于模态框后面。但是,当设置 z-index 时,它需要保持浮动在模态的顶部。

    <style>
    .et_pb_column {
        margin-right: 0!important;
        width: 50%;
        margin: 0;
        z-index: 1;
        float: left;
        position: relative;
        background-position: center;
        background-size: cover;
        padding: 0;
        border: 0;
        outline: 0;
        background: 0 0;
        font-size: 100%;
        vertical-align: baseline;
    }


    </style>

<div class="et_pb_column et_pb_column_1_2">
    <img class="aligncenter size-full wp-image-1032" src=".." alt=".." width="459" height="204">
</div>

可以在此处找到该问题的示例页面:https://educatefit.co.uk/search-trainer/personal-trainers-finchley/单击其中一个配置文件“快速查看”以打开模式,然后向下滚动页脚图片浮在模态框上方。

为什么即使 z-index 设置小于模态,它仍然漂浮在上面?

标签: htmlcss

解决方案


#map + div {
  z-index: 1;
}

会修复它。要了解原因,请阅读有关堆叠上下文的信息。

简而言之,原则是:每个元素,当给定 a 时z-index,它会在包含堆栈上下文的特定位置为其所有子z-index级创建一个堆栈上下文。因此,在您的元素内部,您可以在子元素上拥有 + 无限和 - 无限(理论上,在实践中存在最小值和最大值),它们都将被放置在z-index父堆叠上下文中的元素的位置。

因此,如果我创建两个元素,一个带有z-index:1,另一个带有z-index:2,则 2 的任何子元素都将显示在 1 的子元素之上,而不管它们的z-index. 他们z-index唯一的事情在他们的楼层,但他们在下面一层。

因此,为了始终能够解决z-index问题,您需要在要排序的元素之间找到最接近的共同父级,并为您想要的子元素提供高于z-index下方的子元素。


推荐阅读