ํฐ์คํ ๋ฆฌ ๋ทฐ
๐จ Next.js App Router์์ CSS ์คํ์ผ๋ง ์์ ์ ๋ณต
octo54 2025. 4. 16. 13:33๐จ Next.js App Router์์ CSS ์คํ์ผ๋ง ์์ ์ ๋ณต
Next.js App Router ํ๋ก์ ํธ์์ CSS๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐฉ์์ ๋ค์ํ๋ฉฐ, ๊ฐ ๋ฐฉ์์ ์ฌ์ฉ ๋ชฉ์ ์ ๋ฐ๋ผ ์ ์ ํ๊ฒ ์ ํํ ์ ์์ต๋๋ค. ์ด ๊ธ์์๋ ๊ฐ์ฅ ๋ํ์ ์ธ CSS ์ ์ฉ ๋ฐฉ์๋ถํฐ, Tailwind, Sass, CSS-in-JS๊น์ง App Router ๊ธฐ๋ฐ์์ ์ค์ ๋ก ์ด๋ป๊ฒ ์ ์ฉํ๋์ง ์ฝ๋ ์์ ์ค์ฌ์ผ๋ก ์ ๋ฆฌํฉ๋๋ค.
๐งฉ CSS Modules
CSS Modules๋ ์ปดํฌ๋ํธ ๋จ์๋ก ์คํ์ผ์ ์ ์ฉํ๊ณ , ํด๋์ค ์ด๋ฆ ์ถฉ๋ ์์ด ์ฌ์ฉํ ์ ์๋ ๋ฐฉ์์ ๋๋ค.
์ฌ์ฉ๋ฒ
/* app/page.module.css */
.title {
color: royalblue;
font-size: 2rem;
}
// app/page.tsx
import styles from './page.module.css';
export default function Page() {
return <h1 className={styles.title}>CSS Module ์คํ์ผ</h1>;
}
๐ ๊ธ๋ก๋ฒ CSS
์ ํ๋ฆฌ์ผ์ด์ ์ ์ฒด์ ๊ณตํต์ ์ผ๋ก ์ ์ฉํ ์คํ์ผ์ globals.css๋ฅผ ๋ง๋ค์ด ๊ด๋ฆฌํฉ๋๋ค.
์ฌ์ฉ๋ฒ
/* app/globals.css */
body {
margin: 0;
font-family: 'Pretendard', sans-serif;
background-color: #f9fafb;
}
// app/layout.tsx
import './globals.css';
export default function RootLayout({ children }) {
return (
<html lang="ko">
<body>{children}</body>
</html>
);
}
โก Tailwind CSS
Tailwind๋ ์ ํธ๋ฆฌํฐ ํด๋์ค ๊ธฐ๋ฐ ์คํ์ผ๋ง์ผ๋ก ๋น ๋ฅธ UI ๊ตฌํ์ ์ ํฉํฉ๋๋ค.
์ค์น
npm install -D tailwindcss postcss autoprefixer
npx tailwindcss init -p
์ค์
// tailwind.config.js
module.exports = {
content: ['./app/**/*.{ts,tsx}'],
theme: {
extend: {},
},
plugins: [],
};
/* app/globals.css */
@tailwind base;
@tailwind components;
@tailwind utilities;
์ฌ์ฉ
export default function Page() {
return <h1 className="text-3xl font-bold text-blue-600">Tailwind ์ ์ฉ!</h1>;
}
๐ Sass (SCSS)
Sass๋ CSS์ ๊ตฌ์กฐํ์ ๋ณ์/๋ฏน์ค์ธ์ ๋ํด์ฃผ๋ ์คํ์ผ ์ ์ฒ๋ฆฌ๊ธฐ์ ๋๋ค.
์ค์น
npm install -D sass
์ฌ์ฉ๋ฒ
/* app/styles.scss */
$primary-color: #1e40af;
h1 {
color: $primary-color;
}
// app/layout.tsx
import './styles.scss';
๐จ CSS-in-JS (Styled Components)
์ปดํฌ๋ํธ์ ์คํ์ผ์ ํ๋์ ํ์ผ์ ํจ๊ป ๊ด๋ฆฌํ ์ ์๋ CSS-in-JS ๋ฐฉ์๋ ๋๋ฆฌ ์ฌ์ฉ๋ฉ๋๋ค.
์ค์น
npm install styled-components
npm install -D @types/styled-components
์ฌ์ฉ๋ฒ
'use client';
import styled from 'styled-components';
const Title = styled.h1`
font-size: 2rem;
color: tomato;
`;
export default function Page() {
return <Title>Styled Components ์ ์ฉ!</Title>;
}
๐ฆ ์ธ๋ถ CSS ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ (์: Bootstrap)
์ธ๋ถ CSS ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด layout.tsx ๋๋ _app.tsx์์ ์ง์ import ํฉ๋๋ค.
npm install bootstrap
// app/layout.tsx
import 'bootstrap/dist/css/bootstrap.min.css';
export default function RootLayout({ children }) {
return <html><body>{children}</body></html>;
}
โ ์ ๋ฆฌ
๋ฐฉ์ ํน์ง ์ถ์ฒ ์ํฉ
CSS Modules | ์ปดํฌ๋ํธ ๋จ์, ํด๋์ค ์ด๋ฆ ์ถฉ๋ ๋ฐฉ์ง | ์ปดํฌ๋ํธ๋ณ ์คํ์ผ ๊ด๋ฆฌ |
๊ธ๋ก๋ฒ CSS | ์ ์ญ ์คํ์ผ ์ค์ | ๋ฆฌ์ , ํฐํธ, ๋ฐฐ๊ฒฝ |
Tailwind CSS | ๋น ๋ฅธ ์ ํธ๋ฆฌํฐ ์คํ์ผ๋ง | UI ์๋ ์ค์ฌ ๊ฐ๋ฐ |
Sass (SCSS) | ๋ณ์, ๋ฏน์ค์ธ ๋ฑ ๊ณ ๊ธ ๋ฌธ๋ฒ | ๋ณต์กํ ๋์์ธ ์์คํ |
CSS-in-JS | ์ปดํฌ๋ํธ์ ์คํ์ผ ํตํฉ | ๋์ ๋ชจ๋ํ, ์ํ ๊ธฐ๋ฐ ์คํ์ผ |
์ธ๋ถ CSS | ๊ธฐ์กด ํ๋ ์์ํฌ ํ์ฉ | Bootstrap ๋ฑ ์ฆ์ UI ๊ตฌ์ถ |
Next.js, CSS Modules, ๊ธ๋ก๋ฒ CSS, Tailwind CSS, Sass, SCSS, CSS-in-JS, Styled Components, App Router, ์น ์คํ์ผ๋ง, ํ๋ก ํธ์๋
'framework > NextJS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
- Total
- Today
- Yesterday
- fastapi
- AI ์๋ํ
- Docker
- seo ์ต์ ํ 10๊ฐ
- Next.js
- ์น๊ฐ๋ฐ
- rag
- ๋ฐฑ์๋๊ฐ๋ฐ
- ํ๋ก ํธ์๋
- ์ค๋งํธ ์ปจํธ๋ํธ
- Prisma
- NestJS
- nextJS
- nodejs
- Ktor
- kotlin
- gatsbyjs
- LangChain
- SEO์ต์ ํ
- github
- PostgreSQL
- App Router
- CI/CD
- ๊ด๋ฆฌ์
- Webpack
- ๊ฐ๋ฐ๋ธ๋ก๊ทธ
- llm
- REACT
- SEO ์ต์ ํ
- AI์ฑ๋ด
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |