2022. 8. 28. 13:01ㆍHTML,CSS
이번 포스트에서는 이미지 특정 부분이 반사된 그림자 효과를 만들어 보도록 하겠습니다.
필자는 원래 box-shadow 속성을 사용해 그림자를 줬지만 이번 홈페이지 리뉴얼 작업으로 인해 좀 더 사실적인 그림자를 구현하기 위해 해당 방법을 사용하게 되었습니다.
언뜻 보면 티가 안 날 수도 있지만 위와 같이 캐러셀 슬라이드 같은 곳에 적절히 적용해주면 좀 더 입체적이고 현실적인 그림자 효과를 낼 수 있습니다.
HTML
마크업은 그림자 효과를 줄 이미지 태그를 두 개 넣어주시거나 div태그에 background 속성으로 이미지를 불러오시면 됩니다. 본 포스트에서는 img 클래스를 가진 div와 해당 div의 ::after 가상 요소에 background 속성을 사용해보도록 하겠습니다.
<div class="container">
<div class="img"/>
</div>
CSS
해당 효과를 위해 box-reflect 속성을 사용할수도 있겠지만, 파이어폭스 등 일부 브라우저에서 제대로 동작하지 않기 때문에 주요 브라우저에서 지원하고 있는 filter의 blur 속성을 사용해보도록 하겠습니다. 우선 똑같은 이미지 두 개를 겹쳐놓은 뒤, 뒤에 있는 이미지를 blur로 흐리게 하고 위치와 크기를 세부 조절하여 그림자 효과를 주는 방식입니다.
* {
box-sizing: border-box;
margin: 0;
}
.container {
width: 300px;
height: 300px;
position: relative;
.img {
width: 100%;
height: 100%;
background: url("https://beeimg.com/images/u55763270542.jpeg")
no-repeat center / cover;
/* 그림자 처리 */
&:after {
content: "";
position: absolute;
background: url("https://beeimg.com/images/u55763270542.jpeg")
no-repeat center / cover;
z-index: -1;
width: 100%;
height: 100%;
top: 20px; /* 그림자 노출 정도 */
transform: scale(0.95); /* 사이즈 조절 */
filter: blur(10px); /* 그림자의 흐릿함 정도 */
}
}
}
그림자가 위치에 어느정도 노출될 것인지는 포지션 값 (top, left, right, bottom)과 크기 transform의 scale값을 조절해주시면 됩니다.
마지막으로 그림자의 흐릿함 정도는 조절하기 위해서는 blur의 radius값 (현재 10px)를 조절하면서 현실적인 그림자 효과를 만들어보시길 바랍니다.
'HTML,CSS' 카테고리의 다른 글
SASS(SCSS) 반복적인 CSS는 그만 - SASS 한방에 끝내기 (변수, 중첩, 믹스인) (1) | 2023.08.10 |
---|---|
[HTML/CSS] 나는 HTML 과 CSS를 제대로 작성하고 있는가? (1) | 2022.07.07 |
[CSS] GRID 레이아웃 기본편 - 이 정도는 알아두자 (0) | 2022.06.12 |
[CSS] border에 그라데이션 넣기 (0) | 2022.03.18 |
[접근성] 배경이미지에 대체텍스트 - IR (Image Replacement) 기법 (0) | 2022.02.26 |