html·css 메모
[CSS] Card flip
그나쓰
2022. 12. 12. 00:02
버튼 클릭시 카드가 뒤집히는 애니메이션 구현하기 ~0~
Static Template
v3sz7n.csb.app
- 처음엔 검정색 카드가 보이고
- 버튼 클릭시 검정색카드가 뒤집히면서 코랄색 뒷면이 보인다.
- 버튼을 다시 클릭시 코랄색 뒷면이 뒤집히면서 하늘색의 앞면이 보인다
참고
https://codepen.io/samerpik/pen/NWzgqx
3D Flip Card Effect
3D flip cards implemented with CSS3...
codepen.io
js/jquery는 class 토글/추가 하는 정도로만 사용하고
나머지는 다 CSS로!!
//html
<div class="container">
<button type="button">button</button>
<div class="card">
<div class="card_front">
<div class="card_front_default">card</div> //검정색 기본 카드
<div class="card_cont">new card 2</div> //한 번 더 뒤집었을때 보여질 카드
</div>
<div class="card_back">
<div class="card_cont">new card 1</div> //뒤집었을때 보여질 카드
</div>
</div>
</div>
//js
$("button").click(function () {
$(".card").toggleClass("flipped");
setInterval(function () {
$(".card_front_default").addClass("hide");
}, 300); //카드 뒤집힘 3초후 맨처음 보여졌던 검정색 카드는 숨겨버림
});
대망의 CSS 뚜둔
.container {
-webkit-perspective: 1000px;
-moz-perspective: 1000px;
-o-perspective: 1000px;
perspective: 1000px;
//원근값
}
.card {
width: 200px;
height: 300px;
position: relative;
/*transition effects */
-webkit-transition: -webkit-transform 0.6s;
-moz-transition: -moz-transform 0.6s;
-o-transition: -o-transform 0.6s;
transition: transform 0.6s;
-webkit-transform-style: preserve-3d;
-moz-transform-style: preserve-3d;
-o-transform-style: preserve-3d;
transform-style: preserve-3d;
//3d로 변형시킴
}
.card.flipped {
-webkit-transform: rotateY(180deg);
-moz-transform: rotateY(180deg);
-o-transform: rotateY(180deg);
transform: rotateY(180deg);
//flipped 클래스가 붙으면 180도 뒤집어버림
}
.card > div {
width: 100%;
height: 100%;
position: absolute;
-webkit-backface-visibility: hidden;
-moz-backface-visibility: hidden;
-o-backface-visibility: hidden;
backface-visibility: hidden;
//뒤집힐때의 뒷면 안보이게 함
}
.card_back {
-webkit-transform: rotateY(180deg);
-moz-transform: rotateY(180deg);
-o-transform: rotateY(180deg);
transform: rotateY(180deg);
//뒤집힌 상태가 기본 -> flipped가 붙으면 뒤집히면서 rotateY(0)상태로
}
.card > div > div {
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
}
.card_front_default {
background: #000;
color: #fff;
position: absolute;
left: 0;
top: 0;
z-index: 1;
}
.card_front_default.hide {
display: none;
}
.card_front .card_cont {
background: skyblue;
}
.card_back .card_cont {
background: coral;
}
button {
margin-bottom: 10px;
}
CSS로 하니 너무 쉽게 표현 가능 !
까도 까도 계속 나오는 CSS의 매력