🐨CoalaCoding
DocsExamplesTry itBoardB반
🐨CoalaCoding

개발자를 위한 한국어 웹 기술 문서

문서

  • JavaScript
  • Web Publishing
  • React
  • Python

커뮤니티

  • 게시판
  • 예제 모음
  • Try it 에디터

기타

  • GitHub
  • 관리자
© 2026 CoalaCoding. All rights reserved.
  • 01_hook
  • 02_시작
  • 03_react-vite-설치
  • 04_노코드리액트
  • 05_csrssrreact-렌더링-참조글
  • 06_컴포넌트
  • 07_시작하기
  • 08_2-scaffolding-react-project
  • 09_props
  • 10_3-웹문서-작성하기
  • 11_컴포넌트
  • 12_map과컴포넌트
  • 13_event
  • 14_4-리액트로-변경하기
  • 15_컴포넌트-데이터관리
  • 16_composition
  • 17_앱제작-준비
  • 21_환경설정
  • 24_컴포넌트-전략
  • 25_리액트-네이버-로그인
  • 26_리액트교안
  • 0_React 학습 전 필수 JavaScript 문법
  • 1_React 개발 환경 이해
  • 2_React 소스 코드 수정, 배포 및 렌더링
  • 3_JSX 문법과 컴포넌트
  • 4_Props (속성)
  • 5_이벤트 처리
  • 6_Hook
  • 7_useContext로 전역 상태 관리
  • 8. React Router
  • 9_CSS 리액트에 넣는 5가지 방법
  1. 홈
  2. 문서
  3. React
  4. React 기초
  5. 9_CSS 리액트에 넣는 5가지 방법

9_CSS 리액트에 넣는 5가지 방법

코드 블록의 Try it Yourself 버튼으로 직접 실행할 수 있다.

구문


1. Inline Style(인라인 스타일) — 태그 안에 직접 쓰기

1.1 개념

HTML(에이치티엠엘)에서 style="color:red" 처럼 태그 안에 스타일을 직접 쓰는 방식이다. 리액트에서는 문자열이 아닌 객체(Object, 오브젝트) 형태로 작성한다.

1.2 기본 예제

function App() {
  return (
    <h1 style={{ color: "tomato", fontSize: "32px" }}>
      🍅 맛있는 리액트!
    </h1>
  );
}
줄설명
3style={{ ... }} — 바깥 {}는 JSX 표현식, 안쪽 {}는 객체를 나타낸다.
3color: "tomato" — 색상을 문자열로 지정한다.
3fontSize: "32px" — font-size를 카멜케이스로 바꿔 쓴다.

1.3 변수로 분리하기 (추천)

function App() {
  const titleStyle = {
    color: "tomato",
    fontSize: "32px",
  };

  return <h1 style={titleStyle}>🍅 맛있는 리액트!</h1>;
}
줄설명
2~5스타일을 변수 titleStyle에 저장한다. 코드가 길어질수록 이 방식이 읽기 편하다.
7style={titleStyle} — 변수를 바로 넣는다. 중괄호가 한 쌍만 있으면 된다.
💡TIP

인라인 스타일은 작은 컴포넌트(component, 컴포넌트)에 빠르게 스타일을 줄 때 유용하다. 하지만 스타일이 많아지면 코드가 지저분해지므로 규모가 커지면 다른 방법을 사용한다.


2. CSS File(씨에스에스 파일) — 별도 파일로 분리하기

2.1 개념

.css 파일을 따로 만들고, 컴포넌트 파일에서 import(임포트) 해서 사용하는 방식이다. 가장 기본적이고 익숙한 방법이다.

2.2 파일 구조

src/
├── App.jsx
└── App.css

2.3 App.css 작성

.title {
  color: royalblue;
  font-size: 32px;
}

.card {
  background-color: #f0f4ff;
  border-radius: 8px;
  padding: 16px;
}
줄설명
1.title — 클래스(class, 클래스) 선택자(selector, 셀렉터)로 스타일 규칙을 정의한다.
6.card — 카드 영역에 적용할 스타일 묶음이다.

2.4 App.jsx 작성

import "./App.css";

function App() {
  return (
    <div className="card">
      <h1 className="title">🎮 게임 점수판</h1>
    </div>
  );
}
줄설명
1import "./App.css" — CSS 파일을 불러온다.
5className="card" — HTML의 class 대신 className 을 쓴다. 리액트 규칙이다.
⚠️WARNING

리액트에서는 class 대신 반드시 className을 사용해야 한다. class는 JavaScript의 예약어이기 때문이다.


3. CSS Module(씨에스에스 모듈) — 클래스 이름 충돌 방지

3.1 개념

파일 이름을 이름.module.css 로 저장하면, 클래스 이름이 자동으로 고유하게 변환된다. 여러 컴포넌트에서 같은 클래스 이름을 써도 서로 충돌하지 않는다.

3.2 파일 구조

src/
├── Score.jsx
└── Score.module.css

3.3 Score.module.css 작성

.box {
  background-color: #fff3cd;
  padding: 20px;
  border-radius: 12px;
}

.name {
  color: #333;
  font-weight: bold;
}

3.4 Score.jsx 작성

import styles from "./Score.module.css";

function Score() {
  return (
    <div className={styles.box}>
      <p className={styles.name}>🏆 1등: 망고</p>
    </div>
  );
}
줄설명
1import styles from "..." — CSS 모듈을 객체로 불러온다.
5styles.box — 객체의 속성처럼 클래스 이름에 접근한다.
6styles.name — 자동으로 고유한 클래스명으로 변환된다.
ℹ️INFO

실제로 브라우저에서 확인하면 클래스 이름이 Score_box__xK2jA 처럼 변환되어 있는 것을 볼 수 있다. 이것이 충돌을 막아 주는 원리이다.


4. Styled-Components(스타일드 컴포넌트) — JS 안에서 CSS 쓰기

4.1 개념

CSS를 JavaScript 코드 안에 문자열로 작성하는 방식이다. 컴포넌트와 스타일이 한 파일에 있어서 관리가 편하다.

4.2 설치

npm install styled-components

4.3 기본 예제

import styled from "styled-components";

const Btn = styled.button`
  background-color: coral;
  color: white;
  padding: 10px 20px;
  border: none;
  border-radius: 8px;
  cursor: pointer;
`;

function App() {
  return <Btn>🎯 클릭하세요!</Btn>;
}
줄설명
1import styled from "styled-components" — 라이브러리를 불러온다.
3styled.button`...` — button 태그에 스타일을 입힌 새 컴포넌트를 만든다.
4~9백틱(backtick, 백틱) 안에 일반 CSS 문법 그대로 작성한다.
13<Btn> — 만들어진 스타일 컴포넌트를 일반 컴포넌트처럼 사용한다.

5. Tailwind CSS(테일윈드 씨에스에스) — 클래스 이름으로 스타일 조합하기

5.1 개념

미리 만들어진 수백 개의 클래스를 조합해서 스타일을 적용하는 방식이다. 별도의 CSS 파일을 작성하지 않아도 된다.

5.2 Vite(바이트) 프로젝트에 설치

npm install -D tailwindcss @tailwindcss/vite

5.3 vite.config.js 설정

import tailwindcss from "@tailwindcss/vite";
import { defineConfig } from "vite";

export default defineConfig({
  plugins: [tailwindcss()],
});

5.4 index.css 에 추가

@import "tailwindcss";

5.5 기본 예제

function Card() {
  return (
    <div className="bg-yellow-100 p-6 rounded-xl shadow">
      <h2 className="text-2xl font-bold text-gray-800">🌟 오늘의 퀘스트</h2>
      <p className="text-gray-500 mt-2">몬스터 10마리 처치하기</p>
    </div>
  );
}
줄설명
3bg-yellow-100 — 배경색, p-6 — 패딩(padding, 패딩), rounded-xl — 둥근 모서리, shadow — 그림자
4text-2xl — 글자 크기, font-bold — 굵게, text-gray-800 — 글자 색상
5mt-2 — 위쪽 여백(margin-top, 마진탑)
💡TIP

테일윈드는 클래스 이름 자체가 스타일을 설명하기 때문에, CSS를 잘 모르는 입문자도 빠르게 결과를 볼 수 있다는 장점이 있다.


5가지 방법 비교표

방법별도 파일CSS 문법클래스 충돌 방지추천 상황
Inline Style(인라인 스타일)✗✗ (객체)✓동적 스타일, 빠른 테스트
CSS File(씨에스에스 파일)✓✓✗소규모 프로젝트, 입문 단계
CSS Module(씨에스에스 모듈)✓✓✓컴포넌트별 스타일 분리
Styled-Components(스타일드 컴포넌트)✗✓✓동적 스타일이 많은 프로젝트
Tailwind CSS(테일윈드)✗✗ (클래스)✓빠른 개발, 디자인 시스템

실습 과제

목차

  • 구문