【发布时间】:2014-09-08 21:09:45
【问题描述】:
当您上下滚动页面时,我制作了一个在 X 轴上旋转的框。
$(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
编辑:我已经更新了小提琴,以便翻转适应上下滚动。此更改并未改变转换问题,因此为了便于阅读,我将保留问题中的代码。
【问题讨论】:
标签: javascript jquery css css-transforms