javascript - 逐格平滑滚动

标签 javascript jquery html css

我已经添加了这个脚本,可以使用 mouseweel 立即向下滚动 100%

 $(document).ready(function () {
    var divs = $('.mydiv');
    var dir = 'up'; // wheel scroll direction
    var div = 0; // current div
    $(document.body).on('DOMMouseScroll mousewheel', function (e) {
        if (e.originalEvent.detail > 0 || e.originalEvent.wheelDelta < 0) {
            dir = 'down';
        } else {
            dir = 'up';
        }
        // find currently visible div :
        div = -1;
        divs.each(function(i){
            if (div<0 && ($(this).offset().top >= $(window).scrollTop())) {
                div = i;
            }
        });
        if (dir == 'up' && div > 0) {
            div--;
        }
        if (dir == 'down' && div < divs.length) {
            div++;
        }
        //console.log(div, dir, divs.length);
        $('html,body').stop().animate({
            scrollTop: divs.eq(div).offset().top
        }, 200);
        return false;
    });
    $(window).resize(function () {
        $('html,body').scrollTop(divs.eq(div).offset().top);
    });
});

但是我需要在上面添加一些东西,这样滚动看起来更流畅,我该怎么做?

Fiddle

最佳答案

您可以为您的 animate 函数或缓动函数指定一个持续时间,以获得不同的动画行为。

您可以在此处找到缓动函数和使用主题的说明:

jQuery Easing Plugin

关于javascript - 逐格平滑滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23710951/

相关文章:

javascript - 如何在 vuejs 或 Javascript 中查找数组中的元素

JavaScript 作用域和闭包

javascript - 如果已在其他选择选项中选择了所选选项,则发出警报

javascript - 索引表行 js/jquery

javascript - 如何突出显示 ChartJS 中的特定数据点,其中我的数据来自 json 数组?

javascript - 如何在 vue 组件中显示所需的 html 5?

javascript - 如何在 Node/Express 中将 JS 从客户端移动到服务器?

jquery - 如何更改 jquery 弹出小部件标题的 css 背景颜色

javascript - postMessages 添加提交事件监听器

html - CSS 如何在图片下方添加一个按钮