2010-01-26 12 views
9

यह jQuery में एक 100% सहज मार्की (या बस जावास्क्रिप्ट लेकिन jQuery पसंद) बनाने के लिए संभव है?निर्बाध jQuery मार्की?

मैं एक साधारण मार्की कि बाएं ले जाता है जब तक यह तो स्क्रीन के बंद होने बस (जब दृश्य से बाहर) कूदता सही करने के लिए और फिर से शुरू होता कर दिया है। हालांकि मैं इसे इंतजार नहीं करना चाहूंगा।

ऐसा करने का एकमात्र तरीका मैं पाठ को डुप्लिकेट करना और इसे पहले टेक्स्ट के बाद रखना होगा, फिर उन्हें फिर से स्वैप करें। हालांकि मुझे पता नहीं कैसे jQuery में इस लागू करने के लिए है, मैं jQuery के .clone() को देखकर किया गया है लेकिन इसे सही ढंग से नहीं काम कर प्राप्त कर सकते हैं, सब कुछ कूदता है।

कोई भी विचार?

अपने समय के लिए धन्यवाद,

+14

लेट्स पार्टी की तरह 1995 है! – Kevin

+0

आपकी झुकाव बिल्कुल सही है। –

+0

मैंने अभी इसके लिए एक प्लगइन बनाया है। आशा है कि इस मदद करता है :) https://github.com/aamirafridi/jQuery-Marquee –

उत्तर

22

निम्न मार्कअप को देखते हुए:

<div id="marquee">My Text</div> 

दोहराव के लिए, मैं कुछ इस तरह करते हैं:

$("#marquee").wrapInner("span"); // wrap "My Text" with a new span 
$("#marquee").append($("#marquee span").clone().hide()); // now there are two spans with "My Text" 

स्थानांतरण और फैला अदला-बदली है बहुत आसान। यहां एक पूर्ण कार्यात्मक उदाहरण दिया गया है:

$(function() { 

    var marquee = $("#marquee"); 
    marquee.css({"overflow": "hidden", "width": "100%"}); 

    // wrap "My Text" with a span (old versions of IE don't like divs inline-block) 
    marquee.wrapInner("<span>"); 
    marquee.find("span").css({ "width": "50%", "display": "inline-block", "text-align":"center" }); 
    marquee.append(marquee.find("span").clone()); // now there are two spans with "My Text" 

    // create an inner div twice as wide as the view port for animating the scroll 
    marquee.wrapInner("<div>"); 
    marquee.find("div").css("width", "200%"); 

    // create a function which animates the div 
    // $.animate takes a callback for when the animation completes 
    var reset = function() { 
     $(this).css("margin-left", "0%"); 
     $(this).animate({ "margin-left": "-100%" }, 3000, 'linear', reset); 
    }; 

    // kick it off 
    reset.call(marquee.find("div")); 

}); 

See it in action

अस्वीकरण:

मैं किसी भी पेशेवर वेबसाइट के लिए इस सलाह नहीं देते। हालांकि, यह उपयोगी हो सकता है यदि आप 1 99 0 के रेट्रो को पुन: उत्पन्न करने की कोशिश कर रहे हैं।

+0

फिर भी एक बार मार्की दिखाई खिड़की बीत चुका है स्वैप करने के लिए कोड की जरूरत है। –

+2

यह निर्बाध नहीं है, टेक्स्ट अंत के बाद और टेक्स्ट शुरू होने से पहले एक बड़ा अंतर है। – Evgeny

+1

@Evgeny, निर्बाध की आपकी परिभाषा पर निर्भर करता है। यह डिज़ाइन स्क्रीन सिलेंडर की तरह कार्य करता है, जिससे पाठ एक तरफ बहती है जिससे तुरंत दूसरे पर दिखाई देता है। – Joel

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