StyleSheet API'si ve Flexbox ile Stil Verme
CSS class adları kullanmadan StyleSheet.create ve Flexbox ile mobil stiller yazın.
StyleSheet API'si ve Flexbox ile Stil Verme, CoddyKit'te ücretsiz bir React Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, React Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. React Academy kursu toplamda 4 dersten oluşur.
React Native'de CSS Yok
React Native, JavaScript tabanlı bir stil API'si kullanır: CSS dosyaları, sınıf adları ve basamaklandırma yoktur. Stiller, style özelliği aracılığıyla uygulanan JavaScript nesneleridir.
StyleSheet.create()
Daha iyi performans (stiller bir kez doğrulanıp en iyi duruma getirildiği için) ve geliştirme ortamında otomatik tamamlama desteği için stil nesnelerini StyleSheet.create() içine sarın.
import { StyleSheet, View, Text } from 'react-native';
function Card() {
return (
<View style={styles.card}>
<Text style={styles.title}>Hello</Text>
</View>
);
}
const styles = StyleSheet.create({
card: { padding: 16, backgroundColor: '#fff', borderRadius: 8, shadowColor: '#000', shadowOpacity: 0.1, elevation: 2 },
title: { fontSize: 18, fontWeight: 'bold', color: '#111' },
});Satır İçi Stiller
Stilleri doğrudan style özelliği aracılığıyla uygulayın. Dizi söz dizimi birden çok stil nesnesini birleştirir; sonraki stiller önceki stillerin üzerine yazılır.
<View style={{ padding: 16, backgroundColor: '#f5f5f5' }} />
// Array merging:
<Text style={[styles.base, isActive && styles.active, { marginTop: 8 }]} />React Native'de Esnek Kutu Düzeni
React Native, yerleşim için varsayılan olarak esnek kutu düzenini kullanır; ancak web'dekinden farklı varsayılanlara sahiptir: flexDirection varsayılan olarak 'column' değerindedir ('row' değil) ve flex: 1 kullanılabilir alanı doldurur.
const styles = StyleSheet.create({
container: {
flex: 1, // fill available space
flexDirection: 'column', // default in RN (web default is 'row')
justifyContent: 'center', // main axis alignment
alignItems: 'center', // cross axis alignment
},
});Satır Düzeni
Alt bileşenleri yatay olarak yerleştirmek için flexDirection: 'row' kullanın; bu, CSS'teki display: flex; flex-direction: row kullanımını taklit eder.
const styles = StyleSheet.create({
row: {
flexDirection: 'row',
alignItems: 'center',
gap: 12, // gap is supported in RN 0.71+
},
});
<View style={styles.row}>
<Image source={avatar} />
<Text>{username}</Text>
</View>Esnek Boyutlandırma ve Genişlik/Yükseklik
Orantılı boyutlandırma için flex: N kullanın. flex: 1 kalan alanın tamamını doldurur; flex: 2 ise flex: 1 kullanan kardeşlerinin iki katı alanı alır.
// Sidebar takes 1/3, content takes 2/3:
<View style={{ flexDirection: 'row', flex: 1 }}>
<View style={{ flex: 1, backgroundColor: '#eee' }}>Sidebar</View>
<View style={{ flex: 2 }}>Content</View>
</View>Mutlak Konumlandırma
Kaplama bileşenleri için top, right, bottom, left ile birlikte position: 'absolute' kullanın; bu, göreli bir üst bileşen içindeki CSS mutlak konumlandırmasıyla aynıdır.
const badge = StyleSheet.create({
badge: {
position: 'absolute',
top: -4,
right: -4,
width: 16,
height: 16,
borderRadius: 8,
backgroundColor: 'red',
},
});Platforma Özgü Stiller
iOS ve Android'de farklı stiller uygulamak için Platform.OS veya Platform.select() kullanın.
import { Platform } from 'react-native';
const styles = StyleSheet.create({
shadow: {
...Platform.select({
ios: { shadowColor: '#000', shadowOpacity: 0.2, shadowRadius: 4 },
android: { elevation: 4 },
}),
},
});Renkler
React Native, CSS renk dizelerini (onaltılık, rgb ve adlandırılmış renkler) ve sistem renkleri için PlatformColor API'sini kabul eder.
import { PlatformColor } from 'react-native';
// System color — adapts to dark mode automatically:
const labelColor = PlatformColor('label', '#000'); // iOS 'label' semantic colorÖzelliklerle Dinamik Stiller
Stilleri bileşen içinde özelliklerden hesaplayın. StyleSheet'e bir işlev aktarın veya stil nesnesini satır içinde hesaplayın.
function Badge({ color, size = 16 }: { color: string; size?: number }) {
return (
<View
style={[
styles.badge,
{ backgroundColor: color, width: size, height: size, borderRadius: size / 2 },
]}
/>
);
}
const styles = StyleSheet.create({ badge: { position: 'absolute' } });Kısa Sınama
React Native'de (web'dekinden farklı olarak) varsayılan flexDirection değeri nedir?
Özet
En iyi duruma getirilmiş stiller için StyleSheet.create() kullanın ve bunları style özelliği aracılığıyla uygulayın. React Native esnek kutu düzeninde varsayılan olarak flexDirection: 'column' kullanılır ve flex: 1 kalan alanı doldurur. İşletim sistemine özgü gölge stilleri için Platform.select() kullanın.
Sıkça Sorulan Sorular
“StyleSheet API'si ve Flexbox ile Stil Verme” dersi ücretsiz mi?
Evet — “StyleSheet API'si ve Flexbox ile Stil Verme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve React Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. React Academy kursu toplamda 4 dersten oluşur.
“StyleSheet API'si ve Flexbox ile Stil Verme” dersinde ne öğreneceğim?
CSS class adları kullanmadan StyleSheet.create ve Flexbox ile mobil stiller yazın. React Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
React Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te React Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“StyleSheet API'si ve Flexbox ile Stil Verme” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu React Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her React Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- React Native Temel Bileşenleri ve Web DOM
- StyleSheet API'si ve Flexbox ile Stil Verme
- Expo Router ile Gezinme
- Cihaz API'lerine Erişme: Kamera, Konum ve Anlık Bildirimler