J'ai un élément que je veux flotter à droite, par exemple
<View style={{width: 300}}>
<Text style={{backgroundColor: "#DDD"}}>Hello</Text>
</View>
Comment le Text
flotter / aligner vers la droite? Aussi, pourquoi occupe-t-il Text
tout l'espace du View
, au lieu de l'espace réservé à "Hello"?
react-native
Un gars
la source
la source
justifyContent
,alignItems
,alignSelf
. Je me demande ce qui est correct.Réponses:
Parce que le
View
est un conteneur flexible et a par défautflexDirection: 'column'
etalignItems: 'stretch'
, ce qui signifie que ses enfants doivent être étirés pour remplir sa largeur.(Notez, d'après la documentation , que tous les composants de React Native sont
display: 'flex'
par défaut et que celadisplay: 'inline'
n'existe pas du tout. De cette façon, le comportement par défaut de aText
dans aView
dans React Native diffère du comportement par défaut despan
within adiv
sur le Web; dans ce dernier cas, l'étendue ne remplirait pas la largeur dudiv
car aspan
est un élément en ligne par défaut. Un tel concept n'existe pas dans React Native.)La
float
propriété n'existe pas dans React Native, mais de nombreuses options s'offrent à vous (avec des comportements légèrement différents) qui vous permettront d'aligner à droite votre texte. Voici ceux auxquels je peux penser:1. Utiliser
textAlign: 'right'
sur l'Text
élément(Cette approche ne change pas le fait que le
Text
remplit toute la largeur duView
; il aligne juste à droite le texte dans leText
.)2. Utilisez
alignSelf: 'flex-end'
sur leText
Cela réduit l'
Text
élément à la taille requise pour contenir son contenu et le place à la fin de la direction transversale (la direction horizontale, par défaut) duView
.3. Utilisez
alignItems: 'flex-end'
sur leView
Cela équivaut à définir
alignSelf: 'flex-end'
sur tous lesView
enfants de.4. Utilisez
flexDirection: 'row'
etjustifyContent: 'flex-end'
sur leView
flexDirection: 'row'
définit la direction principale de la mise en page pour qu'elle soit horizontale au lieu de verticale;justifyContent
est juste commealignItems
, mais contrôle l'alignement dans la direction principale au lieu de la direction transversale.5. Utiliser
flexDirection: 'row'
surView
etmarginLeft: 'auto'
sur leText
Cette approche est démontrée, dans le contexte du web et du vrai CSS, sur https://stackoverflow.com/a/34063808/1709587 .
6. Utilisez
position: 'absolute'
etright: 0
surText
:Comme dans le vrai CSS, cela
Text
supprime le "hors flux", ce qui signifie que ses frères et sœurs pourront le chevaucher et que sa position verticale sera en haut duView
par défaut (bien que vous puissiez définir explicitement une distance à partir du haut duView
en utilisant latop
propriété style).Naturellement, laquelle de ces différentes approches vous souhaitez utiliser - et si le choix entre elles compte même du tout - dépendra de votre situation précise.
la source
<Text><Text>FLOAT TEXT</Text>multi line text here which wraps around float text
:. Ou même mais avec une image comme ceci:<View><Text><Image />multi line text which wrap around float image</Text>
.Vous pouvez spécifier directement l'alignement de l'élément, par exemple:
la source
display
valeurs valides sont'flex'
et'none'
.Pour moi, m'installer
alignItems
à un parent a fait l'affaire, comme:la source
Vous n'êtes pas censé utiliser des flotteurs dans React Native. React Native exploite la flexbox pour gérer tout cela.
Dans votre cas, vous voudrez probablement que le conteneur ait un attribut
Et à propos du texte prenant tout l'espace, encore une fois, vous devez jeter un œil à votre conteneur.
Voici un lien vers un très bon guide sur flexbox: Un guide complet sur Flexbox
la source
flexDirection
: Si vous souhaitez vous déplacer horizontalement (ligne) ou verticalement (colonne)justifyContent
: la direction dans laquelle vous souhaitez vous déplacer.la source
justifyContent
ne choisit pas une direction en soi; il offre un tas d'options sur la façon dont les choses sont positionnées et espacées le long de la direction principale du flex.Vous pouvez flotter: directement dans React natif en utilisant flex:
pour plus de détails: https://facebook.github.io/react-native/docs/flexbox.html#flex-direction
la source