StyleSheet API와 Flexbox로 스타일 지정하기
CSS 클래스 이름 없이 StyleSheet.create와 Flexbox를 사용해 모바일 스타일을 작성합니다.
StyleSheet API와 Flexbox로 스타일 지정하기은(는) CoddyKit의 무료 React Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 React Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. React Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
React Native에는 CSS가 없습니다
React Native는 JavaScript 스타일 지정 프로그래밍 인터페이스를 사용하므로 CSS 파일, 클래스 이름, 캐스케이딩이 없습니다. 스타일은 style 속성을 통해 적용하는 JavaScript 객체입니다.
StyleSheet.create()
더 나은 성능과 통합 개발 환경의 자동 완성을 위해 스타일 객체를 StyleSheet.create()로 감싸십시오. 스타일은 한 번만 검증되고 최적화됩니다.
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' },
});인라인 스타일
style 속성을 통해 스타일을 직접 적용하십시오. 배열 문법은 여러 스타일 객체를 병합하며, 뒤에 오는 스타일이 앞선 스타일을 덮어씁니다.
<View style={{ padding: 16, backgroundColor: '#f5f5f5' }} />
// Array merging:
<Text style={[styles.base, isActive && styles.active, { marginTop: 8 }]} />React Native의 플렉스박스
React Native는 기본적으로 레이아웃에 플렉스박스를 사용하지만 웹과 기본값이 다릅니다. flexDirection의 기본값은 'column'이며 웹의 'row'가 아닙니다. 또한 flex: 1은 사용 가능한 공간을 채웁니다.
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
},
});가로 배치
자식 요소를 가로로 배치하려면 flexDirection: 'row'를 사용하십시오. 이는 CSS의 display: flex; flex-direction: row와 같은 역할을 합니다.
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>플렉스와 너비/높이
비례적인 크기 조정에는 flex: N을 사용하십시오. flex: 1은 남은 공간을 모두 채우고, flex: 2는 flex: 1인 형제 요소가 차지하는 공간의 두 배를 차지합니다.
// 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>절대 위치 지정
오버레이 요소에는 top, right, bottom, left와 함께 position: 'absolute'를 사용하십시오. 이는 상대 위치의 부모 요소 안에서 CSS 절대 위치 지정을 사용하는 것과 같습니다.
const badge = StyleSheet.create({
badge: {
position: 'absolute',
top: -4,
right: -4,
width: 16,
height: 16,
borderRadius: 8,
backgroundColor: 'red',
},
});플랫폼별 스타일
iOS와 안드로이드에 서로 다른 스타일을 적용하려면 Platform.OS 또는 Platform.select()를 사용하십시오.
import { Platform } from 'react-native';
const styles = StyleSheet.create({
shadow: {
...Platform.select({
ios: { shadowColor: '#000', shadowOpacity: 0.2, shadowRadius: 4 },
android: { elevation: 4 },
}),
},
});색상
React Native는 CSS 색상 문자열(16진수, rgb, 이름 지정 방식)과 시스템 색상을 위한 PlatformColor 프로그래밍 인터페이스를 지원합니다.
import { PlatformColor } from 'react-native';
// System color — adapts to dark mode automatically:
const labelColor = PlatformColor('label', '#000'); // iOS 'label' semantic color속성을 사용한 동적 스타일
컴포넌트 내부에서 속성을 바탕으로 스타일을 계산하십시오. StyleSheet에 함수를 전달하거나 스타일 객체를 인라인으로 계산할 수 있습니다.
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' } });빠른 확인
React Native에서 기본 flexDirection은 무엇인가요? 웹의 기본값과 다릅니다.
복습
최적화된 스타일에는 StyleSheet.create()를 사용하고, style 속성을 통해 적용하십시오. React Native 플렉스박스의 기본 flexDirection은 'column'이며 flex: 1은 남은 공간을 채웁니다. 운영 체제별 그림자 스타일에는 Platform.select()를 사용하십시오.
자주 묻는 질문
“StyleSheet API와 Flexbox로 스타일 지정하기” 강의는 무료인가요?
네 — “StyleSheet API와 Flexbox로 스타일 지정하기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 React Academy 강의 전체를 잠금 해제할 수 있습니다. React Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“StyleSheet API와 Flexbox로 스타일 지정하기”에서 뭘 배우나요?
CSS 클래스 이름 없이 StyleSheet.create와 Flexbox를 사용해 모바일 스타일을 작성합니다. 브라우저에서 직접 실행하는 실습 코드로 React Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
React Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 React Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.
“StyleSheet API와 Flexbox로 스타일 지정하기” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 React Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 React Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- React Native 핵심 컴포넌트와 웹 DOM 비교
- StyleSheet API와 Flexbox로 스타일 지정하기
- Expo Router로 탐색 구현하기
- 기기 API 접근: 카메라, 위치와 푸시 알림