我在这个网站和其他网站上查看过很多其他问题。他们遇到了同样的问题,但他们的解决方案都没有为我工作。我看到的最常见的解决方案是从#
标记的href
属性中删除a
,但我的模式会在点击div时打开,而其他情况则有不同的情况,他们适合我的情况。
当我向下滚动并单击div以打开模态时,会发生模态打开。在此之前,我遇到了一个问题,当我打开我的模态时,又添加了另一个滚动条,根据我上一个问题的答案,它说要这样做:
body.modal-open {
overflow: hidden !important;
}
我做了它并且它有效但现在当我打开它时,背景滚动到顶部。我知道这是因为position: fixed
属性而发生的。我可能需要为它指定top
属性以保持其滚动位置,但每次,顶部偏移都会发生变化,因此它们对于top
属性来说不是常量最高值。
我寻找找出页面的滚动偏移量,发现我们可以使用window.pageYOffset
来计算用户滚动背景的程度。我尝试将pageYOffset
的值记录到控制台:
window.onscroll = function() {
console.log(window.pageYOffset);
}
但是每当我滚动它时,它会不断地将0
记录到控制台。
我现在不知道如何解决这个问题。请帮忙。感谢。
答案 0 :(得分:0)
更改
body.modal-open {overflow: hidden!important;}
到
body.modal-open { overflow: auto; }
然后,您需要将锚点从<a href="#">
更改为<a href="javascript:void(0)">
或更改为正确的锚点,而不仅仅是页面顶部。
答案 1 :(得分:0)
我想我终于理解了你的意思。您点击类别链接打开模式,对吗?
如果是这样,问题是你周围有一个空链接<a href="#">
,如果href
为空,浏览器的默认行为是滚动到顶部。
例如,如果您将链接的href
更改为<a href="http://stackoverflow.com">
,则不会滚动到顶部,但当然会离开您的网站。
正如Tom已经说过的那样,您也可以将href
更改为<a href="javascript:void(0)">
,但它需要的不是#
,否则默认会滚动到顶部。
或您可以添加一个简单的jQuery脚本,但为此您需要为此类的每个链接指定一个特定的类,如下所示:
<a class="modal_popup" href="#">
并添加此脚本:
$('.modal_popup').click(function(e) {
e.preventDefault();
});
或您只需编写<a href="#!">
,在哈希键后添加您喜欢的任何字符,只要它在您的DOM中不存在ID
。