You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native使用react-native-fast-shadow组件时阴影显示异常问题

解决react-native-fast-shadow阴影显示在盒子上方的问题

react-native-fast-shadow的ShadowedView默认会把阴影绘制在子视图上方,这就是你遇到阴影盖在盒子上的原因。要让阴影处于盒子后方,需要调整组件嵌套结构和层级:

具体修改方案

  1. 拆分阴影层与内容层:将ShadowedView作为独立的背景阴影层,内容View放在它上方
  2. 用绝对定位控制阴影层位置,确保它和内容View尺寸一致且处于下方
  3. 给外层容器设置相对定位,保证阴影层的绝对定位生效

修改后的代码示例

// 外层容器,设置相对定位
<View style={{ position: 'relative' }}>
  {/* 阴影层:继承内容View的尺寸样式,绝对定位在下方 */}
  <ShadowedView 
    style={{
      ...styles.item,
      ...styles.card,
      position: 'absolute',
      shadowOpacity: 0.1,
      shadowRadius: 12,
      shadowOffset: { width: -10, height: 0 },
      backgroundColor: 'transparent', // 阴影层无需背景色
      zIndex: 0
    }}
  />
  {/* 内容层:放在阴影层上方,保留原有样式 */}
  <View style={[styles.item, styles.card, { zIndex: 1 }]}>
    <Text style={{fontWeight:600, color:"rgba(11, 88, 141, 1)"}}>text</Text>
    <View style={styles.bottomrow}>
      <Text style={{ paddingRight: 20 }}>text</Text>
      <Text style={{ color: "#FA0000" }}>text</Text>
    </View>
  </View>
</View>

关键说明

  • 内容View的半透明背景rgba(227, 234, 255, 0.3)不会遮挡下方阴影,因为阴影层层级更低
  • 如果styles.item或styles.card已经包含尺寸、边距样式,阴影层直接继承就能和内容View完全对齐
  • 通过zIndex明确指定层级,避免不同平台的渲染差异

内容的提问来源于stack exchange,提问作者abcd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 19:42:11