我想做最奇怪的事情:使用animate進行值更改,這不是一個css屬性,而只是一個變量。自定義值的jQuery動畫(不是CSS屬性)
我需要這個,因爲我想旋轉一個元素,當用戶點擊其邊框。所以我需要動畫角度值,然後在自定義繪圖算法中使用它。
我試圖使用隱藏的DIV的css屬性來存儲它的角度值併爲其設置動畫效果,但它無法正常工作。
任何人都可以幫我嗎?
我想做最奇怪的事情:使用animate進行值更改,這不是一個css屬性,而只是一個變量。自定義值的jQuery動畫(不是CSS屬性)
我需要這個,因爲我想旋轉一個元素,當用戶點擊其邊框。所以我需要動畫角度值,然後在自定義繪圖算法中使用它。
我試圖使用隱藏的DIV的css屬性來存儲它的角度值併爲其設置動畫效果,但它無法正常工作。
任何人都可以幫我嗎?
只是偶然發現了這一點的同時尋找同樣的事情,正確的答案似乎是
$({foo:0}).animate({foo:100}, {
step: function(val) {
// val takes values from 0 to 100 here
}
})
上找到http://james.padolsey.com/javascript/fun-with-jquerys-animate/
這就是我一直在尋找的。我不希望更改任何DOM元素的屬性,樣式或JavaScript屬性。 – funrob
請注意,起始值必須爲零。因此,假定結束值爲「1」並進行自己的進度計算可能更容易:val = start_val *(1-val)+ end_val * val; –
這是一個很好的學習技巧。 +1這應該是答案 –
jQuery有一些所謂的有史以來之後激發的動畫更換step function,
$('li').animate({
opacity: .5,
height: '50%'
},
{
step: function(now, fx) {
var data = fx.elem.id + ' ' + fx.prop + ': ' + now;
$('body').append('<div>' + data + '</div>');
}
});
如果您正在尋找「旋轉」的東西,你可以do that with css,因此,你可以使用jQuery animate function。
令人煩惱的是,如果不實際提供一些CSS屬性來處理它(它不會給你中間的值),就不可能運行animate
函數。
你並不需要甚至有動畫的實際元素(或變量)的工作,你想改變,因此有可能破解它使用step
參數由@Andrew像這樣描述的工作:
$('<div/>').css({ height: _your_start_value }).animate({
height: _your_end_value
}, {
step: function (currentValue) {
//do what you need to with the current value..
}
});
但是,這是非常低效的,因爲它正在不必要地改變(雖然未附加)元素的高度CSS屬性。最好使用「補間」庫(如Tween JS)來做這種事情。
根據JQuery的動畫DOC http://api.jquery.com/ animate /:「除了樣式屬性外,還可以設置一些非樣式屬性,例如scrollTop和scrollLeft以及自定義屬性。」 – mjhm