- Published on
4단계: 스타일링과 Tailwind CSS 적용
스타일링과 Tailwind CSS 적용
Next.js 프로젝트에서 다양한 스타일링 방법을 적용할 수 있습니다.
전역 CSS, 컴포넌트별 CSS 모듈, 유틸리티 기반 Tailwind CSS까지 실무에 자주 쓰이는 방식을 중심으로 학습합니다.
4-1. 전역 CSS 파일 적용
Next.js는 pages/_app.js
에서 전역 스타일을 불러올 수 있습니다.
// pages/_app.js
import '../styles/globals.css'
export default function App({ Component, pageProps }) {
return <Component {...pageProps} />
}
/* styles/globals.css */
body {
font-family: sans-serif;
background-color: #f9f9f9;
}
4-2. CSS 모듈 사용법
컴포넌트 전용 스타일을 적용하고 싶다면 .module.css
확장자를 사용하세요.
// components/Button.js
import styles from './Button.module.css'
export default function Button() {
return <button className={styles.primary}>클릭</button>
}
/* components/Button.module.css */
.primary {
background-color: royalblue;
color: white;
}
4-3. Tailwind CSS 통합
Next.js 프로젝트에서 Tailwind를 적용하려면 아래와 같이 설정합니다.
npm install -D tailwindcss postcss autoprefixer
npx tailwindcss init -p
// tailwind.config.js
module.exports = {
content: ['./pages/**/*.{js,ts,jsx,tsx}', './components/**/*.{js,ts,jsx,tsx}'],
theme: { extend: {} },
plugins: [],
}
/* styles/globals.css */
@tailwind base;
@tailwind components;
@tailwind utilities;
_app.js
에서 위 CSS를 불러오면 Tailwind가 적용됩니다.
4-4. Tailwind 클래스 예시
export default function Card() {
return (
<div className="p-4 bg-white shadow rounded">
<h2 className="text-xl font-bold">카드 타이틀</h2>
<p className="text-gray-600">본문 내용</p>
</div>
)
}
p-4
: paddingbg-white
,text-xl
,rounded
: 시각적 속성 유틸리티 클래스
4-5. 스타일 전략 선택 가이드
방식 | 특징 | 추천 상황 |
---|---|---|
전역 CSS | 모든 페이지에 공통 적용 | 전체 테마, 리셋 스타일 |
CSS Module | 파일별 scope 스타일 적용 | 재사용 컴포넌트 |
Tailwind CSS | 클래스 기반 빠른 스타일링 | 빠른 UI 프로토타입 |
styled-components | JS 안에서 CSS 정의 | 복잡한 테마 커스터마이징 필요 시 |
요약
- 전역 CSS는
_app.js
에서 불러오며 프로젝트 전체에 영향을 줍니다. - CSS 모듈은 컴포넌트 단위로 관리되는 안전한 스타일링 방법입니다.
- Tailwind CSS는 유틸리티 기반으로 빠른 스타일 작성이 가능하며 생산성이 뛰어납니다.
- 상황에 따라 적절한 스타일링 전략을 선택하는 것이 중요합니다.
Tailwind 공식 가이드: https://tailwindcss.com/docs/guides/nextjs
심화학습
Q1. Tailwind의 유틸리티 스타일이 유지보수에 어떤 장단점을 가질까?
A: 장점은 빠른 개발과 일관된 스타일링이며, 단점은 클래스명이 길어지고 복잡한 UI에선 추적이 어려울 수 있습니다.
Q2. CSS 모듈을 쓸 때 class 이름 충돌을 막는 이유는 뭘까?
A: 모듈 스코프는 클래스명이 다른 컴포넌트와 겹치지 않도록 자동으로 해시 처리되어 안정성을 높입니다.
Q3. Tailwind와 styled-components를 혼합해서 사용할 수 있을까? 어떤 구조가 이상적일까?
A: 가능하지만 컨벤션이 중요합니다. Tailwind는 UI 기본 틀 구성에, styled-components는 조건부 스타일링이나 theme 구성에 적합합니다.