在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