728x90
"CSS Modules로 배우는 컴포넌트별 스타일링: React 프로젝트에서 효율적인 CSS 관리"
1시간 분량 강의안 (CSS Modules 기초)
강의 목표
- CSS Modules의 개념과 필요성을 이해한다.
- CSS Modules를 사용해 React 컴포넌트별로 스타일을 캡슐화하는 방법을 학습한다.
- CSS Modules를 활용해 이름 충돌 없이 효율적으로 스타일을 관리한다.
강의 목차
1. CSS Modules란 무엇인가? (10분)
CSS Modules의 정의
- CSS Modules는 CSS 파일의 클래스와 스타일을 로컬로 스코프화하여 이름 충돌을 방지하는 기술입니다.
- 각 CSS 파일이 특정 컴포넌트에 종속되어 컴포넌트별로 스타일을 독립적으로 관리할 수 있습니다.
CSS Modules의 주요 특징
- 클래스 이름 충돌 방지: 각 클래스 이름이 고유하게 생성.
- 컴포넌트별 스타일링: 스타일이 컴포넌트에 캡슐화.
- 유지보수성 향상: 프로젝트 규모가 커져도 스타일 관리 용이.
CSS Modules의 파일 네이밍 규칙
- CSS Modules 파일은 .module.css 또는 .module.scss 확장자를 사용합니다.
2. CSS Modules 설정 및 사용법 (15분)
1단계: 기본 설정
- Create React App을 사용하면 CSS Modules가 기본적으로 설정되어 있습니다.
2단계: CSS Modules 파일 생성
- Button.module.css 파일 생성:
/* Button.module.css */
.button {
background-color: blue;
color: white;
padding: 10px 20px;
border-radius: 5px;
border: none;
cursor: pointer;
}
.button:hover {
background-color: darkblue;
}
- React 컴포넌트에서 CSS Modules를 사용:
import React from 'react';
import styles from './Button.module.css';
function Button() {
return <button className={styles.button}>Click Me</button>;
}
export default Button;
3단계: 클래스 이름이 동적으로 생성되는 원리
- CSS Modules는 클래스 이름을 다음과 같이 변환:
- 원래 클래스: .button
- 변환 후 클래스: Button_button__3kfJ2
- 이를 통해 클래스 이름 충돌을 방지.
3. CSS Modules의 고급 사용법 (20분)
1단계: 여러 클래스 병합
- 여러 클래스 이름을 병합하여 적용:
import React from 'react';
import styles from './Button.module.css';
function Button({ primary }) {
const buttonClass = primary ? styles.buttonPrimary : styles.button;
return <button className={buttonClass}>Click Me</button>;
}
export default Button;
2단계: CSS 변수와 함께 사용
- CSS 변수를 활용하여 동적 스타일링:
/* Button.module.css */
.button {
background-color: var(--button-bg, blue);
color: white;
}
function Button() {
return <button className={styles.button} style={{ '--button-bg': 'red' }}>Click Me</button>;
}
3단계: Sass와 함께 사용
- CSS Modules는 .module.scss 파일도 지원:
/* Button.module.scss */
.button {
background-color: blue;
&:hover {
background-color: darkblue;
}
}
4. CSS Modules의 장단점 (10분)
장점
- 이름 충돌 방지: 전역 스타일 간섭 제거.
- 유지보수성 향상: 컴포넌트 단위 스타일 관리 가능.
- 리팩토링 용이: 스타일과 컴포넌트가 강하게 결합.
단점
- 초기 설정 필요: 일부 프로젝트에서는 추가 설정 필요.
- CSS-in-JS 대비 유연성 부족: 동적 스타일링 제약.
5. 실습 과제 (10분)
실습 과제
- Card.module.css 파일을 생성하고, 카드 레이아웃 스타일을 정의하세요.
- Card 컴포넌트에서 CSS Modules를 사용해 스타일을 적용하세요.
- 버튼 hover 효과를 추가하세요.
6. Q&A 및 정리 (5분)
- Q&A:
- CSS Modules와 전역 CSS의 가장 큰 차이점은 무엇인가요?
- CSS Modules는 대규모 프로젝트에서 어떻게 활용되나요?
- 요약:
- CSS Modules는 컴포넌트별로 스타일을 캡슐화하여 클래스 이름 충돌을 방지합니다.
- .module.css 파일을 통해 간단하게 구현 가능하며, Sass와 함께 사용할 수도 있습니다.
- 유지보수성이 뛰어나고 대규모 프로젝트에 적합한 스타일링 솔루션입니다.
728x90
'React > ReactCore' 카테고리의 다른 글
24. Emotion으로 배우는 CSS-in-JS 스타일링: React 프로젝트의 효율적인 디자인 관리 (0) | 2024.12.29 |
---|---|
23.Styled Components로 배우는 JavaScript 기반 스타일링: React 프로젝트의 스타일링 혁신 (0) | 2024.12.29 |
21강. React Router의 Route Guard: 페이지 접근을 안전하게 제어하는 방법 (1) | 2024.12.29 |
20.React Dynamic Routing: 동적 경로 매칭과 렌더링의 모든 것 (1) | 2024.12.16 |
19.React Router 완전 정복: React 애플리케이션의 라우팅 구현 (1) | 2024.12.16 |