Radial gradient
radial-gradient()는 중심점에서 바깥쪽으로 색을 섞어요. 모든 CSS 그라데이션처럼 이미지라서 background-image(또는 background 단축 속성)에 넣어요.
전체 문법은 radial-gradient(shape size at position, color stops)예요. 색 앞의 모든 것은 선택 사항이에요.
| 부분 | 값 | 기본값 |
|---|---|---|
| 모양 | circle, ellipse | ellipse |
| 크기 | closest-side, closest-corner, farthest-side, farthest-corner, 또는 길이 | farthest-corner |
| 위치 | at center, at top left, at 30% 70%, at 20px 40px | at center |
| 색 정지점 | 색 두 개 이상, 각각 선택적인 위치 |
크기 키워드는 마지막 색에 닿는 곳을 정해요. 상자의 가장 가까운 변, 가장 먼 모서리 등이에요. 여기서 값을 바꾸고 그라데이션이 다시 그려지는 걸 보세요.
circle farthest-corner at 30% 50%, #f59e0b, #2563eb, ellipse at bottom, white, #16a34a, circle 40px, #f59e0b 99%, transparent(가장자리가 딱 떨어지는 점)를 넣어 보세요.
Linear gradient
linear-gradient()는 직선을 따라 색을 섞어요. 방향이나 각도를 먼저 넣고, 그다음 색을 넣어요.
각도는 0deg가 위쪽에서 시작해서 시계 방향으로 돌아요. 그래서 90deg는 to right이고 180deg는 기본값 to bottom이에요. to right는 오른쪽에서 왼쪽으로 읽는 페이지에서도 물리적 방향 그대로예요. 그라데이션이 읽는 방향을 따라야 한다면 직접 뒤집으세요.
색 정지점과 딱 끊기는 정지점
색마다 위치를 줄 수 있어요. 위치가 없으면 색이 고르게 배치돼요. 두 색이 같은 위치를 가지면 색이 즉시 바뀌고, 이렇게 줄무늬, 깃발, 진행 막대를 그려요.
정지점은 #111827 12px 24px처럼 위치 두 개를 받을 수도 있고, 12px에서 24px까지 단색 띠를 그려요.
Conic gradient
conic-gradient()는 시곗바늘처럼 중심점을 돌면서 색을 칠해요. 딱 끊기는 정지점과 함께 쓰면 이미지나 JavaScript 없이 원그래프를 그려요.
CSS로 그린 그래프는 스크린 리더에 보이지 않으니 숫자를 텍스트로도 넣으세요.
그라데이션 텍스트
그라데이션 배경을 글자 모양으로 잘라 내고 텍스트 자체는 투명하게 만들어요.
.gradient-text {
background: linear-gradient(90deg, #2563eb, #db2777);
-webkit-background-clip: text; /* older browsers need the prefix */
background-clip: text;
color: transparent;
}
일반 color 대체값을 염두에 두세요. 잘라 내기가 실패하면 텍스트가 사라져요. 그라데이션 텍스트는 명도 대비도 고르지 않으니 큰 제목에만 쓰세요.
그라데이션은 하나의 background-image 목록 안에서 이미지나 다른 그라데이션과 겹쳐 쓸 수 있어요. 레이어, 크기, 위치는 배경 이미지 페이지에서 다뤄요.
자주 하는 실수
background-color: linear-gradient(...). 그라데이션은 이미지예요.background-image나background를 쓰세요.- 각도 방향 착각. 0deg는 오른쪽이 아니라 위쪽을 가리켜요.
90deg가 오른쪽을 향해요. - 높이 없는 요소에 그라데이션. 아무것도 안 보여요. 콘텐츠나 크기를 주세요.
- 탁한 중간색. 빨강과 초록처럼 선명한 반대색 두 개를 섞으면 sRGB에서는 회갈색을 거쳐요. 중간 정지점을 추가하거나 다른 색 공간에서 섞으세요.
linear-gradient(in oklch, red, green) - 크고 은은한 그라데이션의 계단 현상. 아주 비슷한 색이 넓은 영역에 걸치면 단계가 보여요. 정지점 사이의 대비를 조금 늘리면 나아져요.
자주 묻는 질문
CSS로 radial gradient는 어떻게 만드나요?
background-image: radial-gradient(#93c5fd, #1e3a8a);를 써요. 색 앞에 모양과 위치를 넣을 수 있어요. radial-gradient(circle at top left, #93c5fd, #1e3a8a)처럼요.
radial-gradient에서 circle과 ellipse는 무엇이 다른가요?
ellipse(기본값)는 상자 비율에 맞춰 늘어나서 넓은 상자에서는 넓어져요. circle은 상자 모양과 상관없이 그라데이션을 둥글게 유지해요.
linear gradient의 방향은 어떻게 정하나요?
방향이나 각도를 맨 앞에 넣어요. linear-gradient(to right, red, blue)나 linear-gradient(45deg, red, blue)처럼요. 기본값은 to bottom(180deg)이고, 0deg는 위쪽을 가리키며 각도는 시계 방향으로 돌아요.
부드럽게 섞이지 않고 딱 끊기는 줄무늬는 어떻게 만드나요?
두 색에 같은 정지점 위치를 줘요. linear-gradient(90deg, #2563eb 50%, #f59e0b 50%)는 섞임 없이 가운데에서 색이 바뀌어요. repeating-linear-gradient는 이런 정지점 패턴을 반복해요.
그라데이션을 background-color로 쓸 수 있나요?
없어요. 그라데이션은 이미지라서 background-image나 background 단축 속성에 들어가요. background-color: linear-gradient(...)는 잘못된 값이라 무시돼요.