代码之家  ›  专栏  ›  技术社区  ›  Amit Malakar

React Native-图像半圆(使用CSS)

  •  2
  • Amit Malakar  · 技术社区  · 6 年前

    我有一个圆形图像,我需要在 半圆 使用 反应本机 类似于 显示在附件中 。请帮助使用CSS。

    enter image description here

    2 回复  |  直到 5 年前
        1
  •  2
  •   alokkumardubey    6 年前

    以下是我为图像的左右位置找到的解决方案:

    renderLeftRightImage (item, index) {
        var imagePath = item.image?(Strings.BASE_IMAGE_URL+item.image[0].image):'https://placeimg.com/640/480/people';        
    
        if(item.position == 'left'){
            return(
                <View style={{overflow: 'hidden', width : 105, height:210, position : 'absolute', left:80,  bottom:62, borderTopLeftRadius:150, borderBottomLeftRadius:150, backgroundColor:'transparent'}}>
                    <Image style={{width : 210, height:210}} source={{uri:imagePath}}/>
                </View>
            )
        }
        else if(item.position == 'right'){
            return(
                <View style={{overflow: 'hidden', width : 105, height:210, position : 'absolute', right:80,  bottom:62, borderTopRightRadius:150, borderBottomRightRadius:150, backgroundColor:'transparent'}}>
                    <Image style={{width : 210, height:210, position:'absolute', right:0}} source={{uri:imagePath}}/>
                </View>
            )
        }
        else{
            return null;
        }
    }
    
        2
  •  0
  •   bennygenel    6 年前

    您可以使用 overflow CSS道具与 border-radius

    样品

    export default class App extends Component {
      render() {
        return (
          <View style={styles.container}>
            <View style={styles.imageContainer}>
              <View style={styles.imageWrapper}>
                <Image source={{uri: 'https://dummyimage.com/500x500/000/fff.png'}} style={styles.image} />
              </View>
            </View>
          </View>
        );
      }
    }
    
    const styles = StyleSheet.create({
      container: {
        flex: 1,
      },
      imageContainer: {
        alignItems: 'center',
        backgroundColor: 'yellow'
      },
      imageWrapper: {
        width: 125, // half of the image width
        height: 250,
        backgroundColor: 'transparent',
        overflow: 'hidden'
      },
      image: {
        width: 250,
        height: 250,
        borderRadius: 125, // half of the image width
        backgroundColor: 'transparent'
      }
    });