如何在react-native中使用zIndex

Sud*_*Plz 37 javascript flexbox react-native

我想要实现以下目标:

在此输入图像描述

以下图片是我现在可以做的,但这不是我想要的. scenarioAscenarioB

我现在拥有的代码示例:

renderA() {
    return (
        <View style={ position: 'absolute', zIndex: 0 }>    // parent of A
            <View style={ zIndex: 2 }>  // element A
            </View>
            <View style={ zIndex: 2 }>  // element A
            </View>
        </View>
    );
}

renderB() {
    return (
        <View style={ position: 'absolute', zIndex: 1 }>    // element B
        </View>
    );
}


render() {
    return (
        <View>
            {this.renderA()}
            {this.renderB()}
        </View>
    );
}
Run Code Online (Sandbox Code Playgroud)

用文字表达,我想要

  • 家长A:低于一切.
  • 元素B:位于上面的父A但在元素A下面.
  • 元素A:高于一切.

请注意,父A元素B都必须绝对定位,并且元素A和元素B都必须是可点击的 ......!

小智 48

使用elevation的,而不是zIndexAndroid设备

elevatedElement: {
  zIndex: 3, // works on ios
  elevation: 3, // works on android
}
Run Code Online (Sandbox Code Playgroud)

这对我来说很好用!

  • 您刚刚结束了一整天的 Android 调试。Android 上的“elevation”,而不是“zIndex”。啊!这似乎与标准 CSS 有所不同。“高程”应该会影响阴影等;仅美观,与 z-index 不可比较。 (8认同)
  • 对我来说,标高仅在视觉上解决了问题,即以前隐藏的元素现在可见,但在这种状态下它们不再具有交互性(即无法单击按钮等)。唯一的解决方案(至少对于 Android 而言)似乎是元素的适当顺序。 (2认同)

Mat*_*Aft 26

我相信有不同的方法可以根据你的需要做到这一点,但一种方法是将元素A和B放在Parent A中.

    <View style={{ position: 'absolute' }}>    // parent of A
        <View style={{ zIndex: 1 }} />  // element A
        <View style={{ zIndex: 1 }} />  // element A
        <View style={{ zIndex: 0, position: 'absolute' }} />  // element B
    </View>
Run Code Online (Sandbox Code Playgroud)


Sud*_*Plz 5

我最终通过创建第二个模仿 B 的对象解决了这个问题。

我的架构现在如下所示:

在此输入图像描述

我现在有 B1(在 A 的父级内)和 B2 在其外。

B1 和 B2 紧邻,因此肉眼看起来就像是 1 个物体。

  • 这看起来更像是一个杂凑而不是一个可重现的解决方案。有人有更工程化的解决方案吗? (20认同)
  • 我以为你说过你不希望 B 成为 A 的父级。这比最受支持的答案更好吗? (2认同)