2011-11-16 20 views
19

मैं अजीब चीज़ करना चाहता हूं: एनीमेट के साथ एक वैल्यू चेंज करें जो सीएसएस संपत्ति नहीं है बल्कि सिर्फ एक चर है।कस्टम वैल्यू का jQuery एनिमेट (सीएसएस प्रॉपर्टी नहीं)

मुझे इसकी आवश्यकता है क्योंकि जब कोई उपयोगकर्ता अपनी सीमा पर क्लिक करता है तो मैं तत्व को घुमाता हूं। तो मुझे कोण मान को एनिमेट करने की आवश्यकता है और फिर इसे कस्टम ड्राइंग एल्गोरिदम में उपयोग करें।

मैंने अपने कोण मूल्य को संग्रहीत करने और इसे एनिमेट करने के लिए बस एक छिपी हुई डीआईवी की सीएसएस संपत्ति का उपयोग करने की कोशिश की, लेकिन यह ठीक से काम नहीं करता है।

क्या कोई मुझे इसके साथ मदद कर सकता है?

+0

पर पाया जा करने के लिए JQuery चेतन डॉक http://api.jquery.com/ के अनुसार प्रकट होता है पर ठोकर खाई एनिमेट /: "शैली गुणों के अलावा, कुछ गैर-शैली गुण जैसे स्क्रॉलटॉप और स्क्रोल लाइफ, साथ ही साथ कस्टम गुण, एनिमेटेड हो सकते हैं।" – mjhm

उत्तर

58

बस इस जबकि एक ही बात के लिए खोज और सही जवाब

$({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/

+0

उत्तर है जो मैं देख रहा था। मैं नहीं चाहता कि कोई भी डोम तत्व गुण, शैलियों या जावास्क्रिप्ट गुण बदल जाए। – funrob

+0

ध्यान दें कि प्रारंभिक मान शून्य होना चाहिए। तो, "1" के अंत मूल्य को मानना ​​संभव है और अपनी प्रगति गणना करें: val = start_val * (1-val) + end_val * val; –

+0

यह सीखने के लिए एक महान चाल है। +1 यह उत्तर होना चाहिए –

-3

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>'); 
    } 
}); 
+8

मेरी राय में, यह मूल पोस्टर के प्रश्न का उत्तर नहीं देता है। मैंने यह पृष्ठ पाया कि मूल पोस्टर क्या करना चाहता था (एक आसान के साथ एनिमेट का उपयोग करें, लेकिन सीएसएस संपत्ति के साथ नहीं), और यह सवाल का जवाब नहीं देता है। – Flipster

+2

यह विशेष रूप से * गैर-संपत्ति * को एनिमेट नहीं करता है। @ Thg435 का उत्तर सही है। – Ciantic

+0

@georg द्वारा उत्तर प्रश्न –

0

आप देख रहे हैं करने के लिए "स्पिन" कुछ, आप कर सकते हैं do that with css और इसलिए, आप jQuery animate function उपयोग कर सकते हैं।

2

परेशान करना animate फ़ंक्शन को चलाने के लिए वास्तव में कुछ सीएसएस गुणों की आपूर्ति किए बिना काम करना संभव नहीं है (यह आपको बीच में मूल्य नहीं देता है)।

तुम भी एनीमेशन वास्तविक तत्व (या चर) पर काम कर आप बदलना चाहते हैं तो यह रूप में इतनी तरह @Andrew द्वारा वर्णित step तर्क का उपयोग काम करने के लिए यह हैक किया जा सकता है की आवश्यकता नहीं है:

$('<div/>').css({ height: _your_start_value }).animate({ 
    height: _your_end_value 
}, { 
    step: function (currentValue) { 
     //do what you need to with the current value.. 
    } 
}); 

हालांकि, यह बहुत अक्षम है क्योंकि यह (हालांकि अनुपस्थित) तत्व की ऊंचाई सीएसएस संपत्ति को बिना किसी बदलाव के बदल रहा है। इस तरह की चीज करने के लिए Tween JS जैसे "ट्विनिंग" लाइब्रेरी का उपयोग करना बेहतर है।

संबंधित मुद्दे