CSS3를 사용한 이미지 효과, 스타일링을 모아봤습니다.
포토샵으로 처리하기보다 CSS3로 처리하는 편이 수정작업에도 편리하겠죠.
※ 편의상 모든 CSS에는 벤더 프리픽스를 기입하지 않았습니다.
※ 각 수치는 각자의 상황에 따라 맞추시길 바랍니다.
목차
- 그림자 효과
- 페이지 넘기는 효과
- 토이카메라 필터 효과
- 컬러 조절
- 회전
- 둥근 모서리 만들기
- 타원
- 동그라미 프레임
- 정삼각형 프레임
- 겹쳐보이는 이미지
- 테두리 뿌옇게 처리하기
- 페이드효과(그림자)
- 페이드효과(그라데이션)
- 반사효과
- New
- 사진첩에 끼운 것 같은 이미지
- 이미지는 그대로에 프레임만 기울이기
- 반투명 프레임
공통되는 html
<div class="effect"><img src="neko.jpg"></div>
01. 그림자 효과
![CSS3로 이미지에 효과주기-스타일링하기](http://nanati.me/wp-content/uploads/2016/04/cat53.jpg)
box-shadow를 이용해서 이미지에 그림자 효과를 줍니다.
css
.effect { display: inline-block; box-shadow: 0px 0px 20px -5px rgba(0, 0, 0, 0.8); }
02. 페이지 넘기는 효과
![CSS3로 이미지에 효과주기-스타일링하기](http://nanati.me/wp-content/uploads/2016/04/cat53.jpg)
이미지 자체를 넘길 수는 없기 때문에, after요소를 이용해 한쪽 코너에만 그림자 효과를 주고, transform으로 살짝 회전을 주어 페이지를 넘기는 효과를 낼 수 있습니다.
css
.effect img { display: inline-block; position: relative; z-index: 2; } .effect:after { position: absolute; content: ""; box-shadow: 0 15px 10px rgba(0,0,0, .5); /* 그림자효과 */ transform: rotate(3deg); /* 회전효과 */ right: 5px; left: auto; top: auto; bottom: 15px; z-index: -1; width: 50%; height: 20%; }
03. 토이카메라 필터 효과
![CSS3로 이미지에 효과주기-스타일링하기](http://nanati.me/wp-content/uploads/2016/04/cat53.jpg)
이미지 안쪽으로 그림자를 주기 위해, position요소를 이용해서 이미지 위로 그림자를 겹치도록 올려 놓을 수가 있습니다. 여기서는 after에 그림자 효과를 입히고 position을 이용하여 이미지 위로 그림자를 겹쳐주었습니다.
css
.effect { display: inline-block; position: relative; } .effect:after { /* 이미지 안쪽으로 그림자 효과 주기 */ position: absolute; display: block; content: ""; top: 0; left: 0; width: 100%; height: 100%; box-shadow: inset 0 0 50px rgba(0, 0, 0, 0.5), inset 0 0 100px rgba(0, 0, 0, 0.2); }
04. 컬러 조절
![CSS3로 이미지에 효과주기-스타일링하기](http://nanati.me/wp-content/uploads/2016/04/cat53.jpg)
after에 배경색을 rgba로 지정해서 반투명으로 설정, position을 이용하여 이미지 위로 핑크색을 입혔습니다.
css
.effect { display: inline-block; position: relative; } .effect:after { position: absolute; display: block; content: ""; top: 0; left: 0; width: 100%; height: 100%; box-shadow: inset 0 0 50px rgba(0, 0, 0, 0.5), inset 0 0 100px rgba(0, 0, 0, 0.2); background: rgba(0, 255, 0, 0.1); /* 이미지 위로 컬러를 입힘 */ }
05. 회전
![CSS3로 이미지에 효과주기-스타일링하기](http://nanati.me/wp-content/uploads/2016/04/cat53.jpg)
transform의 rotate를 이용하면 이미지를 회전시킬 수 있습니다. 살짝 기울이는 것만으로도 그럴듯한 분위기를 낼 수 있지요.
css
.effect { display: inline-block; transform: rotate(5deg); }
06. 둥근 모서리 만들기
![CSS3로 이미지에 효과주기-스타일링하기](http://nanati.me/wp-content/uploads/2016/04/cat53.jpg)
border-radius를 이용해서 이미지 모서리를 둥글게 처리할 수 있습니다. 포인트는 이미지 태그에 직접 border-radius를 설정해주는 것입니다.
css
.effect img { border-radius: 10px; }
07. 타원
![CSS3로 이미지에 효과주기-스타일링하기](http://nanati.me/wp-content/uploads/2016/04/cat53.jpg)
직사각형의 이미지의 모서리에 border-radius를 크게 주면 됩니다. 직사각형의 이미지는 타원이 되고, 정사각형의 이미지는 동그란 원이 됩니다. 직사각형의 이미지를 동그라미 원으로 표현하는 방법은 8번에서 알려드리겠습니다.
css
.effect img { border-radius: 50%; }
08. 동그라미 프레임
위에서도 말씀드렸지만, border-radius 설정만으로는 이미지의 사이즈에 따라서 예쁜 원을 표현하기가 어렵습니다. 여기서 이미지을 배경으로 지정하는 테크닉이 필요합니다. 이미지태그를 쓰지 않고, CSS에 background-image로 이미지를 설정합니다. div요소를 block화 해서 모서리를 둥글게 설정합니다.
html
<div class="frame" style="background: url(neko.jpg) center center no-repeat;"></div>
css
.effect { position: relative; display: inline-block; background: url(cat.jpg) center center no-repeat; border-radius: 50%; width: 250px; height: 250px; }
안쪽으로 그림자효과를 주면 또 다른 분위기를 낼 수 있습니다.
09. 정삼각형 프레임
![CSS3로 이미지에 효과주기-스타일링하기](http://nanati.me/wp-content/uploads/2016/04/cat53.jpg)
사용하는 일은 거의 없을지도 모르지만 삼각형 프레임도 만들 수 있습니다. 삼각형을 만드는 방법은 여러가지가 있습니다만, 여기서는 배경그라데이션을 이용해서 표현해보겠습니다.
그라데이션을 두 개 겹치는 것으로 각각 왼쪽상단, 오른쪽상단에 색을 칠해서 각도를 만들 수 있습니다. border를 이용하는 방법도 있습니다만, 여기서는 제일 간단한 방법으로 소개하도록 하겠습니다.
css
.effect { display: inline-block; position: relative; } .effect:after { position: absolute; display: block; content: ""; top: 0; left: 0; width: 100%; height: 100%; background-repeat: no-repeat; background-position: top left, top right; /* 삼각형을 만드는 부분 */ background: linear-gradient(-30deg, #fff 140px, rgba(0, 0, 0, 0) 100px), linear-gradient(210deg, #fff 140px, rgba(0, 0, 0, 0) 100px); }
10. 겹쳐보이는 이미지
![CSS3로 이미지에 효과주기-스타일링하기](http://nanati.me/wp-content/uploads/2016/04/cat53.jpg)
after요소를 transform를 사용하여 회전 시키는 것으로 이미지가 겹쳐보이는 식으로 만들 수 있습니다. after요소를 position:absolute 설정해서 회전시킵니다. 같은 방법으로 before요소에 한장 더 겹치게끔 표현할 수 있습니다.
css
.effect img { display: inline-block; position: relative; z-index: 2; } .effect:after { position: absolute; display: block; content: ""; top: 0; left: 0; width: 100%; height: 100%; box-shadow: 0 4px 10px rgba(0, 0, 0, 0.3); transform: rotate(3deg); /* 회전효과 */ background: #fff; }
11. 테두리 뿌옇게 처리하기
![CSS3로 이미지에 효과주기-스타일링하기](http://nanati.me/wp-content/uploads/2016/04/cat53.jpg)
안쪽으로 배경색과 같은 그림자를 주면 테두리를 뿌옇게 처리할 수 있습니다. 이 경우에도 after요소를 사용합니다. 그림자와 배경색을 같은 색으로 하는 부분에 주의합시다. 포인트는 뿌옇게 만들기 위해 그림자를 여러겹 겹치는 점입니다.
css
.effect { display: inline-block; position: relative; } .effect:after { position: absolute; display: block; content: ""; top: 0; left: 0; width: 100%; height: 100%; box-shadow: inset 0 0 20px #fff /* 배경과 같은 색 */, inset 0 0 20px #fff, inset 0 0 20px #fff, inset 0 0 20px #fff; }
12. 페이드효과(그림자)
![CSS3로 이미지에 효과주기-스타일링하기](http://nanati.me/wp-content/uploads/2016/04/cat53.jpg)
테두리를 뿌옇게 만드는 것을 응용해서 그림자의 위치를 바꾸는 것으로 이미지의 한쪽 부분에 페이드 효과를 줄 수 있습니다. 단, 이 방법은 수정이 불편하기 때문에 13번에서 소개하는 방법을 응용하는 것이 좋을 것 같습니다.
css
.effect { display: inline-block; position: relative; } .effect:after { position: absolute; display: block; content: ""; top: 0; left: 0; width: 100%; height: 100%; background: #fff; box-shadow: inset -60px 0 100px #fff; }
13. 페이드효과(그라데이션)
![CSS3로 이미지에 효과주기-스타일링하기](http://nanati.me/wp-content/uploads/2016/04/cat53.jpg)
위와 같은 페이드 효과를 배경 그라데이션을 이용해 만들 수 있습니다. 이 방법은 그라데이션을 상세하게 설정 가능하기 때문에 수정이 용이합니다.linear-gradient을 사용해 배경색을 입히는 것으로 페이드효과를 만들 수 있습니다. linear-gradient의 옵션이 다양하기 때문에 각도를 바꾸거나, 미묘한 페이드효과를 조절할 수 있는 것이 이 방법의 큰 장점입니다.
css
.effect { display: inline-block; position: relative; } .effect:after { position: absolute; display: block; content: ""; top: 0; left: 0; width: 100%; height: 100%; background: linear-gradient(left, rgba(255, 255, 255, 0) 40%, #fff 100%); }
예를들어 linear-gradient 대신에 원형의 그라데이션을 이용하면 아래와 같은 효과를 만들 수 있습니다.
![CSS3로 이미지에 효과주기-스타일링하기](http://nanati.me/wp-content/uploads/2016/04/cat53.jpg)
14. 반사효과
![CSS3로 이미지에 효과주기-스타일링하기](http://nanati.me/wp-content/uploads/2016/04/cat53.jpg)
이미지의 한쪽 코너에 빛이 비추는 듯한 연출을 할 수 있습니다. 이 효과도 위의 페이드 효과와 마찬가지로 그라데이션을 지정해서 만들 수 있습니다. after요소를 position: absolute를 이용해 이미지의 위로 겹쳐서 그라데이션의 수치를 조절하는 것으로 빛이 비추는 것처럼 표현할 수 있습니다.
css
.effect { display: inline-block; position: relative; padding: 6px; box-shadow: 0 2px 6px #999; } .effect:after { position: absolute; display: block; content: ""; top: 0; left: 0; width: 100%; height: 100%; background: linear-gradient( /* 여기서 빛을 표현 */ -120deg, rgba(255, 250, 250, 0.1) 0, rgba(255, 250, 250, 0.5) 70px, rgba(255, 250, 250, 0) 71px); }
15. New
![CSS3로 이미지에 효과주기-스타일링하기](http://nanati.me/wp-content/uploads/2016/04/cat53.jpg)
after요소를 응용하면 위와 같은 표현도 가능합니다. after요소를 position:absolute를 이용하여 회전시킵니다. 포인트는 overflow:hidden를 입력하여 불필요한 부분을 가려주는 점입니다. 또 리본을 이미지를 살짝 감싸고 있는 듯한 느낌을 주기 위해 padding:1px을 설정해 줍니다.
css
.effect { position: relative; display: inline-block; overflow: hidden; /* 불필요한 부분 가리기 */ padding: 1px; } .effect:after { content: ""; position: absolute; z-index: 1; width: 100px; height: auto; background: red; content: "New"; /* 보여주는 텍스트 */ text-align: center; color: #fff; font-family: 'Arial'; font-weight: bold; padding: 5px 10px; left: -30px; top: 3px; transform: rotate(-30deg); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3); }
16. 사진첩에 끼운 것 같은 이미지
![CSS3로 이미지에 효과주기-스타일링하기](http://nanati.me/wp-content/uploads/2016/04/cat53.jpg)
위의 New설정과 같은 방법을 이용해 사진첩에 끼워진 듯한 표현이 가능합니다. 더 잘 표현하기 위해 그림자를 이용해 조절하는 것이 포인트! after와 before요소를 30도 회전시켜 각각을 왼쪽 위, 오른쪽 아래에 배치합니다.
css
.effect { display: inline-block; position: relative; overflow: hidden; /* 불필요한 부분 가리기 */ padding: 6px; /* 6px정도 이미지 밖으로 표현 */ } .effect img { box-shadow: 0px 0px 8px rgba(0, 0, 0, 0.3); } .effect:before, .effect:after { content: ""; position: absolute; z-index: 1; width: 97px; height: 50px; background: #fff; /* 배경색과 같은 색 */ transform: rotate(-30deg); } /* 왼쪽 위 */ .effect:before { box-shadow: 0 10px 8px -12px rgba(0, 0, 0, 0.8); top: -24px; bottom: auto; right: auto; left: -26px; } /* 오른쪽 아래 */ .effect:after { box-shadow: 0 -10px 10px -10px rgba(0, 0, 0, 0.7); top: auto; bottom: -22px; right: -25px; left: auto; }
17. 이미지는 그대로에 프레임만 기울이기
![CSS3로 이미지에 효과주기-스타일링하기](http://nanati.me/wp-content/uploads/2016/04/cat10.jpg)
이미지를 회전시키는 것은 transform으로 가능하지만 사진까지 함께 회전시켜버리게 됩니다. 이미지 위 요소를 전체 회전 시킨 후 이미지만을 반대로 원위치 시키면 위와 같은 표현이 가능합니다.
css
.effect { position: relative; display: inline-block; width: 200px; height: 250px; border: 10px solid #fff; box-shadow: 0 0 4px #999; transform: rotate(20deg); /* 전체 회전 */ overflow: hidden; /* 불필요한 부분 가리기 */ } .effect img { margin-top: 0; margin-left: -90px; /* 포지션 조절 */ transform-origin: 0 0; transform: rotate(-20deg); /* 이미지만 원래 위치로 회전 */ }
18. 반투명 프레임
마지막으로 반투명 프레임을 만드는 방법입니다. 이미지의 주인공에게 포커스를 맞추고 싶을 때 사용할 수 있습니다. 이미지태그가 아닌 배경이미지를 사용합니다. border의 색을 반투명으로 설정하는 방법입니다.
css
.effect { background: url(cat.jpg) center center no-repeat; display: inline-block; width: 240px; height: 180px; border-top: 50px solid rgba(0, 0, 0, 0.3); border-left: 25px solid rgba(0, 0, 0, 0.3); border-bottom: 50px solid rgba(0, 0, 0, 0.3); border-right: 50px solid rgba(0, 0, 0, 0.3); box-shadow: 0 2px 8px #999; }