2012-04-28 13 views
7

मुझे केवल jQuery एनिमेशन का उपयोग करके एक div बाउंस बनाने के लिए एनीमेशन का समाधान नहीं मिल रहा है। की तरह कुछ काम नहीं करता:क्लिक करने के लिए jQuery बाउंस प्रभाव कोई jQuery UI

$("#bounce").click(function() { 
    $(this).effect("bounce", { 
     times: 3 
    }, 300); 
});.​ 

मैं ऐसे कम एक के रूप में jQuery यूआई या किसी भी बाहरी प्लगइन, उपयोग करने के लिए नहीं पसंद करेंगे। एक विकृत प्रभाव मेरे मामले में उतना ही अच्छा होगा, इसलिए या तो होगा।

यहां एक example है, किसी भी मदद की बहुत सराहना की जाएगी! अग्रिम

+0

मैं अभी भी सिर्फ jQueryUI उपयोग करने का सुझाव होगा। मैं jQueryUI का उपयोग करके भी झिझक गया लेकिन जैसा कि आप चुन सकते हैं कि आप किस घटक को अपने डाउनलोड में शामिल करना चाहते हैं, आप बस बाउंस का चयन कर सकते हैं और कुछ और नहीं तो जेएस + सीएसएस फाइलें बहुत छोटी होंगी ~ 15kb – tObi

उत्तर

18

धन्यवाद आप बस इतना की तरह तत्व पर एक साथ श्रृंखला सकता है कुछ animate कॉल:

$("#bounce").click(function() { 
    doBounce($(this), 3, '10px', 300); 
}); 


function doBounce(element, times, distance, speed) { 
    for(var i = 0; i < times; i++) { 
     element.animate({marginTop: '-='+distance}, speed) 
      .animate({marginTop: '+='+distance}, speed); 
    }   
} 

कार्य उदाहरण: http://jsfiddle.net/Willyham/AY5aL/

+1

उदाहरण काम नहीं लगता है – jacktheripper

+0

क्षमा करें, मैं पहेली को बचाने के लिए भूल गया। अभी फिर से जांचें। –

+0

आप में से उन लोगों के लिए जो इसे काम नहीं कर सकते हैं, सुनिश्चित करें कि उस तत्व पर लागू कोई सीएसएस संक्रमण संपत्ति नहीं है जिसे आप बाउंस करने का प्रयास कर रहे हैं। यह हस्तक्षेप कर सकता है क्योंकि यह सीएसएस गुण है जो हम यहां जोड़ रहे हैं। – designcise

0

एक ऊर्ध्वाधर उछाल आप कुछ इस तरह की कोशिश कर सकते के लिए:

function bounce(element, distance, speed){ 
var bounce_margin_top = $(element).css("margin-top") 
$(element).css("margin-top", "-="+distance) 

$(element).show().fadeIn(200).animate({ 
    "margin-top": bounce_margin_top 
}, { 
    duration: speed, 
    easing: "easeOutBounce" 
}) 
} 
+0

'easeOutBounce' के लिए jQuery यूआई की आवश्यकता है। – Sparkup

+0

और jQuery यूआई में आप केवल शेक का उपयोग कर सकते हैं – tObi

0

मैं आमतौर पर jQuery एनिमेट का उपयोग करता हूं। अपने विशिष्ट प्रश्न के लिए, यह ऐसा दिखाई दे सकता:

HTML:

<div id="bounce"></div> 

सीएसएस:

#bounce { 
height:50px; 
width:50px; 
background:#333; 
margin-top:50px; 
position:relative; 
} 

और अंत में, jQuery:

$("#bounce").click(function() { 
for (var i=1; i<=3; i++) { 
$(this).animate({top: 30},"slow"); 
$(this).animate({top: 0},"slow"); 
    } 
}); 

और यहाँ एक कामकाजी पहेली है: http://jsfiddle.net/5xz29fet/1/

4

डंप किए गए बाउंस के लिए इस फ़ंक्शन का उपयोग करें। परिवर्तन के बिना कोड का उपयोग करते हुए बाउंसिंग तत्व को एक अद्वितीय वर्ग देना सुनिश्चित करें।

var getAttention = function(elementClass,initialDistance, times, damping) { 
 
    for(var i=1; i<=times; i++){ 
 
     var an = Math.pow(-1,i)*initialDistance/(i*damping); 
 
     $('.'+elementClass).animate({'top':an},100); 
 
    } 
 
    $('.'+elementClass).animate({'top':0},100); 
 
} 
 

 
$("#bounce").click(function() { 
 
\t getAttention("bounce", 50, 10, 1.2); 
 
});
#bounce { 
 
    height:50px; 
 
    width:50px; 
 
    background:#f00; 
 
    margin-top:50px; 
 
    position:relative; 
 
    border-radius: 50px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="bounce" class="bounce"></div>