2010-04-09 10 views
6

उद्देश्यjQuery का उपयोग कर डीआईवी के भीतर सामग्री को लगातार कैसे स्क्रॉल करें?

उद्देश्य एक निश्चित ऊंचाई और चौड़ाई के साथ एक एक कंटेनर है DIV है और स्वचालित रूप से लगातार खड़ी स्क्रॉल div कि भीतर HTML सामग्री है।

प्रश्न असल में मैं jQuery खड़ी ऊपर की तरफ (चाल) स्क्रॉल करने के लिए बच्चे को DIV का उपयोग कर नीचे कोड बना लिया है जब तक अपनी सीमांकन माता पिता बॉक्स जहां एनीमेशन तो पूरा करता है जो एक ईवेंट हैंडलर जो की स्थिति को रीसेट करता है चलाता है बाहर बच्चे डीआईवी और प्रक्रिया फिर से शुरू होता है।

यह ठीक काम करता है, इसलिए सामग्री रिक्त स्थान छोड़कर स्क्रॉल हो जाती है और फिर नीचे से शुरू होती है और स्क्रॉल हो जाती है।

मेरी समस्या यह है कि इसकी आवश्यकताएं सामग्री के लिए प्रकट होती हैं जैसे कि यह निरंतर दोहराया जा रहा है, बेहतर व्याख्या करने के लिए आरेख के नीचे देखें, क्या ऐसा करने का कोई तरीका है?

<div id="scrollingContainer"> 

    <div class="scroller"> 

    <h1>This is a title</h1> 

    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse at orci mi, id gravida tellus. Integer malesuada ante sit amet enim pulvinar congue. Donec pulvinar dolor et arcu posuere feugiat id et felis.</p> 

    <p>More content....</p> 

    </div> 

</div> 
:

alt text http://www.cameroncooke.com/playground/scrolling-example.gif

क्या मैं अब तक

HTML है: (मैं 3 पार्टी प्लग इन या पुस्तकालयों jQuery के अलावा अन्य का उपयोग नहीं करना चाहते हैं)

सीएसएस:

#scrollingContainer{ 
    height: 300px; 
    width: 300px; 
    overflow: hidden; 
} 

#scrollingContainer DIV.scroller{ 
    position: relative; 
} 

जावास्क्रिप्ट:

/** 
* Scrolls the content DIV 
*/ 
function scroll() { 

    if($('DIV.scroller').height() > $('#scrollingContainer').height()) { 

    var t = $('DIV.scroller').position().top + $('DIV.scroller').height(); 

    /* Animate */ 
    $('DIV.scroller').animate(
    { 
     top: '-=' + t + 'px' 
    } 
    , 4000, 'linear', animationComplete); 
    } 
} 

function animationComplete() { 
    $(this).css('top', $('#scrollingContainer').height()); 
    scroll(); 
} 

उत्तर

3

आप अपनी सामग्री तत्व नकल और उन्हें संरेखित इतना है कि वे खड़ी एक दूसरे के बगल कर रहे हैं, और उन्हें मिलकर स्क्रॉल करने के लिए की आवश्यकता होगी। आपकी वर्तमान स्क्रॉलिंग को काम करना चाहिए, कूद अदृश्य हो जाएगी क्योंकि इसे नीचे तत्व के शीर्ष से शीर्ष तत्व के शीर्ष तक कूदना चाहिए, यानी, एक समान दिखने वाले हिस्से में। मैं एक कंटेनर में सामग्री की दोनों प्रतियां डाल सकता हूं (आप केवल .clone इसे दूसरी प्रतिलिपि प्राप्त करने के लिए) स्क्रॉल कर सकते हैं और इस तरह स्क्रॉल करेंगे, इस तरह आपको दो तत्वों को स्थानांतरित करने की चिंता करने की आवश्यकता नहीं है।

यदि आप इसे वास्तव में अनुकूलित करना चाहते हैं, तो आप नीचे तत्व में सामग्री के शीर्ष भाग (कूदने के लिए पर्याप्त) प्रदर्शित कर सकते हैं, लेकिन जब तक कि आपकी सामग्री वास्तव में जटिल और भारी न हो, यह प्रयास के लायक नहीं है।

1

क्या आप सामग्री को "ऑटो-दोहराने" और हमेशा के लिए स्क्रॉल करना चाहते हैं? आपको पाठ के नीचे एक नया डीआईवी जोड़ने में सक्षम होना चाहिए, और उस पाठ को नए डीआईवी में कॉपी करना चाहिए। इसे स्क्रॉल स्थिति के आधार पर करें, जब यह बाहर निकलता है तो उपरोक्त डीआईवी को हटा दें। असल में आप टेक्स्ट को कॉपी कर रहे हैं, "स्टैक" के नीचे एक नया डीआईवी दबाकर और इसे बाहर होने पर शीर्ष पर पॉप अप कर रहे हैं।

0

बस आपको दो divs की आवश्यकता होगी जो स्क्रॉल बॉक्स से बड़े हैं और आपको उस स्थान को स्थानांतरित करने की आवश्यकता होगी जो उस के नीचे दिखाई नहीं दे रहा है। यदि दोनों बिल्कुल वही हैं तो यह ध्यान देने योग्य नहीं होना चाहिए।यहां देखा जा सकता

$('.upBut').bind('click',function(){ 
    $('.articleWrapper').prepend($('.article:last')).children('.article:first').css({display:'none'}).show('slow'); 
}); 
$('.downBut').bind('click',function(){ 
    //$('.articleWrapper').append($('.article:first')).children('.article:last').css({display:'none'}).show('slow'); 
    $('.article:first').hide('slow',function(){$(this).appendTo('.articleWrapper').show('slow');}); 
}); 
$('.upBut').hover(function(){$(this).css("background-image", "url(images/up_green.png)");},function(){$(this).css("background-image", "url(images/up_red.png)");}); 
$('.downBut').hover(function(){$(this).css("background-image", "url(images/down_green.png)");},function(){$(this).css("background-image", "url(images/down_red.png)");}); 

उदाहरण कार्य करना::

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