在jquery的动画函数中有下面的代码。在添加之后,newleft变量包含不正确的值 。不知道我是否正确的做法。关于jQuery的浮点计算
step: function(now, fx) {
if(fx.prop==="left") {
var newleft= $("p").offset().left+ now;
}
$("p").css("left",newleft)
}
在jquery的动画函数中有下面的代码。在添加之后,newleft变量包含不正确的值 。不知道我是否正确的做法。关于jQuery的浮点计算
step: function(now, fx) {
if(fx.prop==="left") {
var newleft= $("p").offset().left+ now;
}
$("p").css("left",newleft)
}
now
永远是绝对物业的价值,它是不是r elative到上一步。
这意味着你必须从p
元素的原位置减去now
,而不是它的当前位置:
$("button").click(function() {
var a = $("p").offset().left; // get original position
$("div").animate({left: '-200px'}, {
step: function (now, fx) {
if (fx.prop === "left") {
var b = now;
var newleft = a + b;
$("body").append("<div>" + a + "::::::" + b + "------" + newleft + "</div>");
$("p").css("left", newleft + "px");
}
}
});
});
这仅适用于因为div
位于0
。如果它被定位不同,你必须从now
减去div
的原始位置第一,得到的相对运动:
$("button").click(function() {
var a = $("p").offset().left;
var b = $("div").offset().left;
$("div").animate({left: '-200px'}, {
step: function (now, fx) {
if (fx.prop === "left") {
var newleft = a + (now - b);
$("p").css("left", newleft + "px");
}
}
});
});
但是,如果你想要做的是移动两个元素由相同的相对数量,那么只需使用-=200
作为动画值:
$("button").click(function() {
$("div, p").animate({left: '-=200'});
});
尝试添加px
在newleft
变量:
var newleft= $("p").offset().left+ now + "px";
或追加px
当你设置left
值的段落:
$("p").css("left",newleft + "px")
CSS左边属性应该有一个单位,例如“px”,“em”等。 –
$(“p”).css(“left”,newleft +“px”) –
非常感谢您的信息。 jsfiddle.net/hLYJD newleft在动画结束时应该有400-200 = 200px,但它会得到奇怪的值,如2382.546875。这是在css函数之前。 – Arav