Tailwind는 모든 유틸리티 앞에 중단점(prefix) 을 붙이면 끝.
Prefix 의미 예시
sm: small (640px↑) sm:bg-red-500
md: medium (768px↑) md:flex
lg: large (1024px↑) lg:w-1/2
xl: x-large xl:text-4xl
2xl: 2x-large 2xl:px-20
<div class="p-4 bg-gray-200 sm:bg-blue-200 md:bg-green-200 lg:bg-yellow-200">
반응형 박스
</div>
tailwind css는 요소에 대해 필터를 씌울 수 있는데,
흐림 , 밝기 , 대비 , 그림자 , 회색조 , 색조 회전 , 반전 , 채도 , 세피아등 다양하다.
해당 필터들은 중복하여 사용할 수 있다.
ex)
<img class="brightness-150 grayscale contrast-150 saturate-200 sepia" src="/image.jpg" />
배경 또는 요소 자체를 흐리게 만드는 효과.
<div class="blur-sm">가벼운 블러</div>
<div class="blur">기본 블러</div>
<div class="blur-md">중간 블러</div>
<div class="blur-lg">강한 블러</div>
이미지에 blur 적용
<img src="/img/photo.jpg" class="blur-md rounded-lg" />
<div class="backdrop-blur-md bg-white/30 p-6 rounded-xl">
배경만 흐려짐
</div>
<img class="brightness-50" src="/img/photo.jpg" /> <!-- 매우 어두움 -->
<img class="brightness-100" src="/img/photo.jpg" /> <!-- 기본값 -->
<img class="brightness-150" src="/img/photo.jpg" /> <!-- 조금 밝음 -->
<img class="brightness-200" src="/img/photo.jpg" /> <!-- 매우 밝음 -->
<img class="contrast-50" src="/img/photo.jpg" /> <!-- 대비 낮음 -->
<img class="contrast-125" src="/img/photo.jpg" /> <!-- 대비 조금 강함 -->
<img class="contrast-200" src="/img/photo.jpg" /> <!-- 대비 매우 강함 -->
tailwind 기본 shadow-* 와 다르게, drop-shadow는 이미지 바깥 윤곽에만 그림자를 적용함.
<img class="drop-shadow-sm" src="/img/icon.png" />
<img class="drop-shadow" src="/img/icon.png" />
<img class="drop-shadow-lg" src="/img/icon.png" />
<img class="grayscale" src="/img/photo.jpg" /> <!-- 완전 흑백 -->
<img class="grayscale-0" src="/img/photo.jpg" /> <!-- 원본 -->
<img class="grayscale hover:grayscale-0 transition" src="/img/photo.jpg" />
다른 색조 느낌으로 회전시키는 효과.
<img class="hue-rotate-15" src="/img/photo.jpg" />
<img class="hue-rotate-60" src="/img/photo.jpg" />
<img class="hue-rotate-90" src="/img/photo.jpg" />
<img class="hue-rotate-180" src="/img/photo.jpg" />
색상이 부드럽게 바뀜.
색상을 반전시키는 네거티브 필터.
<img class="invert" src="/img/photo.jpg" /> <!-- 반전됨 -->
<img class="invert-0" src="/img/photo.jpg" /> <!-- 원본 -->
<img class="saturate-50" src="/img/photo.jpg" /> <!-- 채도 낮음 -->
<img class="saturate-100" src="/img/photo.jpg" /> <!-- 기본 -->
<img class="saturate-200" src="/img/photo.jpg" /> <!-- 채도 높음 -->
<img class="saturate-300" src="/img/photo.jpg" /> <!-- 매우 쨍함 -->
고전 사진 느낌.
<img class="sepia" src="/img/photo.jpg" /> <!-- 세피아 적용 -->
<img class="sepia-0" src="/img/photo.jpg" /> <!-- 원본 -->
hover로 세피아 제거
<img class="sepia hover:sepia-0 transition" src="/img/photo.jpg" />
먼저 dark모드를 클래스 기반으로 설정해준다.
아래 코드에서 디폴트(light모드)에서는 background color가 white이다.
dark모드일 경우에는 background-color가 grey이다.
<div class="bg-white dark:bg-gray-800">
예시)
app.css
@import "tailwindcss";
/* dark:* 유틸리티는 .dark 클래스로 활성화 */
@custom-variant dark (&:where(.dark, .dark *));
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Dark Mode Example</title>
<link rel="stylesheet" href="app.css" />
<!-- 초기 theme 적용 (FOUC 방지용) -->
<script>
// 페이지 로딩 전에 먼저 처리해서 깜박임 방지
if (
localStorage.theme === "dark" ||
(!("theme" in localStorage) &&
window.matchMedia("(prefers-color-scheme: dark)").matches)
) {
document.documentElement.classList.add("dark");
}
</script>
</head>
<body class="bg-white dark:bg-gray-900 text-black dark:text-white p-10">
<h1 class="text-3xl font-bold">Tailwind Dark Mode Toggle</h1>
<p class="mt-4 text-gray-700 dark:text-gray-300">
이 페이지는 Tailwind CSS 다크 모드를 localStorage로 제어합니다.
</p>
<!-- 토글 버튼 -->
<button
id="themeToggle"
class="mt-6 px-4 py-2 rounded-lg bg-gray-200 dark:bg-gray-700 hover:bg-gray-300 dark:hover:bg-gray-600"
>
Toggle Dark Mode
</button>
<script src="theme.js"></script>
</body>
</html>
thme.js (다크모드 토글 및 로컬스토리지 저장)
const htmlEl = document.documentElement;
const btn = document.getElementById("themeToggle");
// 버튼 클릭 시 다크모드 / 라이트모드 전환
btn.addEventListener("click", () => {
if (htmlEl.classList.contains("dark")) {
// 현재 dark → light로 변경
htmlEl.classList.remove("dark");
localStorage.theme = "light";
} else {
// 현재 light → dark로 변경
htmlEl.classList.add("dark");
localStorage.theme = "dark";
}
});
위에서 다크모드에 대하여 알아보았습니다.
그러나, dark:블라블라, dark:블라블라2 이런식으로 속성들을 계속 작송해주는 것은 유지보수가 힘들어집니다..ㅜㅜ
그렇기때문에 테마 변수를 만들거야합니다.
@import "tailwindcss";
/* Dark 모드 커스텀 variant */
@custom-variant dark (&:where(.dark, .dark *));
/* Components Layer */
@layer components {
/* 카드 테마 */
.card {
@apply bg-white text-black p-4 rounded-lg shadow-md;
}
.card-dark {
@apply dark:bg-gray-900 dark:text-white dark:shadow-lg;
}
<html class="dark">
<body class="p-8 bg-gray-100 dark:bg-gray-800 text-gray-900 dark:text-gray-100">
<div class="card card-dark mb-4">
<h2 class="text-xl font-bold">테마 카드</h2>
<p>이 카드에는 light/dark 모드가 적용됩니다.</p>
</div>
</body>
</html>
Tailwind에는 미리 설계된 풍부한 색상 팔레트가 기본 제공됩니다.

각 색상은 50~950까지 11단계 밝기로 나뉩니다.
50: 가장 밝음
950: 가장 어두움
<div class="bg-sky-50"></div>
<div class="bg-sky-500"></div>
<div class="bg-sky-950"></div>
Tailwind에서는 색상을 여러 속성에 쉽게 적용할 수 있습니다.
유틸리티 설명
bg- 배경색
text- 글자색
border- 테두리색
outline- 아웃라인 색
shadow- 그림자 색
ring- 포커스 링 색
accent- form 컨트롤 색
caret- 입력 커서 색
fill- SVG 채우기 색
stroke- SVG 선 색
<div class="bg-pink-100 text-gray-950 border-pink-300">
Example
</div>
<div class="bg-black/50"></div> <!-- 50% 불투명 -->
<div class="bg-sky-500/10"></div> <!-- 10% 불투명 -->
<div class="bg-pink-500/[71.37%]"></div>
<div class="bg-cyan-400/(--my-alpha-value)"></div>
--color-teal-500: oklch(70.4% 0.14 182.503);
70.4% → 밝기
0.14 → 채도
182.503 → 색상(청록색 계열)
Tailwind 색상은 --color-* CSS 변수로도 접근 가능
.color-text {
color: var(--color-gray-950);
}
직접 테마 변수 추가
@theme {
--color-midnight: #121063;
--color-tahiti: #3ab7bf;
}
기본 색상 덮어쓰기 가능
@theme {
--color-gray-50: oklch(0.984 0.003 247.858);
}
기본 색상 비활성화
@theme {
--color-lime-*: initial;
--color-fuchsia-*: initial;
}
HTML에서 직접 레이아웃을 눈으로 보면서 짜기 좋다.
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-6">
<div class="p-4 bg-white rounded shadow">트리하우스</div>
<div class="p-4 bg-white rounded shadow">아파트</div>
<div class="p-4 bg-white rounded shadow">호숫가 별장</div>
<div class="p-4 bg-white rounded shadow">디자이너 주택</div>
</div>
원하는 효과에 유틸리티 붙이면 바로 동작.
<button class="px-4 py-2 bg-blue-500 text-white rounded
transition-all duration-300 ease-in-out
hover:scale-105 hover:bg-blue-600">
호버 버튼
</button>
ease-in
ease-out
ease-in-out
ease-linear
특이성 문제 해결을 위한 CSS Layers를 Tailwind가 기본 사용한다.
@layer theme, base, components, utilities;
@layer components {
.btn-primary {
@apply bg-blue-600 text-white px-4 py-2 rounded;
}
}
HTML에서:
<button class="btn-primary">버튼</button>
다국어 사이트를 위한 ltr, rtl 지원.
<div class="p-s-4 p-e-4">양쪽 padding (언어 방향에 따라 바뀜)</div>
<div dir="rtl" class="text-right border-s-4 border-blue-500">
오른쪽에서 시작하는 언어 예제 (아랍어 등)
</div>
요소의 크기에 따라 스타일이 바뀌는 최신 기능
부모 크기에 반응하므로 반응형의 한계를 극복함.
<div class="@container p-4 border rounded">
<div class="grid grid-cols-1 @sm:grid-cols-2 gap-4">
<img class="aspect-square @sm:aspect-3/2 object-cover" src="/img/1.jpg" />
<img class="aspect-square @sm:aspect-3/2 object-cover" src="/img/2.jpg" />
<img class="aspect-square @sm:aspect-3/2 object-cover" src="/img/3.jpg" />
<img class="aspect-square @sm:aspect-3/2 object-cover" src="/img/4.jpg" />
</div>
</div>
부모 요소가 좁으면 1열, 넓어지면 2열!
Tailwind는 긴 gradient 문법 필요 없다.
<div class="w-full h-40 bg-gradient-to-r from-purple-500 via-pink-500 to-yellow-500 rounded-xl"></div>
유틸리티 조합만 하면 됨:
bg-gradient-to-r
from-red-400
via-orange-400
to-yellow-400
요즘 애니메이션에서 3D 효과도 자주 씀.
<div class="w-40 h-40 bg-blue-400
transform perspective-1000
hover:rotate-y-12 hover:rotate-x-6
transition-all duration-500">
</div>
가능한 속성:
rotate-x-
rotate-y-
translate-z-
scale-z-
더 자세한 사용법은 공식 홈페이지를 참조하길 바랍니다.