페이지를 위아래로 스크롤 할 때 X 축에서 회전하는 상자를 만들었습니다.CSS 변환이 렌더링되지 않는 이유는 무엇입니까?
$(window).scroll(function (event) {
clearTimeout(timeout);
timeout = setTimeout(finish_rotation, delay);
scroll = $(window).scrollTop() * 2;
animate_rotation();
});
function animate_rotation(){
var translate = 'rotateX(' + scroll + 'deg)';
$('.flipper').css('transform', translate);
}
스크롤을 멈 추면 가장 가까운 180의 배수로 회전이 완료되어 회전이 완료됩니다. 이것은 finish_scroll에서 수행됩니다.
function finish_rotation(){
var goal_rotation = 180*Math.ceil(scroll/180);
while(scroll < goal_rotation){
scroll++;
animate_rotation();
}
}
문제는 실제로 회전의 나머지 부분을 움직이지 않고 끝난 위치로 이동한다는 것입니다. finish_rotation의 while 루프에서 animate_rotation이 각 반복마다 호출되고 있음을 확인할 수 있지만 애니메이션이 왜 발생하지 않는지 알 수는 없습니다. 애니메이션이 너무 빠르거나 너무 가까워서 스크롤 증가량을 변경하고 각 animate_rotation 호출에 setTimeout을 추가하려고 시도했지만 모든 단계가 애니메이션으로 처리되지는 않을 것이라고 생각했습니다. 왜 모든 애니메이션이 재생되지 않습니까? 여기에 작업 예를 점검 들어
: JSFiddle
편집 : 반전 위로 스크롤 아래로 수용 할 수 있도록 내가 바이올린을 업데이트 한. 이 변경은 변환 문제를 변경하지 않으므로 가독성을 위해 코드를있는 그대로 그대로 두겠습니다.