javascript - 在溢出 : auto 的 div 中仅滚动一次 'var distance'

标签 javascript jquery css scroll overflow

所以我遇到了滚动问题。

使用:jquery.mousewheel.min.js

有一个 div 带有 overflow: auto 并且它有固定的宽度或高度 600px。

$(document).ready(function() {
    if (window.addEventListener) window.addEventListener('DOMMouseScroll', wheel, false);
    window.onmousewheel = document.onmousewheel = wheel;

    function wheel(event) {
        var delta = 0;
        if (event.wheelDelta) delta = event.wheelDelta / 120;
        else if (event.detail) delta = -event.detail / 3;

        handle(delta);
        if (event.preventDefault) event.preventDefault();
        event.returnValue = false;
    }

    function handle(delta) {
        var time = 200;
        var distance = 300;
        $('#blablabla').stop().animate({
            scrollLeft: $(window).scrollLeft() - (distance * delta)
        }, time);

        $('#lolololol').stop().animate({
            scrollTop: $(window).scrollTop() - (distance * delta)
        }, time);
    }           
});

问题: div 中的内容仅向左或向右/向上或向下滚动 300px 一次,仅此而已。 没有这个脚本,overflow: auto 工作正常。需要让它与它一起工作。

最佳答案

问题是您正在为 div 的滚动设置动画,但是使用窗口的滚 Action 为动画的参数值。使用 div 自己的滚动值。

例如,改变这个:

    $('#lolololol').stop().animate({
        scrollTop: $(window).scrollTop() - (distance * delta)
    }, time);

为此:

    $('#lolololol').stop().animate({
        scrollTop: $('#lolololol').scrollTop() - (distance * delta)
    }, time);

我创建了一个模拟您情况的 fiddle :http://jsfiddle.net/9dNGL/2/

关于javascript - 在溢出 : auto 的 div 中仅滚动一次 'var distance',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23952763/

相关文章:

javascript - 有没有一种优雅的方式来处理支持使用多种字体和一个词

javascript - 在未加载图片时,是否可以使用代码来提醒用户?

javascript - 具有 jQuery 函数范围问题的 Angular 2

javascript - PHP获取的数据通过jQuery为Paragraph或P标签赋值

javascript - 聊天应用程序的自下而上布局设计

javascript - 在 <script> 标签之间执行的异步代码

javascript - Jquery $ ('#someID > div' ).each(function(){..}) 在 IE 中不工作

jquery - 异步 ajax 调用未按预期工作

css - 我们应该使用什么语言来创建包含大量表格、颜色和图像的打印 Material ?

html - 无法将此 ul 居中