본문으로 바로가기

CSS 그라디언트 생성기

선형·방사형·원뿔형 그라디언트를 미리보기로 확인하며 만들고 background CSS를 복사합니다. OKLCH 보간을 켜면 구형 브라우저용 대안 줄이 함께 나옵니다.

프리셋

종류
deg

색상 정지점

막대를 누르면 그 자리에 정지점이 추가되고, 핸들을 끌면 위치가 바뀝니다. 키보드로는 방향키로 1%씩(Shift와 함께 누르면 10%씩) 옮기고 Delete로 삭제합니다.

%
%

CSS

background: linear-gradient(90deg, #ff7e5f 0%, #feb47b 100%);

입력한 내용은 이 브라우저 안에서만 처리되며 서버로 전송되지 않습니다. 어떻게 동작하나요?

세 가지 색상 지점이 부드럽게 연결된 CSS 그라디언트와 색상 조절 막대

색과 방향을 미리보기로 확인하면서 그라디언트를 만들고, 완성된 background 선언을 복사해 가는 도구입니다. 처음에는 “노을” 프리셋이 들어 있고 CSS는 background: linear-gradient(90deg, #ff7e5f 0%, #feb47b 100%);입니다.

사용 방법

  1. 프리셋: 노을, 바다, 캔디, 모노톤, 오로라 다섯 가지 가운데 하나를 눌러 시작점으로 삼습니다.
  2. 종류: “선형”, “방사형”, “원뿔형” 중에서 고릅니다. 종류에 따라 아래 옵션이 달라집니다.
  3. 색상 정지점: 색과 위치를 정합니다. 자세한 조작은 다음 절에 있습니다.
  4. OKLCH로 보간 (in oklch): 켜면 색 사이를 OKLCH 색공간에서 잇습니다.
  5. CSS: 지금 설정으로 만든 선언이 보이고, “CSS 복사”로 가져갑니다.
종류 CSS 함수 고를 수 있는 옵션
선형 linear-gradient 각도. 90deg는 왼쪽에서 오른쪽, 180deg는 위에서 아래입니다
방사형 radial-gradient 모양(“원”, “타원”)과 중심 위치
원뿔형 conic-gradient 각도(색이 돌기 시작하는 방향)와 중심 위치

각도는 숫자 칸에 직접 넣거나 슬라이더로 0 ~ 360 사이를 고릅니다. 숫자 칸에는 360보다 큰 값이나 음수도 넣을 수 있고 넣은 그대로 CSS에 들어갑니다. 중심 위치는 가운데, 네 변, 네 모서리의 아홉 곳 중에서 고릅니다.

정지점 다루기

색상 정지점(color stop)은 “이 위치에서는 이 색”이라고 정해 둔 점이고, 그라디언트는 정지점 사이를 이어서 만듭니다. 2개에서 8개까지 둘 수 있습니다.

  • 그라디언트 막대의 빈 곳을 누르면 그 자리에 정지점이 생깁니다. 색은 그 자리에 보이던 색이라, 추가한 직후에는 그라디언트의 모양이 바뀌지 않습니다. 그대로 끌어 옮기거나 색을 바꾸면 됩니다.
  • “정지점 추가” 버튼은 마지막 정지점과 100% 사이의 가운데에 흰색(#ffffff) 정지점을 넣습니다. 마지막 정지점이 이미 100%에 있으면 겹치지 않도록 정지점 사이가 가장 넓은 구간의 가운데에 넣습니다. 0%와 100%에 하나씩 있으면 50%에 생깁니다.
  • 핸들을 끌거나 목록의 위치 칸에 숫자를 넣어 위치를 바꿉니다. 키보드로는 핸들에서 방향키로 1%씩, Shift와 함께 누르면 10%씩 옮기고 Delete로 삭제합니다.
  • 목록의 위로·아래로 버튼은 이웃한 정지점과 위치를 맞바꿉니다. 색의 순서를 뒤집을 때 씁니다.
  • 삭제는 정지점이 3개 이상일 때만 할 수 있습니다.

목록은 언제나 위치 순서로 정렬되어 보이고, CSS에도 위치 순서로 들어갑니다. 위치는 소수 첫째 자리까지 적습니다.

색상 입력 형식: 정지점 색으로 읽는 것은 HEX(3·4·6·8자리), 색 이름, rgb(), hsl(), oklch(), transparent입니다. hwb(), lab(), lch(), color() 함수와 var()로 쓴 변수는 읽지 못합니다. 읽지 못한 색이 있으면 “이 도구가 읽을 수 있는 CSS 색상이 아닙니다.“가 나오고, 그 정지점은 미리보기와 CSS에서 빠집니다. 읽은 색은 입력한 표기 그대로 CSS에 들어갑니다.

OKLCH로 보간하면 중간색이 달라집니다

정지점 색을 HEX, 색 이름, rgb(), hsl()로만 적은 CSS 그라디언트는 따로 정하지 않으면 sRGB 색공간에서 두 색의 빨강·초록·파랑 값을 각각 직선으로 섞습니다. 사람이 느끼는 밝기는 이 숫자와 비례하지 않아서, 색상환에서 멀리 떨어진 두 색을 섞으면 가운데가 어둡고 탁해집니다. OKLCH는 밝기(L), 채도(C), 색상각(H)을 따로 다루고 세 값을 각각 이어 가므로, 가운데에서 밝기와 채도가 꺼지지 않습니다.

두 정지점을 0%와 100%에 두고 막대의 50% 지점 색을 계산하면 다음과 같습니다.

두 색 sRGB로 섞은 가운데 OKLCH로 섞은 가운데
빨강 #ff0000 → 초록 #00ff00 #808000 (어두운 올리브색) #f99500 (밝은 주황)
파랑 #0000ff → 노랑 #ffff00 #808080 (회색) #00cfbd (청록)
노을 프리셋 #ff7e5f → #feb47b #ff996d #ff9a68

색상이 멀수록 차이가 크고, 노을 프리셋처럼 비슷한 색끼리는 거의 차이가 없습니다. OKLCH로 섞으면 가운데에 두 색 어디에도 없던 색상이 나타난다는 점도 알아 두세요. 빨강과 초록 사이에 주황과 노랑이 지나가는 것이 그 예입니다. 두 색이 곧장 섞이기를 바란다면 옵션을 끄는 편이 맞습니다.

복사되는 CSS가 두 줄인 이유

in oklch처럼 보간 방식을 정하는 문법은 CSS에 비교적 늦게 들어와서 알아듣지 못하는 브라우저가 있습니다. 그래서 OKLCH 보간을 켜면 선언이 두 줄로 나옵니다. 빨강에서 초록으로 가는 선형 그라디언트라면 이렇습니다.

background: linear-gradient(90deg, #ff0000 0%, #ff3300 12.5%, #ff5600 25%, #ff7600 37.5%, #f99500 50%, #e3b200 62.5%, #c2ce00 75%, #8fe800 87.5%, #00ff00 100%);
background: linear-gradient(90deg in oklch, #ff0000 0%, #00ff00 100%);
  • 첫째 줄은 대안입니다. 이웃한 정지점 사이를 8등분해서 OKLCH로 계산한 중간색 7개를 보통의 HEX 정지점으로 끼워 넣었습니다. 정지점이 2개면 9개, 3개면 17개로 늘어납니다.
  • 둘째 줄은 in oklch 문법 그대로입니다.

같은 속성을 두 번 선언하면 나중 것이 적용되므로, in oklch를 아는 브라우저는 둘째 줄을 쓰고 모르는 브라우저는 둘째 줄을 무시한 채 첫째 줄을 씁니다.

OKLCH 보간을 켠 동안 화면의 미리보기와 그라디언트 막대는 어느 브라우저에서 열든 첫째 줄 방식으로 그립니다. 대안 줄은 중간색을 sRGB 범위에 맞춰 HEX로 적은 근삿값이라, 둘째 줄을 브라우저가 직접 그린 결과와 색이 조금 다를 수 있습니다. 색이 중요한 작업이라면 붙여넣은 뒤 대상 브라우저에서 확인하세요.

이 도구로 만들 수 없는 것

  • repeating-linear-gradient 같은 반복 그라디언트. 복사한 CSS의 함수 이름 앞에 repeating-을 붙이고 정지점 범위를 직접 고쳐야 합니다.
  • 방사형의 크기(closest-side 등)와 at 30% 70% 같은 좌표로 정하는 중심 위치
  • 여러 그라디언트를 쉼표로 겹친 배경
  • 퍼센트가 아닌 px 단위의 정지점 위치
  • in hsl, in oklab 같은 다른 보간 방식

참고 자료

자주 묻는 질문

프리셋을 눌렀더니 켜 둔 OKLCH 보간이 꺼졌습니다.

프리셋은 색만 바꾸는 것이 아니라 종류, 각도, 모양, 중심 위치, 정지점을 한꺼번에 바꾸고 "OKLCH로 보간 (in oklch)"도 끕니다. 직접 만든 정지점도 프리셋의 정지점으로 바뀌어 되돌릴 수 없습니다. 프리셋에서 시작할 때는 프리셋을 먼저 고른 뒤에 옵션을 켜세요.

두 색이 섞이지 않고 뚝 끊기는 줄무늬를 만들 수 있나요?

두 정지점을 같은 위치에 두면 됩니다. 빨강을 0%와 50%에, 파랑을 50%와 100%에 두면 linear-gradient(90deg, #ff0000 0%, #ff0000 50%, #0000ff 50%, #0000ff 100%)가 되어 가운데에서 색이 바로 바뀝니다. 위치 칸에 같은 숫자를 직접 넣는 편이 핸들을 끄는 것보다 정확합니다.

transparent로 사라지는 그라디언트를 OKLCH로 보간해도 중간이 어두워지지 않나요?

어두워지지 않습니다. transparent는 내부적으로 투명한 검정이라 그대로 섞으면 중간이 거무스름해지는데, 이 도구는 CSS 그라디언트와 같은 방식으로 알파를 먼저 곱해서 섞습니다. 빨강(#ff0000)에서 transparent로 가는 그라디언트의 대안 줄을 보면 중간 정지점이 #ff0000bf, #ff000080, #ff000040처럼 빨강은 그대로이고 불투명도만 줄어듭니다.

이미 배경을 지정한 요소에 복사한 CSS를 붙여도 되나요?

같은 CSS 규칙 안에서 기존 background 선언 아래에 붙여 넣으세요. 다른 규칙이 배경을 덮어쓰고 있다면 선택자 우선순위나 !important도 확인하세요. OKLCH 보간으로 두 줄이 나왔다면 순서를 유지해 함께 붙여 넣으세요.

사용한 오픈소스: culori (MIT)

최종 수정일: