Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.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 基于顶部位置更新Div的类名_Javascript_Jquery_Css - Fatal编程技术网

Javascript 基于顶部位置更新Div的类名

Javascript 基于顶部位置更新Div的类名,javascript,jquery,css,Javascript,Jquery,Css,实际上,我正试图在Jquery中实现平滑滚动,我编写的任何代码似乎都可以正常工作,但我还想实现一个特性,当用户根据位置向下/向上滚动时,我的导航类将变为活动。下面的代码链接会让你对我所说的有更多的了解。我面临的问题是,即使我点击了下一个导航子元素,活动类也被设置为上一个元素。我有用户窗口。事实上这部分是从网上得到的。我真的不理解代码,这就是为什么我很难调试和修复它,所以如果有人能够修复它,如果你解释一下这段代码实际上在做什么,以及当前实现的问题是什么,那将是非常好的 JS $(文档).read

实际上,我正试图在Jquery中实现平滑滚动,我编写的任何代码似乎都可以正常工作,但我还想实现一个特性,当用户根据位置向下/向上滚动时,我的导航类将变为活动。下面的代码链接会让你对我所说的有更多的了解。我面临的问题是,即使我点击了下一个导航子元素,活动类也被设置为上一个元素。我有用户窗口。事实上这部分是从网上得到的。我真的不理解代码,这就是为什么我很难调试和修复它,所以如果有人能够修复它,如果你解释一下这段代码实际上在做什么,以及当前实现的问题是什么,那将是非常好的

JS

$(文档).ready(函数(){
var lastId,
页眉=$(“#页眉”),
topMenu=$(“#导航”),
topMenuHeight=topMenu.outerHeight()+标头.outerHeight()+25,
menuItems=topMenu.find(“a”),
//menuItems=topMenu.find(“a:not([href^='http://'],[href^='http://'])”,
scrollItems=menuItems.map(函数(){
var item=$($(this.attr(“href”));
if(item.length){return item;}
});
菜单项打开('click',函数(e){
e、 预防默认值();
_这个=这个;
var target=\u this.hash,
$target=$(target);
//menuItems.parent().removeClass(“活动”);
//$(_this.parent().addClass(“活动”);
$('html,body').stop().animate({
'scrollTop':($target.offset().top)-topMenuHeight+1
},900,“摆动”,功能(){
window.location.hash=目标;
});
});
$(窗口)。滚动(函数(){
var fromTop=$(this.scrollTop()+topMenuHeight;
var cur=scrollItems.map(函数(){
如果($(this).offset().top+20)
您最好使用某种插件来实现此效果。类似或会做的伎俩

< p>只要更新你的卷轴检查功能,让你的位置检查更灵活一些,让它考虑你在进入它之前进入一个小部分。在代码的第35行进行此更改-

if (($(this).offset().top - 50)< fromTop)
if($(this.offset().top-50)
工作演示-

您还可以通过实现此功能来改进UI-

可能是重复的。。
if (($(this).offset().top - 50)< fromTop)