Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.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_Scroll_Jquery Animate - Fatal编程技术网

Javascript 为什么';我的页面滚动功能是否按预期工作?

Javascript 为什么';我的页面滚动功能是否按预期工作?,javascript,jquery,html,scroll,jquery-animate,Javascript,Jquery,Html,Scroll,Jquery Animate,我正在工作的网站,必须从下到上滚动。因此,当页面加载时,它显示文档的结尾。这是一种反向滚动 菜单固定在底部。当我单击菜单中的链接时,我使用Jquery animate滚动到我想要查看的元素。它正在工作,但出于某种原因,如果我单击同一个链接或另一个链接,它将返回底部,就像切换动画一样,而不是返回给定的位置 这是我的密码 var winHeight=$(窗口).innerHeight(); $(文档).ready(函数(){ $(“.panel”).高度(winHeight); $(“body”)

我正在工作的网站,必须从下到上滚动。因此,当页面加载时,它显示文档的结尾。这是一种反向滚动

菜单固定在底部。当我单击菜单中的链接时,我使用Jquery animate滚动到我想要查看的元素。它正在工作,但出于某种原因,如果我单击同一个链接或另一个链接,它将返回底部,就像切换动画一样,而不是返回给定的位置

这是我的密码

var winHeight=$(窗口).innerHeight();
$(文档).ready(函数(){
$(“.panel”).高度(winHeight);
$(“body”).height(winHeight*$(“panel”).length);
});
window.addEventListener('resize',函数(事件){
$(“.panel”).height($(window.innerHeight());
});
$(窗口).on('scroll',function(){
$(“.panelCon”).css('bottom',$(window.scrollTop()*-1);
});
var-previous\u-element\u-pos=null;
$(文档).on(“单击“,”.menulink”,函数(事件){
var\u docHeight=(document.height!==未定义)?document.height:document.body.offsetHeight;
控制台日志(“上一个元素位置:+上一个元素位置”);
事件。预防违约(事件);
var window_height=$(window.height();
var window_top_position=$(window.scrollTop();
变量窗口底部位置=(窗口顶部位置+窗口高度);
var link_id=($(this.attr(“id”));
var$container=$(“#”+链接_id+“_面板”);
var container_height=$container.outerHeight();
var container_top_position=$container.offset().top;
变量容器底部位置=(容器顶部位置+容器高度);
console.log(“视图中的原始位置:+容器顶部位置”);
如果((容器底部位置>=窗口顶部位置)&&
(容器顶部位置0){
log(“位置为正:”+($($container.offset().top)*1);
$('html,body')。设置动画({
scrollTop:($($container.offset().top-上一个元素位置)*1
}, 5000);
上一个元素\u pos=$($container).offset().top*1
} 
});
/*用于加载屏幕图像*/
梅因先生{
位置:相对位置;
身高:100%;
背景图像:url('../images/maiimg.png');
背景大小:100%100%;
背景重复:无重复;
}
/*用于NAVBAR引导程序,去除红色边框*/
navbar先生{
-webkit边界半径:0;
-moz边界半径:0;
边界半径:0;
}
/*用于导航条粘贴*/
.粘贴{
底部:0;
宽度:100%;
z指数:9999!重要;
}
.粘贴+.容器液体{
填充顶部:70px;
}
/*用于线路闭塞显示*/
1.路线闭塞{
边框:1px实心#000;
宽度:200px;
高度:400px;
显示:内联块;
保证金:5px;
}
梅努利克先生{
字体系列:arial;
}
身体{
背景色:#111318;
保证金:0;
填充:0;
}
B.panelCon{
位置:固定;
底部:0;
左:0;
宽度:100%;
}
.小组{
宽度:100%;
背景色:#111318;
}
.面板h1{
宽度:100px;
位置:相对位置;
显示:块;
保证金:0自动;
文本对齐:居中;
最高:50%;
}

RouteRatex
接触
媒体
贮藏
路线
指数
切换导航

试试这个。它对我有用。你的项目很酷

可以使用
element.getBoundingClientRect()
获取到元素的距离。 你所需要的只是滚动一个与这个距离相等的像素量,不要忘记更新新的位置。 以下是单击事件处理程序的返工

       var previous_element_pos = null;

       //menu click events
        $(document).on("click", ".menulink", function (event) {

        //get selected panel id
        var link_id = ($(this).attr("id"));
        var $container = link_id + "_panel";

        //get distance to the selected panel
        var scrollDistance = document.getElementById($container).getBoundingClientRect().top;

        //scroll to new position
        $('html, body').animate({
            scrollTop: (scrollDistance + previous_element_pos) * -1
        }, 5000);

        //update previous position
        previous_element_pos = scrollDistance + previous_element_pos;

    });

开发的专业提示:1.使用
console.log
而不是
alert
。2.打开控制台。3.稍后谢谢:)我已将其更改为console log,但仍然无法正常工作。我认为问题来自于位置的数学Jeremy的建议并不是为了解决您的问题。这是非常好的发展建议。提醒是浪费你的注意力和时间。这有什么作用?它如何回答这个问题?不要只是脱口而出代码。解释你自己@罗布:谢谢你富有启发性的评论。我正在编辑它。好多了!谢谢你,谢谢你,安德尔,这很有效,你帮了我很多数学知识!非常适合移动到