bg-gradient-to-t | to-tr | to-r | to-br | to-b | to-bl | to-l | to-tlfrom-색, via-색(선택), to-색from-black/70 처럼 / 뒤에 0 ~ 100 퍼센트bg-clip-text text-transparentbg-[linear-gradient(...)], bg-[radial-gradient(...)], bg-[conic-gradient(...)]relative + absolute inset-0 + pointer-events-none그라디언트는 색이 연속적으로 변하는 배경 이미지이다. CSS에서 세 가지가 핵심이다.
linear-gradient() 선형radial-gradient() 방사형conic-gradient() 원뿔형Tailwind는 이 CSS들을 유틸리티 클래스로 쉽게 쓰도록 래핑해준다. 기본은 bg-gradient-to-* 방향 + from/via/to 색상 스탑 조합이다.
<div class="h-32 bg-gradient-to-r from-blue-500 to-purple-500"></div> <!-- 오른쪽으로 -->
<div class="h-32 bg-gradient-to-b from-slate-900 to-slate-600"></div> <!-- 아래로 -->
<div class="h-32 bg-gradient-to-tr from-rose-500 to-amber-400"></div> <!-- 위-오른쪽 대각 -->
접미사 의미
to-t 위로to-r 오른쪽to-b 아래to-l 왼쪽to-tr, to-br, to-bl, to-tl 대각선from-* 시작 색via-* 중간 색(선택)to-* 끝 색<div class="h-32 bg-gradient-to-r from-indigo-500 via-sky-300 to-emerald-400"></div>
/ 뒤에 퍼센트로 불투명도를 주면 어두운 오버레이 등에 유용하다.
<div class="h-32 bg-gradient-to-t from-black/70 to-transparent"></div>
흔한 오타:
form아님,from이다.
잘못된 예:to-50%같은 클래스는 없다. 색 위치 퍼센트 제어는 임의값으로(아래 6장) 처리한다.
이미지를 어둡게 해 가독성을 올리거나, 하단만 진하게 만들 때 쓰는 패턴이다.
<figure className="relative">
<img src="/images/scene.jpg" className="block w-full h-auto" alt="" />
<div className="pointer-events-none absolute inset-0 bg-gradient-to-t from-black/50 to-transparent" />
</figure>
<figure className="relative">
<img src="/images/scene.jpg" className="block w-full h-auto" alt="" />
<div className="pointer-events-none absolute inset-x-0 bottom-0 h-24
bg-gradient-to-t from-black/90 via-black/50 to-transparent" />
</figure>
relative 부모 + absolute inset-* 자식이 기본 패턴이다pointer-events-none을 붙인다from-black/95h-24 → h-32inset-x-0 bottom-0 인가하단 전용 오버레이를 전폭으로, 바닥에 딱 붙여 깔기 위함이다.
absolute: 부모(relative) 기준 절대 배치inset-x-0: left: 0; right: 0; 와 동일 → 가로 전폭bottom-0: bottom: 0; → 부모의 바닥에 붙임h-24 같은 높이를 주면 → 바닥에서부터 해당 높이만 차지CSS로 풀면:
/* class: absolute inset-x-0 bottom-0 h-24 */
position: absolute;
left: 0;
right: 0;
bottom: 0;
height: 6rem;
left-0 bottom-0 w-full h-24 도 가능하지만, 절대 위치 요소는 상황에 따라 shrink-to-fit 규칙을 타서 너비 계산이 달라질 수 있다.inset-x-0 은 양쪽 엣지에 고정하므로 틈 없이 안정적이다.inset-x-0 top-0 h-24absolute inset-0 bg-[linear-gradient(...)] 로 스톱을 아래쪽에 몰면 된다.relative 가 없으면 화면 기준으로 붙는다 → 부모에 relative 필수overflow-hidden rounded-* 를 부모에 적용pointer-events-nonez-10배경을 글자에만 클립하고 글자색을 투명으로 만든다.
<h1 class="text-5xl font-extrabold
bg-gradient-to-r from-fuchsia-500 to-cyan-400
bg-clip-text text-transparent">
Gradient Title
</h1>
색상 스탑 위치(예: 12 %, 35 %)까지 제어하려면 CSS 함수를 그대로 쓴다. Tailwind v4에서도 bg-[linear-gradient(...)] 같은 임의값 문법이 잘 동작한다. var(--tw-gradient-stops) 덕분에 from/via/to 유틸과 섞어 쓸 수 있다.
<!-- 아래 0 ~ 12 %는 진하게, 35 %에서 완전 투명 -->
<div class="h-40
bg-[linear-gradient(to_top,_var(--tw-gradient-stops))]
from-black/90 via-black/60 to-transparent
[--tw-gradient-stops:rgba(0,0,0,0.9)_0%,rgba(0,0,0,0.6)_12%,rgba(0,0,0,0)_35%]">
</div>
포인트: 임의값에서는 쉼표와 공백을
_로 대체해야 할 때가 많다.
빌드가 특수문자를 싫어하면_로 대체해 안전하게 사용한다.
<!-- Radial -->
<div class="h-40 rounded-xl
bg-[radial-gradient(ellipse_at_top,_var(--tw-gradient-stops))]
from-indigo-500 via-sky-300 to-transparent"></div>
<!-- Conic -->
<div class="h-40 rounded-xl
bg-[conic-gradient(from_180deg_at_50%_50%,_var(--tw-gradient-stops))]
from-pink-500 via-purple-500 to-yellow-400"></div>
v4는 CSS 우선 철학이라 @theme 안에 색을 등록해두고 쓰면 깔끔하다.
/* globals.css */
@theme {
--color-brand: #7c3aed; /* violet-600 */
--color-ink: #0b1020;
}
<div class="h-32 bg-gradient-to-r from-brand to-ink"></div>
<div class="h-32 bg-gradient-to-t from-brand/80 to-transparent"></div>
from-[var(--my-start)] to-[var(--my-end)] 같은 형태가 자연스럽다진짜 border-color 그라디언트는 까다롭다. 바깥 래퍼에 그라디언트 배경 + 1px 패딩을 주고 안쪽을 흰색으로 채우는 트릭이 일반적이다.
<div class="p-[1px] rounded-2xl bg-gradient-to-r from-fuchsia-500 to-cyan-400">
<div class="rounded-2xl bg-white p-6">
내용
</div>
</div>
<section class="py-24 text-white bg-gradient-to-br from-slate-900 to-slate-700">
<div class="max-w-5xl mx-auto text-center">
<h1 class="text-5xl font-bold">브랜드 타이틀</h1>
<p class="mt-4 text-white/80">서브 카피</p>
</div>
</section>
<div class="relative rounded-xl overflow-hidden">
<img src="/img.jpg" class="w-full h-auto" alt="" />
<div class="pointer-events-none absolute inset-x-0 top-0 h-20
bg-gradient-to-b from-black/45 to-transparent"></div>
</div>
<div class="h-16 bg-[linear-gradient(to_top,_rgba(0,0,0,0.08),_transparent)]"></div>
<div class="p-6 rounded-2xl bg-gradient-to-r from-amber-50 to-white">
콘텐츠
</div>
h-*, w-* 확인z-10을 오버레이에 추가하거나, 이미지가 더 위에 있는지 확인to-transparent만으로는 약할 수 있다 → from-black/70처럼 시작 색 불투명도를 충분히 준다form → from, to-50% 같은 클래스는 없다bg-[linear-gradient(...)]로 처리한다<Image />에서의 팁Next.js next/image 위에 오버레이를 덮을 때도 동일하다. 부모를 relative로 두고 오버레이에 absolute inset-0를 주면 된다.
<figure className="relative">
<Image
src="/images/scene.jpg"
alt="scene"
width={1920}
height={1080}
className="w-full h-auto"
priority
/>
<div className="pointer-events-none absolute inset-x-0 bottom-0 h-28
bg-gradient-to-t from-black/90 via-black/50 to-transparent" />
</figure>
@theme로 브랜드 색을 정의해두면 일관성이 유지되고 유지보수가 쉬워진다linear-gradient로 해결 가능한지 먼저 고려Q. 텍스트에만 그라디언트를 적용하는 법
A. bg-clip-text text-transparent와 배경 그라디언트를 함께 쓴다(5장 참고).
Q. 색상 사이를 정확히 몇 퍼센트에서 바꾸고 싶다
A. 유틸리티만으로는 퍼센트 제어가 어렵다. bg-[linear-gradient(...)] 임의값을 사용한다(6장 참고).
Q. 이미지의 ‘최하단만’ 진하게 하고 싶다
A. 오버레이 높이를 제한한다(h-24 등). 더 매끄럽게 하려면 bg-[linear-gradient(...)]로 스톱 퍼센트를 직접 지정한다(4장, 6장 참고).