저는 CSS 전문가가 아니며 CSS와 HTML을 사용하여 호버링 할 때 회전하는 큐브를 만들기 위해 다른 튜토리얼 소스를 따랐습니다.
마우스를 올리면 큐브가 이동하고 회전합니다. 그러나 더 이상 활성화되지 않은 경우 큐브를 원래 위치로 되돌리고 싶습니다. 이것이 어떻게 달성 될 수 있습니까?
다음은 코드입니다.
HTML
.wrap {
-webkit-perspective: 800px;
perspective: 800px;
-webkit-perspective-origin: 50% 100px;
perspective-origin: 50% 100px;
float: left;
margin-right: 3.5px;
-webkit-transition: 1s ease-in-out;
-moz-transition: 1s ease-in-out;
-o-transition: 1s ease-in-out;
}
.cube {
position: relative;
width: 80px;
-webkit-transform-style: preserve-3d;
transform-style: preserve-3d;
margin: 0 auto;
margin-top: 30px;
-webkit-animation: spin 3s infinite linear;
animation: spin 3s infinite linear;
-webkit-animation-play-state: paused;
animation-play-state: paused;
}
.cube div {
position: absolute;
width: 50px;
height: 50px;
}
.back {
transform: translateZ(0px) rotateY(180deg);
background: #057e98;
opacity: 0.8;
}
.right {
transform: rotateY(-270deg) translateX(0px);
transform-origin: top right;
background: #16a8b8;
opacity: 0.8;
}
.left {
transform: rotateY(270deg) translateX(0px);
transform-origin: center left;
background: #c25e28;
opacity: 0.8;
}
.top {
transform: rotateX(-90deg) translateY(-50px);
-webkit-transform-origin: top center;
transform-origin: top center;
background: #c25e28;
opacity: 0.8;
}
.bottom {
transform: rotateX(90deg) translateY(0px);
transform-origin: bottom center;
background: blue;
opacity: 0.8;
}
.front {
transform: translateZ(50px);
background: #f47a2d;
opacity: 0.8;
}
@-webkit-keyframes spin {
from {
-webkit-transform: rotateY(0);
-webkit-transform-origin: 20% 50% 0;
}
to {
-webkit-transform: rotateY(360deg);
-webkit-transform-origin: 20% 50% 0;
}
}
.cube:hover {
-webkit-animation-play-state: running;
animation-play-state: running;
}
.wrap:hover {
-webkit-transform: translate(3em, 5em);
}
<div class="wrap">
<div class="cube text-center">
<div class="front">
</div>
<div class="back">
</div>
<div class="top">
</div>
<!--<div class="bottom">
</div>-->
<div class="left">
</div>
<div class="right">
</div>
</div>
</div>
<div class="wrap">
<div class="cube text-center">
<div class="front">
</div>
<div class="back">
</div>
<div class="top">
</div>
<!--<div class="bottom">
</div>-->
<div class="left">
</div>
<div class="right">
</div>
</div>
</div>
문제는 큐브가 회전을 멈출 때 현재 상태를 유지한다는 것입니다. 원래 위치와 상태로 되돌리고 싶습니다. 즉, '오른쪽'이 표시된 상태에서 회전이 멈춘 경우 '앞'이 표시된 상태로 원래 위치로 돌아 가야합니다.
다음과 같은 것이 필요하다고 생각합니다. 다음 CSS를 적용해야합니다.
animation-play-state: paused;
마우스 오버하지 않을 때 애니메이션을 일시 중지했기 때문에 애니메이션 이 중지됩니다.
.wrap {
-webkit-perspective: 800px;
perspective: 800px;
-webkit-perspective-origin: 50% 100px;
perspective-origin: 50% 100px;
float:left;
margin-right: 3.5px;
-webkit-transition: 1s ease-in-out;
-moz-transition: 1s ease-in-out;
-o-transition: 1s ease-in-out;
}
.cube {
position: relative;
width: 80px;
-webkit-transform-style: preserve-3d;
transform-style: preserve-3d;
margin: 0 auto;
margin-top: 30px;
}
.cube div {
position: absolute;
width: 50px;
height: 50px;
}
.back {
transform: translateZ(0px) rotateY(180deg);
background: #057e98;
opacity: 0.8;
}
.right {
transform: rotateY(-270deg) translateX(0px);
transform-origin: top right;
background: #16a8b8;
opacity: 0.8;
}
.left {
transform: rotateY(270deg) translateX(0px);
transform-origin: center left;
background: #c25e28;
opacity: 0.8;
}
.top {
transform: rotateX(-90deg) translateY(-50px);
-webkit-transform-origin: top center;
transform-origin: top center;
background: #c25e28;
opacity: 0.8;
}
.bottom {
transform: rotateX(90deg) translateY(0px);
transform-origin: bottom center;
background: blue;
opacity: 0.8;
}
.front {
transform: translateZ(50px);
background: #f47a2d;
opacity: 0.8;
}
@-webkit-keyframes spin {
from { -webkit-transform: rotateY(0); -webkit-transform-origin: 20% 50% 0; }
to { -webkit-transform: rotateY(360deg); -webkit-transform-origin: 20% 50% 0;}
}
@keyframes spin {
from { transform: rotateY(0); transform-origin: 20% 50% 0; }
to { transform: rotateY(360deg); transform-origin: 20% 50% 0;}
}
.cube:hover {
-webkit-animation: spin 3s infinite linear;
animation: spin 3s infinite linear;
-webkit-animation-play-state: running;
animation-play-state: running;
}
.wrap:hover{
-webkit-transform: translate(3em,5em);
transform: translate(3em,5em);
}
<div class="wrap">
<div class="cube text-center">
<div class="front">
</div>
<div class="back">
</div>
<div class="top">
</div>
<!--<div class="bottom">
</div>-->
<div class="left">
</div>
<div class="right">
</div>
</div>
</div>
<div class="wrap">
<div class="cube text-center">
<div class="front">
</div>
<div class="back">
</div>
<div class="top">
</div>
<!--<div class="bottom">
</div>-->
<div class="left">
</div>
<div class="right">
</div>
</div>
</div>
도움이 되었기를 바랍니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다