CSS 박스 그림자 생성기 — 레이어 그림자, 뉴모피즘, 텍스트 그림자
실시간 미리보기와 엘리베이션·뉴모피즘·글로 프리셋으로 레이어형 box-shadow와 text-shadow 효과를 디자인하고 CSS를 복사하세요.
box-shadow: 0 10px 30px -6px rgba(15, 23, 42, 0.18), 0 4px 10px -4px rgba(15, 23, 42, 0.1);
shadow-[0_10px_30px_-6px_rgba(15,23,42,0.18),0_4px_10px_-4px_rgba(15,23,42,0.1)]
전적으로 브라우저에서 실행됩니다. 입력한 내용은 전송되거나 저장되지 않습니다. 모든 무료 도구 보기.
문제를 발견하셨거나 개선할 점이 있나요? 모든 메시지를 읽고 빠르게 고칩니다.
이 무료 CSS 박스 그림자 생성기로 눈으로 보면서 그림자를 디자인하고 정확한 box-shadow나 text-shadow CSS를 복사하세요. 레이어를 필요한 만큼 쌓을 수 있고, 각 레이어마다 가로·세로 오프셋, 흐림, 확산, 색상, 불투명도, inset을 따로 설정할 수 있습니다. 미리보기 카드의 배경, 색상, 모서리 반경을 디자인에 맞게 바꿔 가며 확인하세요.
사실적인 그림자는 레이어 하나로 끝나는 경우가 거의 없습니다. 가깝고 선명한 그림자와 크고 옅은 그림자를 함께 쓰면 물체가 페이지에서 떠 있는 것처럼 보이며, Material Design의 엘리베이션 단계가 바로 이 방식입니다. 뉴모피즘에는 배경과 같은 색의 카드에 서로 반대 방향인 그림자 두 개가 필요합니다. 프리셋이 이런 패턴을 다루며, 아래 설명에서 box-shadow 문법, 레이어를 쌓으면 더 좋아 보이는 이유, 그림자가 렌더링 성능에 주는 부담을 다룹니다.
사용 방법
- 박스 그림자 또는 텍스트 그림자를 고르세요.
- 프리셋에서 시작하거나, 선택한 레이어를 슬라이더로 조정하세요. 오프셋, 흐림, 확산, 색상, 불투명도, inset을 바꿀 수 있습니다.
- + 레이어 추가로 레이어를 더하고(선택한 레이어를 복사함), 목록에서 레이어를 선택해 편집하고, 화살표로 순서를 바꾸세요. 첫 번째 레이어가 맨 위에 그려집니다.
- 미리보기를 디자인에 맞추세요. 페이지 배경, 카드 색상, 모서리 반경을 설정할 수 있습니다.
- CSS나 Tailwind 임의 값 클래스를 복사하세요.
자주 묻는 질문
box-shadow 값은 각각 무슨 뜻인가요?
box-shadow: inset? x-오프셋 y-오프셋 흐림 확산 색상. x 오프셋은 그림자를 오른쪽으로(음수면 왼쪽으로), y 오프셋은 아래로(음수면 위로) 옮깁니다. 흐림은 가장자리가 얼마나 부드러운지이며 0이면 날카로운 가장자리가 됩니다. 확산은 흐리기 전에 그림자를 키웁니다(음수면 줄어들며, 큰 흐림이 옆으로 비치지 않게 하는 방법입니다). inset은 그림자를 요소 바깥이 아니라 안쪽에 그립니다. 여러 그림자는 쉼표로 구분하며, 첫 번째가 맨 위에 그려집니다.
부드럽고 사실적인 그림자는 어떻게 만드나요?
진한 그림자 하나보다 불투명도가 낮은 그림자 두 개 이상을 겹치세요. 접촉면에는 작고 촘촘한 그림자(약 10% 검정의 0 1px 2px), 주변광에는 더 크고 부드러운 그림자(8~12%의 0 8px 24px)를 씁니다. 큰 그림자에는 약간 음수인 확산을 줘서 요소 아래에 머물게 하세요. 순수한 검정 대신 배경색을 어둡게 한 색으로 그림자에 색조를 주면 색이 있는 페이지에서도 더 자연스러워 보입니다.
뉴모피즘 효과는 어떻게 만드나요?
요소에 부모와 같은 배경색을 주고 그림자 두 개를 추가하세요. 오른쪽 아래로 이동한 어두운 그림자와 왼쪽 위로 이동한 밝은(보통 흰색) 그림자입니다. 예를 들어 #e0e5ec 위에 9px 9px 16px rgba(163,177,198,0.6), -9px -9px 16px rgba(255,255,255,0.5)를 씁니다. 눌린 상태는 inset으로 만드세요. 컨트롤에 쓸 때는 주의하세요. 뉴모피즘 버튼은 배경과의 대비가 매우 낮아서, 테두리나 더 강한 외곽선을 추가하지 않으면 UI 구성 요소에 대한 WCAG 3:1 요건을 대개 충족하지 못합니다.
box-shadow와 filter: drop-shadow()의 차이는 무엇인가요?
box-shadow는 border-radius를 포함한 요소의 사각형 박스를 따르고 확산과 inset을 지원합니다. filter: drop-shadow()는 보이는 픽셀을 따르므로 투명 PNG, SVG 아이콘, 잘린 도형의 윤곽을 따라가지만, 확산과 inset이 없고 함수 하나에 그림자 하나만 받습니다. 카드와 버튼에는 box-shadow를, 불규칙한 이미지와 아이콘에는 drop-shadow를 쓰세요.
text-shadow에도 확산이나 inset이 있나요?
아니요. text-shadow는 x 오프셋, y 오프셋, 흐림, 색상만 받습니다. 외곽선을 흉내 내려면 각 방향으로 1px씩 이동한 날카로운 그림자를 네 개 이상 겹치거나(외곽선 프리셋), 이제 널리 지원되는 -webkit-text-stroke를 쓰세요. 부드럽고 불투명도가 낮은 텍스트 그림자는 사진 위 흰 글자의 가독성을 높일 수 있지만, WCAG 대비 계산에는 포함되지 않습니다.
박스 그림자가 성능을 떨어뜨리나요?
정적인 그림자는 부담이 적습니다. 흐림 반경이 큰 그림자는 매 프레임 다시 그려질 때 비싸집니다. 예를 들어 많은 카드에서 호버 시 box-shadow를 애니메이션하는 경우입니다. 표준적인 요령은 그림자를 가상 요소에 넣고 대신 그 불투명도를 애니메이션하는 것입니다. 그러면 브라우저가 흐림을 다시 그리지 않고 GPU에서 합성할 수 있습니다.
엘리베이션: 일관된 그림자 단계
디자인 시스템은 엘리베이션 단계를 몇 개만 정의하고 그것만 써서, 요소가 '얼마나 높이' 떠 있는지가 의미를 갖게 합니다. 카드는 1단계, 드롭다운은 2~3단계, 대화상자는 4~5단계입니다. 여기의 엘리베이션 프리셋도 이 패턴을 따라, 촘촘한 그림자와 넓은 그림자를 짝지어 높이에 따라 함께 커집니다.
• 1단계, 평소 상태의 카드와 목록 항목: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24).
• 2단계, 올라온 카드와 호버한 항목: 0 3px 6px rgba(0,0,0,0.15), 0 2px 4px rgba(0,0,0,0.12).
• 3단계, 드롭다운과 팝오버: 0 10px 20px rgba(0,0,0,0.15), 0 3px 6px rgba(0,0,0,0.1).
• 4·5단계, 모달과 대화상자: 더 큰 오프셋과 흐림, 그래도 불투명도는 20% 미만.
값을 컴포넌트에 붙여 넣지 말고 CSS 사용자 정의 속성(--shadow-1~--shadow-5)이나 Tailwind 테마에 단계로 저장하세요. 그래야 단계를 한곳에서 조정할 수 있습니다.
다크 모드의 그림자
거의 검은 배경 위의 검은 그림자는 보이지 않으므로, 어두운 인터페이스는 엘리베이션을 다르게 표현합니다. 높은 표면일수록 배경색이 조금 더 밝아지고, 그림자를 유지한다면 더 크고 진해집니다. 은은한 1px 밝은 테두리나 내부 하이라이트(inset 0 1px 0 rgba(255,255,255,0.06))가 어떤 바깥 그림자보다 잘 보이는 경우가 많습니다. 글로우 프리셋 같은 글로우 효과는 빛을 빼는 대신 더하기 때문에 어두운 배경에서 효과적입니다. 모든 카드가 아니라 포커스 상태와 강조에만 쓰세요.
관련 무료 도구
- CSS 그라디언트 생성기 — 드래그할 수 있는 색상 지점, 각도 다이얼, 프리셋으로 선형·원형·원뿔형 그라디언트를 만들고 CSS나 Tailwind 클래스를 복사하세요.
- 색상 팔레트 생성기 — 스페이스바를 눌러 새 팔레트를 만들고, 마음에 드는 색은 잠그고, 색 조합을 고르거나 사진에서 팔레트를 추출하세요. CSS, Tailwind, SCSS, JSON, PNG로 내보낼 수 있습니다.
- 색상 대비 검사기 — 텍스트와 배경 색상을 WCAG 2.x AA·AAA 기준으로 검사하고, APCA Lc 값을 확인하고, 통과하는 가장 가까운 색상을 찾아보세요.
- 색상 선택기·변환기 — 화면 어디서든 색상을 추출하거나 HEX, RGB, HSL 간에 즉시 변환하세요.