CSS 박스 그림자 생성기
box-shadow 규칙을 한 번에 하나씩 만듭니다. 가로·세로 오프셋, 흐림, 확산, 색상, 선택적 inset을 설정한 뒤 결과를 복사하세요. 실제 그림자는 보통 두세 개 레이어가 필요하므로 각 레이어를 따로 생성한 다음 규칙을 쉼표로 이어 붙입니다.
박스 그림자를 디자인하는 방법
-
1
그림자 값 설정
수평 오프셋, 수직 오프셋, 흐림 반경, 확산, 그리고 불투명도가 적용된 색상을 지정합니다.
-
2
inset 전환
그림자를 inset으로 바꾸면 안쪽 그림자가 됩니다. 눌린 버튼이나 움푹한 효과를 만들 때 유용합니다.
-
3
색상 선택
불투명도가 낮은 검은색이 가장 무난한 선택입니다. 요소의 색조에 맞춘 조금 더 어두운 컬러 그림자가 한층 자연스러워 보입니다.
-
4
CSS 복사
단일 그림자 규칙을 복사해 스타일시트에 붙여 넣습니다. 레이어 그림자를 만들려면 각 레이어를 따로 생성하고 규칙을 쉼표로 결합하세요.
box-shadow 구문
box-shadow: <x-offset> <y-offset> <blur> <spread> <colour> [inset];
- x-offset: 양수는 오른쪽, 음수는 왼쪽을 의미합니다.
- y-offset: 양수는 아래쪽, 음수는 위쪽을 의미합니다.
- blur: 0이면 또렷한 가장자리, 값이 클수록 더 부드러워집니다. 눈에 보이는 크기는 요소 바깥쪽으로 흐림 값의 약 1.5배 정도까지 퍼집니다.
- spread: 요소를 넘어 추가로 확장되는 크기입니다. 양수는 그림자를 키우고, 음수는 줄입니다(은은한 후광을 만들 때 유용합니다).
- colour: 모든 CSS 색상을 지원합니다.
rgba(0, 0, 0, 0.15)가 가장 기본이 되는 값입니다. - inset: 요소 안쪽으로 그림자를 뒤집어 주는 키워드입니다.
여러 겹의 그림자는 사실적으로 보입니다
이 생성기는 한 번에 하나의 그림자 규칙만 출력합니다. 레이어 그림자를 만들려면 각 레이어를 따로 생성한 다음 규칙을 쉼표로 결합하세요.
0 0 40px 그림자 하나만 쓰면 흐릿해 보입니다. 두 개의 그림자, 즉 요소에 가까운 작고 또렷한 그림자와 더 멀리 떨어진 크고 부드러운 그림자를 겹치면 실제 빛이 산란하는 방식을 흉내 낼 수 있습니다.
box-shadow:
0 1px 2px rgba(0, 0, 0, 0.08),
0 4px 12px rgba(0, 0, 0, 0.08);
첫 번째 줄은 밀착된 접지 그림자를, 두 번째 줄은 더 부드러운 주변 그림자를 만듭니다. 이 한 가지 패턴만으로 카드형 UI의 80%를 처리할 수 있습니다.
엘리베이션(높이) 시스템
머티리얼 디자인은 6단계의 엘리베이션(높이)을 사용하며, 각 단계마다 서로 다른 그림자 조합을 둡니다. 단순화하면 다음과 같습니다.
| 엘리베이션 | 그림자 |
|---|---|
| 1 (정지 상태) | 0 1px 3px rgba(0,0,0,.12), 0 1px 2px rgba(0,0,0,.24) |
| 2 | 0 3px 6px rgba(0,0,0,.16), 0 3px 6px rgba(0,0,0,.23) |
| 3 | 0 10px 20px rgba(0,0,0,.19), 0 6px 6px rgba(0,0,0,.23) |
| 4 (떠오름) | 0 14px 28px rgba(0,0,0,.25), 0 10px 10px rgba(0,0,0,.22) |
| 5 (부유) | 0 19px 38px rgba(0,0,0,.30), 0 15px 12px rgba(0,0,0,.22) |
엘리베이션 역할마다 하나씩 골라 일관되게 사용하세요.
컬러 그림자가 더 자연스럽게 보입니다
순수한 검은색 그림자는 인공적으로 보입니다. 실제 그림자는 그 아래 표면의 색조를 띠기 때문입니다. 다음과 같이 시도해 보세요.
box-shadow: 0 12px 24px rgba(40, 80, 120, 0.18);
순수한 검은색 대신 차가운 청회색을 사용했습니다. 따뜻한 배경에서는 더 따뜻한 색조를 쓰세요.
성능
박스 그림자는 다시 그릴 때마다 매번 페인팅됩니다. 많은 요소에 크고 무거운 그림자를 적용하면 스크롤이 느려질 수 있습니다. 완화 방법은 다음과 같습니다.
- 요소에
transform: translateZ(0)을 적용해 합성 레이어를 강제로 생성하세요. - 그림자가 clip-path를 따라가야 하는 경우에만 복잡한 그림자를
filter: drop-shadow()로 대체하세요(일반적으로 더 느립니다). - 자주 다시 렌더링되는 요소에서는 그림자를 제한하세요.
눌린 상태를 위한 inset
.button:active {
box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.12);
}
inset 그림자는 움푹 들어간 느낌을 흉내 내, 버튼이 표면에 눌려 들어간 것처럼 보이게 합니다. 아래쪽으로 살짝 내리는 transform: translateY(1px)와 함께 쓰면 손끝에 닿는 듯한 클릭감을 줄 수 있습니다.
자주 묻는 질문
대개 흐림이 너무 약하거나 확산(spread)이 너무 크기 때문입니다. 흐림이 없는 또렷한 가장자리의 그림자는 마치 요소가 하나 더 복제된 것처럼 보입니다. 흐림을 키우고(20~30px가 흔한 출발점입니다) 확산은 0이나 아주 작은 음수 값으로 유지하세요.
box-shadow는 border-radius를 포함한 요소의 보더 박스를 따라가므로, 둥근 카드에는 자동으로 매끄럽게 둥근 그림자가 생깁니다. clip-path로 만든 도형의 경우 box-shadow는 클립을 따라가지 않으니, 대신 filter: drop-shadow()를 사용하세요.
원하는 방향으로 그림자를 크게 오프셋하고, 음수 확산으로 반대쪽을 가립니다. 또는 두 개의 그림자를 사용해, 하나는 대상 면에 보이게 하고 다른 하나는 음수 확산으로 원치 않게 새어 나온 부분을 “지우는” 방법도 있습니다.
엄격한 제한은 없지만, 그림자가 하나 늘 때마다 페인팅 과정도 하나씩 늘어납니다. 실용적인 상한은 3~4개 레이어이며, 그보다 많아진다면 배경 이미지나 SVG 사용을 고려하는 편이 좋습니다.
관련 도구
FPS 카운터
requestAnimationFrame으로 브라우저 FPS를 측정하세요. 스무딩, 최소/최대 프레임레이트, 경고 임계값, 선택형 그래프를 제공합니다. 업로드나 API 없이 로컬에서 실행됩니다.
ASCII 표 참조
NUL, LF, DEL 같은 제어 문자를 포함해 모든 문자에 대한 10진수, 16진수, 8진수, 2진수, HTML 숫자 문자 참조를 담은 0부터 127까지의 전체 ASCII 표.
색상 혼합기
두 HEX 색상을 2-20개의 균등한 색상 견본으로 섞습니다. 양 끝 색상을 포함해 각 중간 색상을 대문자 HEX 코드로 확인하세요.
ASCII 이진수 변환기
ASCII 문자열을 이진수 표현으로 변환하세요. 각 문자는 8비트가 되고 공백으로 구분되어 프로토콜 추적이나 과제에 바로 붙여넣기 좋습니다.
색상 틴트 생성기
기준 색의 밝은 틴트를 생성합니다. 디자인 시스템 토큰, 배경, 호버 상태를 위한 3-20단계 스케일.
보색 찾기
어떤 입력에 대해서도 보색을 찾습니다. HSL 반대 색, 분할 보색 쌍, 그리고 접근성 있는 조합 제안을 반환합니다.
이 도구는 다른 언어로도 제공됩니다
- Generator cienia CSS (box-shadow) [PL]
- Générateur d'ombre de boîte CSS [FR]
- CSSボックスシャドウジェネレーター [JA]
- CSS box-shadow-generator [SV]
- CSS-Box-Schatten-Generator [DE]
- Generator Bayangan Kotak CSS [ID]
- Trình tạo box-shadow CSS [VI]
- مولد الظل لصندوق CSS [AR]
- Generador de Sombra de Caja CSS [ES]
- เครื่องสร้างเงากล่อง CSS [TH]
- CSS-box-shadow-generator [NL]
- Gerador de Sombra de Caixa CSS [PT]
- CSS Box Shadow Generator [EN]
- Generatore di Ombre CSS [IT]
- Генератор теней box-shadow для CSS [RU]
- CSS Box Shadow (Kutu Gölgesi) Oluşturucu [TR]
- CSS 盒子阴影生成器 [ZH]