box-shadow
속성의 이해
box-shadow
속성은
요소 박스에 그림자 효과를 적용하는 속성입니다.
- 이 속성의 특징 및 구현 방법,
- 특히 여러 개를 사용하는 방법에 대해 다루겠습니다.
- 그리고, 다양한 예제를 통해
box-shadow
를 효과적으로 활용하는 방법을 살펴보겠습니다.
텍스트 문자에 그림자 효과를 적용하려면 text-shadow
속성을 사용하세요.
box-shadow
속성의 형식은 다음과 같습니다.
구문
값
none |
초깃값임.
그림자 효과가 없습니다. |
---|---|
<color> |
옵션.
그림자 색상 값입니다. 초깃값은 currentcolor (현재 글자색)입니다.
이 값은 <offset-x> , <offset-y> , <blur-radius> , <spread-radius> 사이에 올 수 없습니다. |
<offset-x> <offset-y> |
필수.
이 길이 값들은 요소 박스로부터 그림자의 거리를 지정합니다.
<offset-x> 과 <offset-y> 는 띄어 쓰기로 구분하며, 이 사이에는 <color> , <blur-radius> , <spread-radius> , <inset> 가 올 수 없습니다. 이 두 길이 값에는 % 단위의 길이 값을 사용할 수 없습니다. |
<blur-radius> |
옵션.
흐림 효과를 지정합니다. 크기의 기준은 흐림 효과를 원의 반지름으로 측정하며, 값이 높을수록 흐림 효과가 커집니다. 즉, 그림자가 더 넓어지고 가벼워 집니다. 음수 값이나 % 단위의 길이 값을 사용할 수 없습니다.
초깃값은 0 입니다.
이 값은 반드시 <offset-y> 바로 뒤에서 지정해야 합니다. |
<spread-radius> |
옵션.
그림자 확대와 축소를 지정합니다. 양수 값은 그림자를 확장하고 더 크게 만들고, 음수 값은 그림자를 축소합니다. 초깃값은 0 입니다.
이 값은 반드시 <blur-radius> 바로 뒤에서 지정해야 합니다.
box-shadow 의 <spread-radius> 값 활용 팁을 확인해 보세요! |
<inset> |
옵션.
그림자를 박스 외부 그림자에서 박스 내부 그림자로 변경합니다. 이 값이 지정되지 않았을 경우 박스 외부 그림자를 구현합니다. 이 값은 <offset-x> , <offset-y> , <blur-radius> , <spread-radius> 사이에 올 수 없습니다. |
형식 정의
초깃값 | none |
---|---|
길이 값에 퍼센트(% ) 사용 |
해당사항 없음 |
적용 요소 | 모든 요소 |
상속 | 아니오 |
애니메이션 | <inset> 을 제외한
<offset-x> , <offset-y> , <blur-radius> , <spread-radius> , <color> |
box-shadow
속성의 특징
box-shadow
속성은 다음과 같은 특징이 있습니다.
text-shadow
와는 달리 그림자 모양이 잘립니다.text-shadow
와 마찬가지로 레이아웃에 영향을 주지 않습니다.border-radius
의 영향을 받습니다.
이 세 가지 특징에 대해 자세히 살펴보겠습니다.
text-shadow
와는 달리 그림자 모양이 잘립니다.
text-shadow
는 텍스트의 그림자 모양이 잘리지 않지만, box-shadow
는 요소 박스의 모양으로 그림자가 잘립니다.
다음의 구현 예제으로 살펴 보겠습니다.
텍스트
위 구현 예제를 보면 text-shadow
는 그림자 모양으로 잘리지 않으며, 텍스트가 투명하거나 부분적으로 투명한 경우 비쳐 보이는 것을 볼 수 있습니다.
하지만, 다음의 구현 예제를 보면 박스를 투명으로 지정하여 비쳐 보인 box-shadow
의 그림자 모양이 박스의 모양으로 잘려 있는 것을 알 수 있습니다.
text-shadow
와 마찬가지로 레이아웃에 영향을 주지 않습니다.
text-shadow
나 box-shadow
는 그림자가 커서 주변 요소에 닿거나 넘치더라도 레이아웃에 영향을 주지 않습니다. 이는 오버플로(overflow, 경계를 넘어섬)하더라도 스크롤에 영향을 주지 않습니다.
텍스트 1
텍스트 2
위 구현 예제를 보면 .text-2
의 text-shadow
가 위에 있는 .text-1
를 넘처서 구현되었지만 .text-1
이나 .text-2
가 밀리거나 벌어지는 등의 현상이 발생하지 않습니다. text-shadow
는 주변의 레이아웃에 영향을 주지 않습니다.
아래의 구현 예제에서도 box-shadow
가 text-shadow
와 마찬가지로 주변의 레이아웃에 영향을 주지 않는 것을 보여줍니다.
border-radius
의 영향을 받습니다.
box-shadow
는 해당 요소 박스에 border-radius
의 영향을 받아 둥글게 클리핑됩니다. 그림자의 모양은 둥글게 잘린 요소의 경계선을 따르게 됩니다.
위 구현된 예제를 보면 요소 박스에 border-radius: 20px;
로 지정하여 요소 박스 각각의 코너에 라운드 효과를 20px
씩 주었습니다. 이 때 각각의 코너에 box-shadow
로 지정한 그림자 효과에도 라운드 효과가 적용되는 것을 볼 수 있습니다. 이것은 inset
으로 그림자 효과를 박스 내부 그림자로 지정해도 동일하게 적용됩니다.
box-shadow
의 <spread-radius>
값 활용 팁
box-shadow
에는 text-shadow
에 없는 <spread-radius>
값이 옵션으로 있어서 그림자를 확대하거나 축소할 수 있습니다.
<spread-radius>
값이 양수이면 그림자를 확장하고 더 크게 만들고, 음수 값은 그림자를 축소합니다. 그렇다면 <spread-radius>
값은 어디에 활용할까?
언뜻 보기에는 별 활용 가치가 없어 보이지만 이 값을 음수 값으로 적용해서 그림자를 축소하면 심미적으로 그림자 스타일을 더 좋게 꾸밀 수 있습니다.
다음의 활용 예제로 살펴 보겠습니다.
위 예제는 <spread-radius>
값을 음수 값으로 지정해서 심미적으로 그림자 스타일을 더 좋게 꾸미는 대표적인 사례입니다.
box-shadow
로 여러 개의 그림자 효과 주기
box-shadow
속성으로 여러 개의 그림자 효과를 주려면 값을 콤마(,
)로 구분해서 추가할 수 있습니다.
그림자 효과는 순서대로 앞에서 뒤로 적용되며, 첫 번째 그림자가 맨 위에 옵니다.
위 구현 예제를 보면 그림자 효과가 순서대로 red, green, blue로 앞에서 뒤로 적용되며, 첫 번째 그림자인 red가 맨 위에 옵니다.
브라우저 호환성
속성 |
데스크탑 Chrome
|
데스크탑데스크탑 Edge
|
데스크탑 Firefox
|
Safari
|
---|---|---|---|---|
box-shadow
|
10 | 12 | 4 | 5.1 |
명세서
명세서 사양 | |
---|---|
box-shadow
|
CSS Backgrounds and Borders Module Level 3 #box-shadow |