Jquery 动画左上动态
Jquery animate top left dynamic
我正在使用 jquery 动画和 html5 拖放,我想制作与 google 驱动器相同的动画。
我设法做到了:
element.bind('drag', function(e) {
_.each(draggedFiles, function(id) { //draggedFiles is an array of id
id = 'fs-row-' + id;
var newRow = angular.element('body').find('div#'+ id); // Element being animated
newRow.animate({
width: 190,
height: 50,
top: e.originalEvent.pageY,
left: e.originalEvent.pageX,
}, 'medium', function() {
// When the animation is over the tag element are being removed from the DOM
_.each(draggedFiles, function(id) {
id = 'fs-row-' + id;
angular.element('body').find('div#'+ id).remove();
});
});
});
});
动画效果很好,转到鼠标位置。但是如果我在动画期间移动鼠标,动画将不会即时更新顶部和左侧,而是继续移动到我单击的位置而不是跟随鼠标。
拖动事件让我知道鼠标在 window 中的位置。是否可以再次触发动画直到它到达鼠标位置?
[edit] 我正在查看 jQuery 文档,发现我可以使用 progress 或 step,但我找不到是否可以更新这两个事件的顶部和左侧。有人知道吗?
我使用 step 函数查找 jQuery 文档找到了我的答案,也许它会对将来的人有所帮助。主要是您可以在每个步骤上编辑每个 属性 动画的结束或开始。我只需要用鼠标的位置更新结尾。
var y = 0;
var x = 0;
element.bind('drag', function(e) {
_.each(draggedFiles, function(id) {
id = 'fs-row-' + id;
var newRow = angular.element('body').find('div#'+ id);
newRow.animate({
opacity: 1,
width: 190,
height: 50,
top: e.originalEvent.pageY,
left: e.originalEvent.pageX
}, {
duration: 400,
step: function( now, tween ) {
if (tween.prop === 'top') {
tween.end = y;
}
if (tween.prop === 'left') {
tween.end = x;
}
},
complete: function() {
newRow.remove();
angular.element(dragElement).animate({
width: 190,
height: 50,
opacity: 1
}, 'fast');
}
});
});
y = e.originalEvent.pageY + 1;
x = e.originalEvent.pageX;
});
我正在使用 jquery 动画和 html5 拖放,我想制作与 google 驱动器相同的动画。
我设法做到了:
element.bind('drag', function(e) {
_.each(draggedFiles, function(id) { //draggedFiles is an array of id
id = 'fs-row-' + id;
var newRow = angular.element('body').find('div#'+ id); // Element being animated
newRow.animate({
width: 190,
height: 50,
top: e.originalEvent.pageY,
left: e.originalEvent.pageX,
}, 'medium', function() {
// When the animation is over the tag element are being removed from the DOM
_.each(draggedFiles, function(id) {
id = 'fs-row-' + id;
angular.element('body').find('div#'+ id).remove();
});
});
});
});
动画效果很好,转到鼠标位置。但是如果我在动画期间移动鼠标,动画将不会即时更新顶部和左侧,而是继续移动到我单击的位置而不是跟随鼠标。
拖动事件让我知道鼠标在 window 中的位置。是否可以再次触发动画直到它到达鼠标位置?
[edit] 我正在查看 jQuery 文档,发现我可以使用 progress 或 step,但我找不到是否可以更新这两个事件的顶部和左侧。有人知道吗?
我使用 step 函数查找 jQuery 文档找到了我的答案,也许它会对将来的人有所帮助。主要是您可以在每个步骤上编辑每个 属性 动画的结束或开始。我只需要用鼠标的位置更新结尾。
var y = 0;
var x = 0;
element.bind('drag', function(e) {
_.each(draggedFiles, function(id) {
id = 'fs-row-' + id;
var newRow = angular.element('body').find('div#'+ id);
newRow.animate({
opacity: 1,
width: 190,
height: 50,
top: e.originalEvent.pageY,
left: e.originalEvent.pageX
}, {
duration: 400,
step: function( now, tween ) {
if (tween.prop === 'top') {
tween.end = y;
}
if (tween.prop === 'left') {
tween.end = x;
}
},
complete: function() {
newRow.remove();
angular.element(dragElement).animate({
width: 190,
height: 50,
opacity: 1
}, 'fast');
}
});
});
y = e.originalEvent.pageY + 1;
x = e.originalEvent.pageX;
});