코드 JSFiddle에서 :총알 시간 CSS 애니메이션 침체
http://jsfiddle.net/wardrobe/6UVDD/
내가 마우스 오버에 크롤에 CSS 애니메이션이 원자의 애니메이션 속도를 늦추기 위해 jQuery를 사용하지만, 일부를 사용하여 그렇게 할 종류의 완화. jQuery를 사용하여 재생 상태를 쉽게 일시 중지하도록 설정할 수 있지만 크롤링 속도를 늦추려면 더 어려워 보입니다.
HTML
<div id="atom">
<div id="cloud">
<div class="orbit">
<div class="path">
<div class="electron"></div>
</div>
</div>
<div class="orbit">
<div class="path">
<div class="electron"></div>
</div>
</div>
<div class="orbit">
<div class="path">
<div class="electron"></div>
</div>
</div>
<div class="orbit">
<div class="path">
<div class="electron"></div>
</div>
</div>
<div id="nucleus"></div>
</div>
</div>
CSS :
#atom { position: absolute; top: 50%; left: 50%; width:300px; margin-left: -170px; margin-top: -146px; transition: all 1.5s; }
#cloud { width:300px; height:300px; -webkit-perspective: 1000; position:relative; -webkit-animation-play-state:paused;}
#nucleus { position:absolute; top:50%; left:50%; margin: -10px 0 0 -10px; width:25px; height:25px; border-radius:25px; -webkit-border-radius:25px; -moz-border-radius:25px; background: #272727;}
.orbit { position:absolute; top:0; left:0; width:300px; height:300px; border-radius:300px; -webkit-border-radius:300px; -moz-border-radius:300px; border:5px solid #ccc; -webkit-transform-style: preserve-3d; -webkit-transform: rotateX(80deg) rotateY(20deg);}
#cloud .orbit:nth-child(2) {-webkit-transform: rotateX(80deg) rotateY(70deg)}
#cloud .orbit:nth-child(3) {-webkit-transform: rotateX(80deg) rotateY(-20deg)}
#cloud .orbit:nth-child(4) {-webkit-transform: rotateX(80deg) rotateY(-50deg)}
#cloud .orbit:nth-child(2) .path, #cloud .orbit:nth-child(2) .electron {-webkit-animation-delay: -1.0s}
#cloud .orbit:nth-child(3) .path, #cloud .orbit:nth-child(3) .electron {-webkit-animation-delay: -1.5s}
#cloud .orbit:nth-child(4) .path, #cloud .orbit:nth-child(4) .electron {-webkit-animation-delay: -0.5s}
.path { width:300px; height:300px; position:relative; -webkit-transform-style: preserve-3d; -webkit-animation-name: pathRotate; -webkit-animation-duration: 2s; -webkit-animation-iteration-count: infinite; -webkit-animation-timing-function: linear; }
.electron { position: absolute; top:-5px; left:50%; margin-left:-5px; width:10px; height:10px; border-radius:10px; background:#ccc; -webkit-animation-name: electronFix; -webkit-animation-duration: 2s; -webkit-animation-iteration-count: infinite; -webkit-animation-timing-function: linear; }
@-webkit-keyframes pathRotate { from { -webkit-transform: rotateZ(0deg);} to { -webkit-transform: rotateZ(360deg); } }
@-webkit-keyframes electronFix { from { -webkit-transform: rotateX(90deg) rotateY(0deg); } to { -webkit-transform: rotateX(90deg) rotateY(-360deg); } }
JS :
$(function() {
$("#atom").mouseover(function() {
$(".path").animate({"-webkit-animation-duration": "25s"}, {duration: 'slow'});
$(".electron").animate({"-webkit-animation-duration": "25s"}, {duration: 'slow'});
}).mouseout(function() {
$(".path").animate({"-webkit-animation-duration": "2s"}, {duration: 'slow'});
$(".electron").animate({"-webkit-animation-duration": "2s"}, {duration: 'slow'});
});
});
감사
을 편집 바이올린 추가,
은 기본적으로 내가 GSAP를 사용하여 애니메이션을 다시 코드를 설명하는데 조금 도움이 타임 라인에 올려, 및 호버에 타임 라인을 둔화 사용중인 jQuery 버전. – ojovirtualGotcha - 1.10.2 – RoboRob
가장 쉬운 방법은 [GSAP] (http://www.greensock.com/gsap-js/)와 같은 것을 사용하는 것입니다.이 기능을 사용하면이 기능을 매우 쉽게 사용할 수 있습니다. 당신은 그 해결책에 괜찮습니까? 그렇지 않으면 믿을 수 없을 정도로 복잡하고 시간이 많이 걸리며 성능이 저하됩니다. –