저는 반 완성 된 CSS 애니메이션에서 다음 CSS 애니메이션으로 자연스럽게 전환하려고하고 있습니다. 약간의 더듬 거리지 않고 그것을 할 수있는 방법을 찾을 수 없습니다. 매우 빠른 속도로 무한대의 애니메이션을 만들었으므로 가볍게 클릭하여 멈춰야합니다. 지금은 애니메이션을 전환하는 동안 항상 약간의 hickup이 발생합니다. 아마도 다음 애니메이션을 시작하기 전에 다음 requestAnimationFrame을 기다릴 필요가 있기 때문일 수 있습니다. 다른 옵션이 있습니까? 대략 다음과 같습니다.부드럽게 CSS 애니메이션 중반 애니메이션을 변경하십시오.
function onClick(){
// get current location of element
var content = $(".content");
var currentOffset = $(content[0]).css("top");
// set property to stop jumping back to the beginning of current animation
content.css({ top: currentOffset });
// stop the current animation
content.removeClass("anim-infinite");
// update content based on current location
// updateContent(currentOffset);
// setup ease-out animation
window.requestAnimationFrame(function() {
content.addClass("anim-ease-out");
content.css({ top: parseFloat(currentOffset) + 50 });
});
}
여기에 관련 CSS가 있습니다.
@keyframes "spin" {
from { top: 0 };
to { top: -200%; }
}
.anim-infinite{
animation: spin 1s linear infinite;
}
.anim-ease-out{
transition: all 0.25s ease-out;
}
거리와 시간 간격은 두 애니메이션 사이에서 일정한 속도를 유지하는 데 적당하며 관련된 브라우저 접두사를 사용하고 있습니다.
두 번째 애니메이션에 대해 "선형"타이밍 기능을 사용할 때 동일한 잡음이 발생합니다. 성공하지 않고 animation-fill-mode:both
을 설정하려고했습니다. 완료된 애니메이션에만 영향을 미치는 것으로 보입니다.
콘텐츠의 위치에 따라 콘텐츠를 업데이트하려고 할 때 더듬이가 심해집니다. 이는 애니메이션이 중단되는 시점에 따라 다릅니다.
jsFiddle을 만드시겠습니까? – DevlshOne
관련 코드가있는 http://jsfiddle.net은 매우 유용 할 것입니다. – Itay