javascript - 从一个部分滚动到另一个部分

标签 javascript jquery html css

我正在构建一个包含一些部分的网站,每个部分都是窗口的 100% 高度,但最小为 800 像素

我想进行滚动,将 View 在一个滚动中从一个部分移动到另一个部分,但如果滚动较低,则 800 将像通常的滚动一样运行,直到到达新部分的末尾或开始,然后滚动到它。

我试着给自己写了一个脚本,但效果并不好
有好的脚本或教程吗?

(这是我到目前为止尝试做的……但没有成功……)

var prevScroll = $(window).scrollTop();
var currentSection = getCurrentSection();

$(window).scroll(function(){
    var newScroll = $(this).scrollTop();
    if (newScroll > prevScroll){
        checkScrolling("down");
    } else {
        checkScrolling("up");
    }
    prevScroll = newScroll;
});


function checkScrolling(direction) {

    var fromTop = $(window).scrollTop();
    var windowHeight = Math.max($(window).height(), 800);
    var currentPlace = $(currentSection).offset().top;

    if ( direction == "down" ) {
        if ( currentSection != ".blogs" ) {
            var nextPlace = $(currentSection).next().offset().top;
            if ( fromTop+windowHeight >= nextPlace ) {
                $("html, body").animate({scrollTop: nextPlace}, 1000);
                setTimeout(function(){
                    currentSection = getCurrentSection();
                }, 1001);
            }
        }
    } else {
        if ( currentSection != ".about" ) {
            var prevPlace = $(currentSection).prev().offset().top;
            if ( fromTop <= prevPlace+windowHeight ) {
                $("html, body").animate({scrollTop: prevPlace}, 1000);
                setTimeout(function(){
                    currentSection = getCurrentSection();
                }, 1001);
            }
        }
    }
}

function getCurrentSection() {
    var fromTop = $(window).scrollTop();
    var windowHeight = Math.max($(window).height(), 800);
    var s1 = $(".about").offset().top;
    var s2 = $(".works").offset().top;
    var s3 = $(".blogs").offset().top;

    if ( s1 <= fromTop && fromTop < s1+windowHeight ) {
        return ".about";
    } else if ( s2 <= fromTop && fromTop < s2+windowHeight ) {
        return ".works";
    } else if ( s3 <= fromTop && fromTop <= s3+windowHeight ) {
        return ".blogs";
    }
}

最佳答案

关于javascript - 从一个部分滚动到另一个部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42113344/

相关文章:

javascript - Sinon 监视继承函数

javascript - 在 facebook php sdk 4.0 和 laravel 中的 Javascript sdk 上访问 token

javascript - chrome 扩展 - 从串口读取

javascript - 如何使用JS同时淡入2张图片?

javascript - 通过一次 plupload 调用实现多个 plupload 上传按钮

python - Django 返回 403 错误 - "CSRF cookie not set"

javascript - 使用带有 2 个滚动条的 Scrollspy

JQuery - 我如何在 cookie 中保存列表

css - 将我的 div 扩展到页面底部时出现问题

javascript - 如何使用 Angular 1.x 和 Typescript 设置 Webpack 以使用 Angular 模板(ng-include)?