2013-03-20 20 views
0

我想讓div自動滾動它的內容。內容高度是可變的。這是我設法解決的問題,但如果我將高度設置爲.childElement.outerHeight或height,它將只滾動78px,我不知道爲什麼。AutoScroll div內容兩種方式

var element = jQuery('#content'); 
      setInterval(scrollDown(element), 1000) 

     function scrollDown(element) { 
      var childElement = element.children(); 
      scrollAmount = childElement.outerHeight(); 
      element.animate({ scrollTop: 1000 }, 3000, null, scrollUp(childElement)); 
     } 
     function scrollUp(element) { 
      element.animate({ scrollTop: 0 }, 500); 
     } 

     }); 

任何幫助,高度讚賞。

感謝, 塞巴斯蒂安

+1

您是否嘗試過的CSS?像'overflow:scroll'或'overflow:auto'? – J0HN 2013-03-20 19:34:40

+0

我有溢出:隱藏,我不想看到滾動條,只是自動向下滾動,而不是自動滾動它,更快。 – sebastian 2013-03-20 19:40:46

+0

如果您已經解決了您自己的問題,請將您的解決方案作爲答案發布並接受。 – 2013-03-20 21:11:29

回答

0

我已經找到了解決辦法。

主要問題是我用document.ready,div的子元素沒有包含所有項目,所以滾動高度不正確。我已經改變了window.load,並對滾動動畫進行了一些更改。另外參數在動畫函數中是錯誤的。

這是最後的,正常工作的片段。

jQuery(window).load(function() { 
    var element = jQuery('#content'); 
    var childElement = element.children(); 
    var scrollAmount = childElement.height(); 
    var speedDown = scrollAmount * 20; 
    var speedUp = speedDown * 0.3; 

    scrollDown(element, scrollAmount, speedUp, speedDown); 

    function scrollDown(element, scrollAmount, speedUp, speedDown) { 

     element.animate({ scrollTop: scrollAmount }, speedDown, function() { 
      element.animate({ scrollTop: scrollAmount * -1 }, speedUp); 
      scrollDown(element, scrollAmount, speedUp, speedDown); 
     }); 
    } 
}) 
0

試試這個小,我已經在你的自動scrollUp和向下不停代碼,無需鼠標懸停超時停車有點行:

jQuery(window).load(function() { 
    var element = jQuery('#content'); 
    var childElement = element.children(); 
    var scrollAmount = childElement.height(); 
    var speedDown = scrollAmount * 50; 
    var speedUp = speedDown * 0.9; 

    scrollDown(element, scrollAmount, speedUp, speedDown); 

    function scrollDown(element, scrollAmount, speedUp, speedDown) { 

    element.animate({ scrollTop: scrollAmount }, speedDown, function() { 
     element.animate({ scrollTop: scrollAmount * +3 }, speedUp); 
     scrollDown(element, scrollAmount, speedUp, speedDown); 
     element.animate({ scrollTop: scrollAmount * -3 }, speedDown); 
    }); 
    } 
})