
엘리먼트들에게 그림자를 만들 수 있는 속성이 있는데, box-shadow속성이다.
2차원인 화면에 조금 더 입체감을 집어넣어서 표현할 수 있는 기능이다.
selector{
box-shadow: (offset-x) (offset-y)
}
를 기본 형식으로 하며
여러가지 옵션들을 추가할 수 있다.
그리고 box-shadow는 두 개이상 사용이 가능하고 (,)로 구분하여 사용한다. 순서대로 앞에서 뒤로 적용하고 첫 번째 그림자가 맨 위에 오게된다. 두 개 이상의 그림자를 적용하여 조금 더 깊이감있고 다채로운 그림자를 만들 수 있다.
이번에는 transition과 hover까지 사용하여 아래처럼 카드들을 선택하는 듯한 효과를 구현해보자.
<div class="cards">
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
body {
background-color: #e2e1e0;
/*배경색을 하얀색과 약간 다른 색으로 해주어 카드를 구분해준다.*/
text-align: center;
/*카드들(div태그)을 가운데 정렬해준다*/
}
.cards > div {
width:300px;
height:300px;
background-color:#fff;
display:inline-block;
margin:1rem;
box-shadow: 0 1px 3px rgba(0,0,0,0.15), 0 1px 3px rgba(0,0,0,0.3);
/*불투명도가 다른 두 그림자를 만들어 겹친다.*/
transition: box-shadow 0.3s;
/*box-shadow속성에 재생시간을 부여한다.*/
}
.cards > div:hover {
box-shadow: 0 20px 38px rgba(0,0,0,.3), 0 10px 10px rgba(0,0,0,0.3);
/*위치와 흐림도가 다른 두 그림자를 생성한다*/
/*hover시에 그림자가 나타나도록 한다.*/
}
box-shadow와 유사하지만 text에 그림자를 넣을 수 있는 text-shadow속성이다.
selector{
text-shadow: (offset-x) (offset-y)
}
를 기본 형식으로 하고 box-shadow와 마찬가지로
아래와 같이 transition과 hover를 이용해서 마우스를 가져다대면 그림자의 위치와 색이 바뀌도록 구현해보자.
<div>
안녕하세요.
</div>
body {
margin:0;
display:flex;
align-items:center;
justify-content:center;
/*text(div태그)를 정가운데에 오게한다.*/
min-height:100vh;
/*text를 정가운데로 오는 과정에서 align-items:center적용을 위해 body의
높이를 웹 전체 높이로 만들어준다.*/
}
body > div {
font-weight:bold;
letter-spacing:-0.3rem;
font-size:3rem;
/*text꾸미기*/
text-shadow: -10rem -3rem 10px gold, 10rem -3rem 10px red;
/*첫번째 그림자는 왼쪽 위 금색 그림자이고 두번째는 오른쪽 위 빨간색 그림자이다.*/
transition:text-shadow 1s;
/*text-shadow에 재생시간을 부여한다.*/
}
body > div:hover {
text-shadow: 10rem 3rem 0 blue, -10rem 3rem 0 green;
/*:hover시에 왼쪽위 금색 그림자, 오른쪽 위 빨간색 그림자가 왼쪽 아래 초록색 그림자와
오른쪽 아래 파란색 그림자로 바뀌도록 한다.*/
}