0

我想做一个 div 自动滚动它的内容。内容高度是可变的。这是我设法解决的问题,但是如果我将高度设置为 .childElement.outerHeight 或高度,它只会滚动 78px,我不知道为什么。

 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);
        }

        });

非常感谢任何帮助。

谢谢,塞巴斯蒂安

4

2 回答 2

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);
        });
    }
})
于 2013-03-20T21:19:22.693 回答
0

试试这个,我在你的代码中有一小行用于自动滚动和向下不停,没有鼠标悬停超时停止:

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);
    });
  }
})
于 2015-11-20T18:04:52.490 回答