💡 3D transform에 대해서 공부하기
preserve-3d
: 하위요소에 3D속성을 그대로 전달flat
으로 3D속성을 하위요소에게 전달하지 않도록 처리perspective-origin: x y;
perspective-origin: 50% 50%;
backface-visibility: visible;
, backface-visibility: hidden;
-> 카드 뒤집기<div id="pre">
<p class="test">원근감</p>
</div>
* {padding: 0; margin: 0;}
/* pre */
#pre {
width: 500px;
height: 500px;
background-color: #5eaa54;
margin: 50px;
float: left;
perspective: 500px; /* 3D 공간에서 요소와의 거리감을 지정 - 속성값이 작을수록 가깝고 클수록 멀게보임 */
/* perspective-origin: 100% 100%; */
/* 원근감에 대한 중심축변화 x y(50% 50%) */
}
#pre .test {
width: 500px;
height: 500px;
background-color: #e6cba7;
text-align: center;
line-height: 500px;
transition: all 0.5s;
}
#pre:hover .test {
transform: rotateX(50deg);
}
perspective: 250px;
으로 바꿨을 때perspective: 500px;
, perspective-origin: 90% 50%;
적용했을 때<div id="back">
<p class="test">요소의 뒷면 표기유무</p>
</div>
/* back */
#back {
width: 500px;
height: 500px;
background-color: #5eaa54;
margin: 50px;
float: left;
}
#back .test {
width: 500px;
height: 500px;
background-color: #e6cba7;
text-align: center;
line-height: 500px;
transition: all 0.5s;
backface-visibility: visible; /* 회전시 뒷면 표기유무 - 뒷면표시 */
}
#back:hover .test {
transform: rotateY(180deg);
}
/* back */
#back {
width: 500px;
height: 500px;
background-color: #5eaa54;
margin: 50px;
float: left;
}
#back .test {
width: 500px;
height: 500px;
background-color: #e6cba7;
text-align: center;
line-height: 500px;
transition: all 0.5s;
backface-visibility: hidden; /* 회전시 뒷면 표기유무 - 뒷면제거 */
}
#back:hover .test {
transform: rotateY(180deg);
}
<div class="container">
<img class="front" src="images/EX1.jpg" alt="">
<img class="back" src="images/EX2.jpg" alt="">
</div>
* {padding: 0; margin: 0;}
.container {
width: 500px;
height: 500px;
margin: 50px auto;
position: relative;
}
.front {
width: 500px;
height: 500px;
/* 카드의 뒷면을 안보이게 처리 - 카드가 뒤집히면 뒷면이 안보임 */
backface-visibility: hidden;
transition: 1s;
position: absolute;
transform: rotateY(0deg);
z-index: 1;
}
.back {
width: 500px;
height: 500px;
transition: 1s;
position: absolute;
transform: rotateY(-180deg);
}
.container:hover .front{
transform: rotateY(180deg);
}
.container:hover .back {
transform: rotateY(0deg);
}
div.container
를 hover
해줘야한다..front
에 backface-visibility: hidden;
해줘야지 뒷면이 안보인다.