Javascript 什么';在下拉菜单中停止页面滚动的最佳方式是什么

Javascript 什么';在下拉菜单中停止页面滚动的最佳方式是什么,javascript,html,css,Javascript,Html,Css,我在手机上有一个下拉菜单,当我打开菜单时,页面在顶部滚动 解决这个问题的最好办法是什么 尝试: 函数myFunction(x){ x、 切换(“更改”); document.body.classList.toggle(“body溢出”); } 没用 添加css: .body-overflow { overflow: hidden; } 没用 我意识到有两个重叠的可触摸或可滚动区域。触摸菜单区域可以将页面移到其后面。那么,是否有一种创建属性z索引的方法 我可以想出一些方法来解决这个问题

我在手机上有一个下拉菜单,当我打开菜单时,页面在顶部滚动

解决这个问题的最好办法是什么

尝试:


函数myFunction(x){
x、 切换(“更改”);
document.body.classList.toggle(“body溢出”);
}
没用

添加css:

.body-overflow {
   overflow: hidden;
}
没用


我意识到有两个重叠的可触摸或可滚动区域。触摸菜单区域可以将页面移到其后面。那么,是否有一种创建属性z索引的方法

我可以想出一些方法来解决这个问题。一种方法是让你的顶部酒吧粘粘的。另一个选择是固定整个导航。您还可以尝试在展开菜单时关闭body元素的滚动。每种方法都有优点和缺点,您可能需要仔细研究它们,找出最适合您的方法。

您的链接指向
#
,这是链接到同一页面上某个元素的一种方法。一个空片段(
#
)链接到页面顶部,导致浏览器滚动。(如果链接到
#某节
,浏览器将滚动到ID为
某节
的元素)

因此,在您的情况下,您需要将单击处理程序更改为:

onclick="myFunction(this); return false;">
这会使事件处理程序的返回值返回false,从而向浏览器发出不应发生默认浏览器行为(滚动)的信号

您的代码,已修改:


函数myFunction(el){
el.classList.toggle(“更改”);
}
另一个问题(菜单下推页面内容)可以通过以下CSS解决:

#站点导航{
能见度:可见;
不透明度:1;
位置:固定;
排名:0;
左:0;
右:0;
z指数:999;
过渡:无;
转化:无;
}

共享菜单的代码请参见编辑的问题您的意思是位置:粘性?是的。我只是复制了你们写的东西,粘贴了下来,当菜单打开时,我还在滚动。。你看到了吗?右上方。在您链接的网站上,您当前正在调用
myFunction
两次。一次无
返回false。您应该删除第一个,因此您只有:
我应该删除哪一个?删除没有返回false的一个。应该只有一个
onclick
处理程序。div应该如下所示:
。现在看起来是这样的:
我到底应该删除什么?请写下我需要删除的内容。