Saya memiliki elemen yang ingin saya apung, misalnya
<View style={{width: 300}}>
<Text style={{backgroundColor: "#DDD"}}>Hello</Text>
</View>
Bagaimana cara Text
melayang / disejajarkan ke kanan? Juga, mengapa Text
mengambil ruang penuh dari View
, bukan hanya ruang untuk "Halo"?
react-native
Beberapa pria
sumber
sumber
justifyContent
,alignItems
,alignSelf
. Saya bertanya-tanya mana yang benar.Jawaban:
Karena itu
View
adalah wadah fleksibel dan secara default memilikiflexDirection: 'column'
danalignItems: 'stretch'
, yang berarti bahwa anak-anaknya harus ditarik untuk mengisi lebarnya.(Catatan, per docs , yang semua komponen di Bereaksi asli yang
display: 'flex'
secara default dan bahwadisplay: 'inline'
tidak ada sama sekali cara ini, perilaku default dari.Text
DalamView
di Bereaksi berbeda asli dari perilaku defaultspan
dalamdiv
di web; dalam kasus terakhir, rentang tidak akan memenuhi lebardiv
karena aspan
adalah elemen inline secara default. Tidak ada konsep seperti itu di React Native.)The
float
properti tidak eksis di Bereaksi asli, tetapi ada banyak pilihan yang tersedia untuk Anda (dengan perilaku yang sedikit berbeda) yang akan membiarkan Anda benar-menyelaraskan teks Anda. Inilah yang dapat saya pikirkan:1. Gunakan
textAlign: 'right'
padaText
elemen(Pendekatan ini tidak mengubah fakta bahwa
Text
mengisi seluruh lebarView
; hanya tepat menyelaraskan teks dalamText
.)2. Gunakan
alignSelf: 'flex-end'
padaText
Ini menyusutkan
Text
elemen ke ukuran yang diperlukan untuk menyimpan kontennya dan menempatkannya di ujung arah silang (arah horizontal, secara default) dariView
.3. Gunakan
alignItems: 'flex-end'
padaView
Ini setara dengan pengaturan
alignSelf: 'flex-end'
pada semuaView
anak.4. Gunakan
flexDirection: 'row'
danjustifyContent: 'flex-end'
padaView
flexDirection: 'row'
menetapkan arah utama tata letak menjadi horizontal, bukan vertikal;justifyContent
hanya sepertialignItems
, tetapi mengontrol perataan dalam arah utama, bukan arah silang.5. Gunakan
flexDirection: 'row'
padaView
danmarginLeft: 'auto'
padaText
Pendekatan ini ditunjukkan, dalam konteks web dan CSS nyata, di https://stackoverflow.com/a/34063808/1709587 .
6. Gunakan
position: 'absolute'
danright: 0
padaText
:Seperti dalam CSS nyata, ini mengambil
Text
"out of flow", yang berarti bahwa saudara kandungnya akan dapat tumpang tindih dan posisi vertikal akan berada di bagian atasView
secara default (meskipun Anda dapat secara eksplisit mengatur jarak dari atasView
menggunakantop
properti style).Tentu saja, mana dari berbagai pendekatan yang ingin Anda gunakan - dan apakah pilihan di antara mereka bahkan penting - akan tergantung pada keadaan Anda yang sebenarnya.
sumber
<Text><Text>FLOAT TEXT</Text>multi line text here which wraps around float text
Atau sama tetapi dengan gambar seperti ini:<View><Text><Image />multi line text which wrap around float image</Text>
.Anda dapat langsung menentukan perataan item, misalnya:
sumber
display
nilai yang valid adalah'flex'
dan'none'
.Bagi saya pengaturan
alignItems
ke orang tua melakukan trik, seperti:sumber
Anda tidak seharusnya menggunakan pelampung di Bereaksi Asli. Bereaksi Asli memanfaatkan flexbox untuk menangani semua hal itu.
Dalam kasus Anda, Anda mungkin ingin agar wadah memiliki atribut
Dan tentang teks yang mengambil seluruh ruang, sekali lagi, Anda perlu melihat wadah Anda.
Berikut ini tautan ke panduan hebat di flexbox: Panduan Lengkap untuk Flexbox
sumber
flexDirection
: Jika Anda ingin bergerak secara horizontal (baris) atau vertikal (kolom)justifyContent
: arah yang ingin Anda pindahkan.sumber
justifyContent
tidak memilih arah per se; ia menawarkan banyak pilihan tentang bagaimana segala sesuatu diposisikan dan ditempatkan di sepanjang arah fleks utama.Anda dapat mengapung: langsung bereaksi asli menggunakan flex:
untuk detail lebih lanjut: https://facebook.github.io/react-native/docs/flexbox.html#flex-direction
sumber