0Pricing
React Academy · 강의

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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. React Native 핵심 컴포넌트와 웹 DOM 비교
  2. StyleSheet API와 Flexbox로 스타일 지정하기
  3. Expo Router로 탐색 구현하기
  4. 기기 API 접근: 카메라, 위치와 푸시 알림
← React Academy(으)로 돌아가기