Javascript 如何保存原始div position()以供以后使用?
我目前正在用GSAPJS库运行一个动画序列 在运行动画的第一个实例之后,我运行了一个Javascript 如何保存原始div position()以供以后使用?,javascript,jquery,gsap,Javascript,Jquery,Gsap,我目前正在用GSAPJS库运行一个动画序列 在运行动画的第一个实例之后,我运行了一个onComplete函数,为\myDiv保存当前的位置() 然后,我尝试在动画的最后一个实例中使用coordX值,但它只是显示为:无效的左二值:未定义 有什么想法吗 var coordX; function regPosition() { coordX = $("#mydiv").position().left; } function animationStart() { //Initiate
onComplete
函数,为\myDiv
保存当前的位置()
然后,我尝试在动画的最后一个实例中使用coordX
值,但它只是显示为:无效的左二值:未定义
有什么想法吗
var coordX;
function regPosition() {
coordX = $("#mydiv").position().left;
}
function animationStart() {
//Initiate animation with onComplete
tl.to("#mydiv", 0.5, {borderRadius:"50%", width: "35%", onComplete: regPosition})
//Move #myDiv to another position than registered
.to("#mydiv", 0.5, {left: 1000})
//try to use the original position stored in "coordX"
.fromTo("#mydiv", 1.5, {left:-800}, {left:coordX});
}
animationStart();
在第一个.to
完成后实际调用onComplete
之前,不会设置coordX
的值。在此之前,该值是未定义的
因此,问题是在定义时,coordX
的值是undefined
,这是您分配给left
的值。因此,当计算.to
时,它会看到一个未定义的值
也许更好的方法是在onComplete
中启动反向动画:
function animationStart() {
tl.to("#mydiv", 0.5, {
borderRadius:"50%",
width: "35%",
onComplete: function() {
var coordX = regPosition();
tl.to("#mydiv", 0.5, {left: 1000})
.fromTo("#mydiv", 1.5, {left:-800}, {left: coordX});
}
})
}
您的代码在计时方面存在一些逻辑问题。执行每个步骤都需要一些时间,在完成所有步骤之前,不会调用onComplete
函数。在启动动画之前,不要使用onComplete
回调,只需保存coordX
,并在动画完成后使用。创建一个变量,将位置介绍保存到此处,稍后使用。。
我更喜欢.offset()…@IliaRostovtsev谢谢:)啊,是的,好主意Vivin-这会让它工作得很好,谢谢你的贡献!如果这个答案附带一个代码片段,说明如何实现这一点,那么它将更有帮助