绝对定位元素不在 Safari 中其他绝对定位元素之上 iOS

Absolute positioned element is not above other absolute positioned elements in Safari iOS

我有一个 table 带有下拉菜单

table 的下拉菜单和 header 是 absolute-positioned。

下拉菜单有 "z-index: 20" Header 有 "z-index: 10" "top" 和 "left" 下拉菜单的属性在代码中设置。

这里是下拉菜单的样式 header

.data-table-head {
    overflow: hidden;
    display: flex;
    flex-direction: row;
    justify-content: flex-end;
    flex: 0 0 auto;
    height: 24px;
    position: absolute;
    top: 0;
    right: 0;
    left: 0;
    z-index: 12;
}  

 .custom-select-list {
        position: absolute;
        margin: 34px 0 0 0;
        min-width: 84px;
        font-weight: normal;
        right: 15px;
        -webkit-transform: translate3d(0, 0, 0);
        transform: translateZ(1px);
        z-index: 10000;
 }

下拉菜单应位于 table header 上方。

该问题仅在 iOS 设备上的 Safari 中出现 - 下拉菜单位于 header 下方。 有谁知道如何解决这个问题?

我认为您在下拉菜单中同时使用了 z-index 和 translate3d。所以,当你使用 translate3d 时,就不能再考虑 z-index 了。

试试下面,

.data-table-head {
    overflow: hidden;
    display: flex;
    flex-direction: row;
    justify-content: flex-end;
    flex: 0 0 auto;
    height: 24px;
    position: absolute;
    top: 0;
    right: 0;
    left: 0;
    z-index: 12;
}  

 .custom-select-list {
        position: absolute;
        margin: 34px 0 0 0;
        min-width: 84px;
        font-weight: normal;
        right: 15px;
        z-index: 10000;
 }

我发现了问题所在。因为布局复杂,样式多

下拉菜单确实被渲染了,但是下拉菜单的一部分是不可见的(看起来像是被其他 div-blocks 重叠了)但是用户仍然可以与那个不可见的部分进行交互。

问题是外部父 div 容器之一有 属性 -webkit-溢出滚动:触摸; 因此,在 Safari 中呈现 Webkit 时隐藏了部分下拉菜单。所以我删除了 属性 但留下了 -webkit-transform: translate3d(0, 0, 0);下拉菜单,一切都开始正常工作了!