Je travaille sur une React application native qui a un composant avatar utilisateur avec un effet de chevauchement:
J'ai pu le faire fonctionner sur iOS car il autorise les marges négatives, mais lorsque vous utilisez des marges négatives sur Android, il coupe la dernière image comme ceci:
Voici les styles que j'utilise:
avatarContainer: {
borderRadius: 20,
width: 40,
height: 40,
marginRight: -11
},
avatar: {
borderRadius: 20,
width: 40,
height: 40
},
avatarContainer est le cercle blanc derrière l'image et avatar est l'image elle-même.
Quelle est la meilleure approche qui fonctionne sur les deux plates-formes pour obtenir le style souhaité?
J'ai essayé avec à peu près votre configuration + flexbox et tout semble fonctionner correctement.
class App extends React.Component {
render() {
const { overlapContainer, avatarContainer, avatar} = styles;
return (
<View style={overlapContainer}>
<View style={avatarContainer}>
<Image style={avatar} source={{ uri: 'http://lorempixel.com/output/cats-q-c-100-100-3.jpg' }} />
</View>
<View style={avatarContainer}>
<Image style={avatar} source={{ uri: 'http://lorempixel.com/output/cats-q-c-100-100-7.jpg' }} />
</View>
<View style={avatarContainer}>
<Image style={avatar} source={{ uri: 'http://lorempixel.com/output/cats-q-c-100-100-3.jpg' }} />
</View>
<View style={avatarContainer}>
<Image style={avatar} source={{ uri: 'http://lorempixel.com/output/cats-q-c-100-100-7.jpg' }} />
</View>
</View>
);
}
}
const styles = {
overlapContainer: {
flexDirection: 'row-reverse',
justifyContent: 'flex-end',
marginTop: 50,
marginRight: 50
},
avatarContainer: {
borderRadius: 33,
height: 66,
width: 66,
marginLeft: -15,
borderStyle: 'solid',
borderWidth: 3,
borderColor: 'white'
},
avatar: {
borderRadius: 30,
height: 60,
width: 60
}
}