Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Can jQuery';是否使s.animate()方法影响变量,而不是CSS属性?_Javascript_Jquery - Fatal编程技术网

Javascript Can jQuery';是否使s.animate()方法影响变量,而不是CSS属性?

Javascript Can jQuery';是否使s.animate()方法影响变量,而不是CSS属性?,javascript,jquery,Javascript,Jquery,我开始编写一些JS代码,使变量值随着时间的推移而增加,达到目标值,并以某种形式“轻松地输入” 我意识到jquery已经在它的.animate()方法中实现了这一点。当然,该方法是用于操纵CSS属性,而不是一般变量 我的问题是,有什么办法可以破解它,使该方法影响一个变量,而不是CSS属性吗?是的,您可以设置变量的动画 与 $({ left: 0 }).animate({ left: 10 }, {duration: 1000, step: function(now, fx) { $("#tes

我开始编写一些JS代码,使变量值随着时间的推移而增加,达到目标值,并以某种形式“轻松地输入”

我意识到jquery已经在它的.animate()方法中实现了这一点。当然,该方法是用于操纵CSS属性,而不是一般变量


我的问题是,有什么办法可以破解它,使该方法影响一个变量,而不是CSS属性吗?

是的,您可以设置变量的动画

$({ left: 0 }).animate({ left: 10 }, {duration: 1000, step: function(now, fx) {
  $("#test").css('left', now);
}});
或者,不使用
now
参数

var obj = { left: 0 };
$(obj).animate({ left: 10 }, {duration: 1000, step: function() {
      $("#test").css('left', obj.left);
}});

要想看到它们的作用

您是否可以直接使用
setTimeout()
来轻松实现相同的效果?使用easeIn设置变量动画???那没有意义。你能用CSS属性作为你的变量吗?换句话说,不要初始化普通的javascript变量。取而代之的是,创建一个不显示的div或诸如此类的div,在代码需要访问变量的地方,让它访问div的css属性。@JohnPick-是的,我在考虑这个问题,但它似乎有点老套。@elclanrs-我从来没有说过“设置变量动画”。我说的是让animate()方法在一段时间内操纵一个变量,而不是css属性(这只是另一个数字)。请注意命名为某些css属性的属性,如
缩放
填充
,等等。jQuery尝试操纵css等属性,这显然在非DOM对象上失败。一个简单的解决方法是在特殊名称前面加一个“u”,这样就可以在81403处设置
\u zoom
的动画,而不是
zoom
。@81403这不是真的。如果在非DOM对象上运行
.animate
,jQuery只会看到该对象,不会对其应用任何CSS。我正在用
top
属性设置JS对象的动画,您可以看到它不会向下移动。@JoseRuiSantos您希望javascript对象如何向下移动?:)总之,我没有说所有的CSS属性,只是说了一些。当
top
起作用时,
zoom
不起作用,这应该更清楚地说明我的意思:@81403我的坏。是的,你说得对。谢谢你指出这个问题。
$({ left: 0 }).animate({ left: 10 }, {duration: 1000, step: function(now, fx) {
  $("#test").css('left', now);
}});
var obj = { left: 0 };
$(obj).animate({ left: 10 }, {duration: 1000, step: function() {
      $("#test").css('left', obj.left);
}});