代码之家  ›  专栏  ›  技术社区  ›  Wedmich

绝对定位元素不高于Safari iOS中的其他绝对定位元素

  •  2
  • Wedmich  · 技术社区  · 10 年前

    我有一张有下拉列表的桌子 enter image description here

    表格的下拉列表和标题是绝对定位的。

    下拉列表具有“z索引:20” 标题具有“z索引:10” 下拉列表的“top”和“left”属性在代码中设置。

    下面是下拉列表和标题的样式

    .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;
     }
    

    下拉列表应位于表格标题上方。

    该问题仅出现在iOS设备上的Safari中-下拉列表位于标题下。 有人知道如何解决这个问题吗?

    2 回复  |  直到 10 年前
        1
  •  3
  •   Wedmich    10 年前

    我发现了问题所在。这是因为复杂的布局和许多风格。

    下拉框实际上已经呈现,但下拉框的一部分是不可见的(似乎被其他div块重叠),但用户仍然可以与该不可见部分交互。

    问题是其中一个外部父div容器具有属性 -webkit溢出滚动:触摸; 因此,在Safari中渲染Webkit时,隐藏了部分下拉列表。所以我删除了这个属性,但留下了webkit转换:translate3d(0,0,0);下拉菜单,一切开始顺利!

        2
  •  0
  •   vijay    10 年前

    我认为您正在使用z索引;在下拉列表中翻译3d。所以,当您使用translate3d时,就不能再考虑z索引了。

    试试下面的,

    .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;
     }