StyleSheet үндэс
React Native-д CSS файл байдаггүй. Оронд нь StyleSheet объект ашигладаг — CSS-тэй маш төстэй боловч JavaScript синтакстай. Энэ хичээлд StyleSheet-ийн дүрмүүд, хамгийн их хэрэглэгддэг өмч, болон вэбийн CSS-тэй ялгааг судална.
StyleSheet.create() хэрхэн ажилладаг вэ?
StyleSheet.create() нь style объектуудын цуглуулга үүсгэдэг. Тус бүрт нэр өгч, component-ийн style prop-д дамжуулдаг:
import { View, Text, StyleSheet } from "react-native";
export default function App() {
return (
<View style={styles.container}>
<Text style={styles.title}>StyleSheet жишээ</Text>
<Text style={styles.body}>Энэ бол body текст.</Text>
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: "#0b1120",
padding: 20,
},
title: {
fontSize: 22,
fontWeight: "bold",
color: "#f1f5f9",
marginBottom: 8,
},
body: {
fontSize: 15,
color: "#94a3b8",
lineHeight: 22,
},
});
StyleSheet.create() нь plain объектаас илүү хурдан ажилладаг — React Native дотроо style-ийг оновчилдог. Тиймээс style-ийг шууд style={{ color: 'red' }} гэж бичихийн оронд StyleSheet.create() ашиглах нь зөв.
Хамгийн их хэрэглэгддэг өмчүүд
Хэмжээ ба зай
const styles = StyleSheet.create({
box: {
width: 200, // тогтмол өргөн (px)
height: 100, // тогтмол өндөр (px)
padding: 16, // дотоод зай — 4 талаас
paddingHorizontal: 20, // зөвхөн зүүн, баруун
paddingVertical: 12, // зөвхөн дээр, доор
margin: 8, // гадаад зай — 4 талаас
marginBottom: 16, // зөвхөн доод зай
marginTop: 8, // зөвхөн дээд зай
},
});
Өнгө ба хүрээ
const styles = StyleSheet.create({
card: {
backgroundColor: "#0f172a", // дэвсгэр өнгө
borderRadius: 12, // булангийн тойргошил
borderWidth: 1, // хүрээний зузаан
borderColor: "#1e293b", // хүрээний өнгө
shadowColor: "#000", // сүүдэр (iOS)
shadowOffset: { width: 0, height: 2 },
shadowOpacity: 0.3,
shadowRadius: 4,
elevation: 4, // сүүдэр (Android)
},
});
Текстийн style
const styles = StyleSheet.create({
heading: {
fontSize: 24, // үсгийн хэмжээ
fontWeight: "bold", // 'normal', 'bold', '100'–'900'
color: "#f1f5f9", // текстийн өнгө
lineHeight: 32, // мөр хоорондын зай
letterSpacing: 0.5, // үсэг хоорондын зай
textAlign: "center", // 'left', 'center', 'right'
textDecorationLine: "underline", // доогуур зураас
},
});
CSS-тэй харьцуулбал ямар ялгаа байдаг вэ?
React Native-н StyleSheet нь CSS-тэй маш төстэй боловч хэдэн чухал ялгаа бий:
| CSS | StyleSheet | Тайлбар |
| -------------------- | ---------------------- | ------------------ |
| background-color | backgroundColor | camelCase нэршил |
| font-size: 16px | fontSize: 16 | тоо, px бичихгүй |
| border-radius: 8px | borderRadius: 8 | тоо, px бичихгүй |
| display: flex | автоматаар flex | бүх View flex |
| class="title" | style={styles.title} | object дамжуулна |
React Native-д бүх хэмжээ нь unitless (нэгжгүй) байдаг — 16px гэж биш 16 гэж бичнэ. React Native өөрөө дэлгэцийн нягтаршлыг харгалзаж тооцдог.
Олон style нэгтгэх
Нэг component-д олон style нэгтгэхийг хүсвэл массив ашиглана:
<Text style={[styles.base, styles.highlighted, { color: "#22d3ee" }]}>
Нэгтгэсэн style
</Text>
Сүүлийн style нь өмнөхийг дарна — CSS-н cascade-тэй адил зарчим. Нөхцөл байдлаас хамааруулан style нэмэх үед маш хэрэгтэй.
Дараагийн хичээлд:
StyleSheet-ийн үндсийг ойлголоо. Дараагийн хичээлд Flexbox — элементүүдийг хэрхэн байршуулах, хэвтээ болон босоо зохион байгуулах аргыг судална. Flexbox бол React Native-н layout-н гол тулгуур.