.reserve-store.medal {
width: 334px;
height: 334px;
perspective: 600px;
/* 부모의 자식 요소가 3차원의 애니메이션 효과를 가질 때,
600px의 거리에서 보는 원근감을 줌 */
}
.reserve-store.medal.front,
.reserve-store.medal.back {
position: absolute;
/* 뒷면 카드가 아래에서 위로 올라감, 두 개 겹치게 만듬 */width: 334px;
height: 334px;
backface-visibility: hidden;
/* 카드의 뒷면을 보이지 않게 처리 */transition: 1s;
/* 전환효과 */
}
.reserve-store.medal.front {
transform: rotateY(0deg);
}
.reserve-store.medal:hover.front {
transform: rotateY(180deg);
}
.reserve-store.medal.back {
transform: rotateY(-180deg);
}
.reserve-store.medal:hover.back {
transform: rotateY(0deg);
}
기본적인 설명은 코드 안에 주석처리로 했다.
+ 추가 설명
뒤집어진 뒷면: transform: rotateY(-180deg);
(y축을 중심으로 -180도 회전)
마우스로 클릭해서 뒤집어지기 전에는 이 뒷면이 보이면 안됨. 뒷면 보이지 않게 처리
: backface-visibility: hidden;
마우스를 올렸을 때(hover) 각각 y축을 중심으로 앞면(front)는 180도 회전 (뒷면),
뒷면(back)은 0도로 회전해서 제자리로 돌아오면서
뒷면은 보이지 않도록 처리를 했기 때문에 (backface-visibility: hidden;)
앞면은 안보이고, 뒷면만 보이게 된다.
이 과정이 자연스럽게 보이기 위해서 전환효과(transition: 1s;) 를 추가하고,
입체감을 살리기 위해서 부모요소에 perspective: 600px; 을 추가한다.
perspective: 600px
이 부분이 이해가 잘 안되서 추가로 검색해보니,
의미가 600px 만큼 떨어진 곳(즉, z축을 따라 600px)에 관찰자가 있다는 것을 근거로 하여 3D 환경을 구성하게 되는 것이라고 한다. 즉, 원근감을 만드는 요소라고 한다 :)