jQuery鼠标后跟事件与元素动画相结合
jQuery Mousewheel event coupled with element animation
场景:
我需要创建一个曲线动画(弧形),它由鼠标滚轮触发。
所以,我想出了一些代码。
请在此处查看演示
var arc = {
center: [-200, ($(window).height() - 24) / 2],
// height + padding
radius: 450,
start: 0,
end: 90,
dir: 1
}
$('.point').each(function () {
$(this).data('lastEnd', arc.end).animate({
path: new $.path.arc(arc)
}, 0);
arc.start -= 10;
arc.end -= 8;
});
$('body').mousewheel(function (e, delta, deltaX, deltaY) {
e.preventDefault();
var delta = delta * -1;
$('.point').each(function () {
var $this = $(this);
var startPoint = $this.data('lastEnd');
var arc = {
center: [-200, ($(window).height() - 24) / 2],
radius: 450,
start: startPoint,
end: (delta * 8) + startPoint,
dir: delta > 0 ? 1 : -1
}
$this.data('lastEnd', arc.end);
$(this).animate({
path: new $.path.arc(arc)
}, 500);
});
});
我正在使用jQuery路径进行曲线动画和
jQuery鼠标滚轮以触发鼠标滚轮上的事件。
问题:
鼠标滚轮只给我鼠标滚轮的方向,但没有速度。所以,若用户滚动得更快,而不是增加delta
,它会多次触发鼠标滚轮事件。它本来可以在简单的情况下工作,但我正在设置点的动画。因此,在动画结束之前,会触发多个鼠标滚轮事件。(你可以通过更快的滚动来看到它)
我尝试了什么:
我通过放置标志
isScrolling
来限制多个鼠标滚轮事件,如果isScrolling
为true,则限制滚动。但是,这并不能给我带来流畅的动画效果。在动画结束之前,鼠标滚动不会执行任何操作。我使用
setTimeout
来保持滚动几毫秒,并对该时间段内触发的所有增量求和,但这也不平滑。我试过使用
stop()
。但是stop()
在中途停止了动画,我希望在标记的位置至少有一个点(不在其上方/下方)
我想要什么:
使用鼠标滚轮平滑动画(就像页面上的正常滚动一样)。更快的鼠标滚轮滚动应该比正常的(一次滚动一次)滚动更多。
更新1:
我昨天以来的进步可以在这里看到
现在,在开始动画之前,我使用setTimeout
来总结deltas
,然后使用相对持续时间来在较大的增量中更快地动画,在较小的增量中较慢地动画。
我将使用$.path.arc
中的css
-方法,并将其返回的css
-对象传递给$.fn.animate
。现在要获得实际的css
-对象,请使用鼠标滚轮-delta
对它们进行迭代:
var path = new $.path.arc(arc);
$this.stop().animate(path.css(delta-1), 500);
http://fiddle.jshell.net/Tfwqu/1/
要使更平滑,您应该使用一个缓和功能:
$.easing.easeOutQuad = function (x, t, b, c, d) {
return -c *(t/=d)*(t-2) + b;
};
...
var path = new $.path.arc(arc);
$this.stop().animate(path.css(delta-1), 500, 'easeOutQuad');
http://fiddle.jshell.net/Tfwqu/2/
- 使用svg和javascript将一个类的元素动画化为另一个类
- 如何在一个元素动画之后延迟
- 将列表元素动画制作到顶部
- 如何在山露网站上完成元素动画
- 制作AngularJS路线之间的英雄元素动画
- 设置元素动画jquery
- 我将如何修复由于上面的元素动画而移动的元素
- 修复了元素动画滚动主体在顶部
- 无法在 jquery 中获取元素动画以等待另一个元素动画
- Javascript - 从任何位置将元素动画到屏幕中心
- 在设置元素动画的过程中降低速度
- 跳转到元素动画
- jQuery鼠标后跟事件与元素动画相结合
- 使用Jquery将元素动画制作到窗口的右边缘
- Jquery/CSS带回调的顺序元素动画
- 如何在jquery中停止以前的dom元素动画
- 元素.动画,在动画完成后应用样式更改
- 在Bootstrap Modal中检测滚动使滚动上的每个元素动画化
- 当绑定值发生变化时,如何使元素动画化?
- 检测子元素动画