Tailwind CSS 설명해줘
ChatGPT의 말:
물론입니다! 🎯 Tailwind CSS는 유틸리티 퍼스트(Utility-First) CSS 프레임워크로, 클래스 이름만 조합해서 빠르게 UI를 만들 수 있도록 도와주는 도구입니다.
🌀 Tailwind CSS란?
💡 Tailwind는 미리 정의된 CSS 클래스(유틸리티 클래스)를 조합하여 HTML에 직접 스타일을 적용하는 방식입니다.
전통적인 CSS처럼 .btn, .card 같은 사용자 정의 클래스 없이도 대부분의 UI를 구성할 수 있어요.
✅ 특징 요약
특징 | 설명 |
---|---|
유틸리티 중심 | bg-blue-500, text-center, mt-4 등 작은 단위의 클래스 제공 |
빠른 개발 | HTML에 바로 스타일 작성 → 컴포넌트화가 쉬움 |
반응형 지원 | sm:, md:, lg: 같은 접두어로 다양한 뷰포트 대응 |
커스터마이징 | tailwind.config.js로 색상, 폰트, 브레이크포인트 등 자유롭게 설정 |
JIT 모드 | 필요한 CSS만 빌드하여 성능 향상 및 빌드 용량 감소 |
🧱 기본 문법 예제
<div class="bg-blue-500 text-white text-center p-4 rounded-lg shadow-md">
Hello Tailwind!
</div>
- bg-blue-500: 배경색
- text-white: 글자색
- text-center: 텍스트 중앙 정렬
- p-4: padding 1rem (16px)
- rounded-lg: 테두리 둥글게
- shadow-md: 그림자
📱 반응형 디자인 예제
<div class="text-base sm:text-lg md:text-xl lg:text-2xl">
반응형 텍스트 크기
</div>
접두어 | 뷰포트 기준 |
---|---|
sm: | ≥ 640px |
md: | ≥ 768px |
lg: | ≥ 1024px |
xl: | ≥ 1280px |
2xl: | ≥ 1536px |
💡 자주 쓰는 클래스 요약
기능 | 예시 |
---|---|
마진 / 패딩 | m-4, mt-2, px-6, p-2 |
배경 / 텍스트 색 | bg-red-500, text-gray-700 |
글자 정렬 / 크기 | text-center, text-xl |
정렬 (Flex) | flex, items-center, justify-between |
너비 / 높이 | w-1/2, h-screen, max-w-md |
테두리 / 둥글기 | border, rounded, rounded-xl |
그림자 | shadow, shadow-lg |
⚙️ 프로젝트에 Tailwind 설치 방법 (Vite 예시)
1. 설치
npm install -D tailwindcss postcss autoprefixer
npx tailwindcss init -p
2. tailwind.config.js 수정
export default {
content: [
"./index.html",
"./src/**/*.{js,ts,jsx,tsx,vue}",
],
theme: {
extend: {},
},
plugins: [],
}
3. src/index.css에 Tailwind 지시어 추가
@tailwind base;
@tailwind components;
@tailwind utilities;
4. main.js 또는 main.ts에서 CSS import
import './index.css';
✨ 예제: 카드 컴포넌트
<div class="max-w-sm rounded overflow-hidden shadow-lg bg-white p-4">
<img class="w-full rounded" src="image.jpg" alt="Card image">
<div class="mt-4 text-xl font-bold text-gray-800">제목</div>
<p class="text-gray-600 text-sm mt-2">설명 텍스트입니다.</p>
</div>
Tailwind는 디자인 시스템을 빠르게 만들고 반응형 UI를 구현할 때 매우 강력합니다.
bg-blue-700 에서 700이 의미하는 것은?
ChatGPT의 말:
bg-blue-700에서 **700**은 Tailwind CSS의 색상 농도(명암 단계) 를 의미합니다.
🎨 의미 정리:
- blue는 색상 이름
- 700은 해당 색상의 진하기(어두운 정도)를 나타냅니다.
Tailwind에서는 대부분의 색상 팔레트를 다음과 같이 50~900 사이의 단계로 나누고 있습니다:
클래스 | 설명 |
---|---|
blue-50 | 매우 연한 파랑 (거의 흰색) |
blue-100 | 아주 연한 파랑 |
blue-300 | 조금 연한 파랑 |
blue-500 | 기본 파랑 (기본톤) |
blue-700 | 짙은 파랑 (진한 색상) |
blue-900 | 매우 짙은 파랑 (거의 검정) |
🔵 예시 시각적 표현
<div class="bg-blue-100">blue-100</div>
<div class="bg-blue-300">blue-300</div>
<div class="bg-blue-500">blue-500</div>
<div class="bg-blue-700 text-white">blue-700</div>
<div class="bg-blue-900 text-white">blue-900</div>
700은 대체로 버튼의 hover 상태, 텍스트 강조, 그림자 배경 등에 자주 사용됩니다.
참고: Tailwind에서 색상 커스터마이징도 가능
tailwind.config.js에서 사용자 정의 색상이나 단계 추가도 가능합니다.
module.exports = {
theme: {
extend: {
colors: {
brand: {
100: '#dbeafe',
700: '#1d4ed8',
},
},
},
},
};
그럼 bg-brand-700처럼 사용할 수 있습니다.
더 궁금한 게 있으면 계속 도와드릴게요!
나의 말:
Tailwind에서는 색상 팔레트 범위
ChatGPT의 말:
Tailwind CSS에서는 색상 팔레트의 범위가 기본적으로 50부터 900까지이며, 숫자가 커질수록 색상이 더 진해집니다.
🎨 Tailwind CSS 기본 색상 단계
Tailwind는 대부분의 색상에 대해 다음과 같은 농도 단계를 제공합니다:
단계 | 설명 |
---|---|
50 | 아주 연한 색 (거의 흰색 느낌) |
100 | 매우 연한 색 |
200 | 연한 색 |
300 | 약간 연한 색 |
400 | 기본보다 연한 색 |
500 | 기본 색상 (표준) |
600 | 약간 진한 색 |
700 | 진한 색 |
800 | 더 진한 색 |
900 | 가장 진한 색 |
950 | (일부 색상만 있음) 매우 매우 진한 색 (거의 검정) |
🔵 예시: blue 색상 팔레트 (bg-blue-*)
클래스 | 색상 예시 (설명) |
---|---|
bg-blue-50 | 아주 연한 하늘색 |
bg-blue-100 | 거의 흰색에 가까운 연한 파랑 |
bg-blue-500 | 표준 파란색 |
bg-blue-700 | 어두운 파란색 |
bg-blue-900 | 매우 어두운 파랑 |
💡 참고 사항
- 모든 색상이 50부터 900까지 있는 건 아니며, 일부 색상은 950도 포함됩니다.
- Tailwind는 tailwind.config.js에서 색상 팔레트를 확장하거나 덮어쓸 수 있습니다.
// 예: 사용자 정의 색상 추가
module.exports = {
theme: {
extend: {
colors: {
primary: {
100: '#E0F2F1',
500: '#00BCD4',
900: '#006064',
},
},
},
},
};
→ 사용 시: bg-primary-500, text-primary-900 등으로 가능
display: flex;
justify-content: center;
align-items: center;
설명해줘
ChatGPT의 말:
좋아요! 이 세 가지 CSS 속성은 Flexbox 레이아웃을 구성할 때 가장 자주 쓰이는 핵심 속성입니다. 하나씩 쉽게 설명해드릴게요.
✅ 예제 코드
display: flex;
justify-content: center;
align-items: center;
이 코드는 컨테이너 안의 요소(자식 요소)를 가로 세로 정중앙에 정렬합니다.
🔍 속성 설명
1. display: flex;
- 이 요소를 Flex 컨테이너로 만든다는 뜻입니다.
- 즉, 자식 요소들을 수평/수직 정렬할 수 있게 해줍니다.
- 이게 있어야 justify-content와 align-items가 작동합니다.
2. justify-content: center; → 가로 정렬
- **수평 방향(메인 축)**에서 자식 요소들을 가운데 정렬합니다.
- 기본적으로 Flex는 수평 정렬이 메인 축입니다.
값 | 의미 |
---|---|
flex-start | 왼쪽 정렬 |
center | 가운데 정렬 |
flex-end | 오른쪽 정렬 |
space-between | 요소 사이에 공간만 균등 분배 |
space-around | 요소 양쪽에 동일한 여백 분배 |
space-evenly | 모든 여백이 균등 분배 |
3. align-items: center; → 세로 정렬
- 수직 방향(교차 축)에서 자식 요소들을 가운데 정렬합니다.
- 부모 요소의 높이 기준으로 자식이 수직 중앙에 위치합니다.
값 | 의미 |
---|---|
flex-start | 위쪽 정렬 |
center | 세로 가운데 정렬 |
flex-end | 아래쪽 정렬 |
stretch | 높이 자동 늘리기 (기본값) |
baseline | 텍스트 기준선 정렬 |
📦 시각적 예시
<div style="
display: flex;
justify-content: center;
align-items: center;
height: 300px;
background-color: #f0f0f0;
">
<div style="background: steelblue; color: white; padding: 20px;">
가운데 정렬된 박스
</div>
</div>
결과:
- 회색 배경의 영역에서 파란 박스가 가로세로 모두 중앙에 정렬됩니다.
Tailwind CSS로 바꾸면?
위 3줄은 Tailwind CSS에서 아래처럼 간단하게 쓸 수 있습니다:
<div class="flex justify-center items-center h-72 bg-gray-100">
<div class="bg-blue-600 text-white p-4">
가운데 정렬된 박스
</div>
</div>
필요하시면 flex-direction, gap, align-self 같은 Flexbox 관련 속성들도 이어서 설명드릴게요!
나의 말:
네
ChatGPT의 말:
좋아요! 그럼 이어서 Flexbox의 다른 핵심 속성들도 정리해드릴게요. 특히 레이아웃을 자유자재로 만들 때 알아두면 매우 유용한 속성들이에요.
🔄 1. flex-direction – 주 축 방향 설정
자식 요소들이 어떤 방향으로 정렬될지 정합니다.
값 | 설명 |
---|---|
row | 가로 정렬 (왼→오, 기본값) |
row-reverse | 가로 반대 (오→왼) |
column | 세로 정렬 (위→아래) |
column-reverse | 세로 반대 (아래→위) |
📌 예:
display: flex;
flex-direction: column;
→ 자식 요소들이 위에서 아래로 쌓입니다.
Tailwind:
<div class="flex flex-col">...</div>
📏 2. gap – 자식 요소 사이 간격
Flexbox (또는 Grid)에서 자식 요소들 사이의 틈 간격을 설정합니다.
display: flex;
gap: 20px;
Tailwind:
<div class="flex gap-5">...</div> <!-- 약 20px 간격 -->
🧲 3. align-self – 개별 요소 세로 정렬
컨테이너(align-items)와 달리, 개별 자식 요소만 따로 정렬할 때 사용합니다.
align-self: flex-start;
Tailwind:
<div class="self-start">...</div>
🧱 4. flex-wrap – 줄바꿈 허용 여부
자식 요소가 넘칠 경우 다음 줄로 넘길지 여부를 정합니다.
값 | 설명 |
---|---|
nowrap | 한 줄에 표시 (기본값) |
wrap | 다음 줄로 넘김 |
wrap-reverse | 줄바꿈 방향을 반대로 |
Tailwind:
<div class="flex flex-wrap">...</div>
🧮 5. flex-grow, flex-shrink, flex-basis
이 세 가지는 요소가 남는 공간을 어떻게 차지할지를 설정합니다.
예시:
flex: 1;
→ flex-grow: 1, flex-shrink: 1, flex-basis: 0 의미
Tailwind:
<div class="flex-1">...</div>
✅ 요약
목적 | CSS | Tailwind |
---|---|---|
가로 정렬 | justify-content | justify-* |
세로 정렬 | align-items | items-* |
방향 바꾸기 | flex-direction | flex-row, flex-col |
줄바꿈 | flex-wrap | flex-wrap |
간격 | gap | gap-* |
자식 개별 정렬 | align-self | self-* |
공간 차지 | flex: 1 | flex-1 |
'ChatGPT와 Next.js 공부' 카테고리의 다른 글
Tailwind CSS로 자주 사용하는 UI 컴포넌트들의 사용 예제 (0) | 2025.05.15 |
---|---|
Tailwind CSS로 자주 사용하는 UI 컴포넌트 모음 (0) | 2025.05.14 |
css 기본 문법 (0) | 2025.05.14 |
useState, useEffect 등 클라이언트 hook (0) | 2025.05.13 |
Next.js 프로젝트에서 'use client'의 의미는? (0) | 2025.05.13 |