Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从一节滚动到另一节_Javascript_Jquery_Html_Css - Fatal编程技术网

Javascript 从一节滚动到另一节

Javascript 从一节滚动到另一节,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我正在建立一个网站,有一些部分,其中每一个都是100%的窗口高度,但最低800像素 我想做一个滚动,可以在一个滚动中从一个部分移动到另一个部分,但是如果滚动较低,那么800将像通常的滚动一样,直到到达新部分的结尾或开始,然后滚动到它 我试着给自己写一个剧本,但效果不太好 有好的脚本或教程吗 (这是我到目前为止试图做的…但没有成功…) var prevScroll=$(窗口).scrollTop(); var currentSection=getCurrentSection(); $(窗口)。滚动

我正在建立一个网站,有一些部分,其中每一个都是100%的窗口高度,但最低800像素

我想做一个滚动,可以在一个滚动中从一个部分移动到另一个部分,但是如果滚动较低,那么800将像通常的滚动一样,直到到达新部分的结尾或开始,然后滚动到它

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

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

var prevScroll=$(窗口).scrollTop();
var currentSection=getCurrentSection();
$(窗口)。滚动(函数(){
var newScroll=$(this.scrollTop();
如果(新闻滚动>预览滚动){
选中滚动(“向下”);
}否则{
检查滚动(“向上”);
}
prevScroll=newScroll;
});
功能检查滚动(方向){
var fromTop=$(window.scrollTop();
var windowHeight=Math.max($(window.height(),800);
var currentPlace=$(currentSection).offset().top;
如果(方向=“向下”){
如果(currentSection!=“.blogs”){
var nextPlace=$(currentSection).next().offset().top;
如果(从顶部+窗口高度>=下一个位置){
$(“html,body”).animate({scrollTop:nextPlace},1000);
setTimeout(函数(){
currentSection=getCurrentSection();
}, 1001);
}
}
}否则{
如果(currentSection!=“.about”){
var prevPlace=$(currentSection).prev().offset().top;

如果(从顶部我建议你去看看scrollMagic


我开发了一个小jquery脚本来回答这个问题。 通过上下触摸复制粘贴ans测试

var prevScroll=$(窗口).scrollTop();
var currentSection=getCurrentSection();
$(文档).keydown(函数(e){
var newScroll=$(window.scrollTop();
开关(e.which){
案例38://以上
检查滚动(“向上”);
打破
案例40://向下
选中滚动(“向下”);
打破
默认值:return;//退出其他键的处理程序
}
prevScroll=newScroll;
e、 preventDefault();//防止默认操作(滚动/移动插入符号)
});
;
功能检查滚动(方向){
var fromTop=$(window.scrollTop();
var currentSection=getCurrentSection();
var windowHeight=Math.max($(window.height(),800);
var currentPlace=$(currentSection).offset().top;
如果(方向=“向下”){
如果($(currentSection).next().length>0){
var nextPlace=$(currentSection).next().offset().top;
$(“html,body”).animate({scrollTop:nextPlace},1000);
$(currentSection).removeClass(“当前”)。
next().addClass('current');
}
}否则{
if($(currentSection).prev()长度>0){
var prevPlace=$(currentSection).prev().offset().top;
$(“html,body”).animate({scrollTop:prevPlace},1000);
$(currentSection).removeClass(“当前”)。
prev().addClass('current');
}
}
}
函数getCurrentSection(){
返回美元(“.current”);
}
正文{
保证金:0;
填充:0;
宽度:100%;
身高:100%;
位置:绝对位置;
}
身体部位{
宽度:100%;
身高:100%;
框大小:边框框;
最大高度:800px;
}
身体部位:第n个孩子(1){
背景:灰色;
}
身体部位:第n个孩子(2){
背景:红色;
}
身体部位:第n个孩子(3){
背景:黄色;
}
身体部位:第n个孩子(4){
背景:青色;
}
主体部分[类别=当前]{
边框:2倍实心#000;
}

测试卷轴

这是针对视差的,我看不到可以在一个滚动中从一个部分滚动到另一个部分的东西…你不能,因为每次触发事件时都会调用滚动事件ob文档。你可以设置间隔和布尔值来告诉jquery滚动或不滚动(代码和滚动事件的唯一方式).这是工作,但我需要的脚本,将与滚动工作,而不是与按下向上和向下。。。
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";
    }
}