我正在尝试在打开对话框时从页面中删除垂直滚动,它会发生jQuery UI模型对话,但我不认为这是相关的。
我正在做的是:
var scrollTop = $(window).scrollTop();
$("html, body").css({ "overflow-y": "hidden", "margin-top": (0-scrollTop) + "px" });
了解页面的滚动位置,然后将其设置为页面顶部的负边距,同时隐藏滚动区域外的垂直内容。
此代码正确地将负边距作为内嵌样式写入html和body标记:
<html style="margin-top: -420px; overflow-y: scroll;" xmlns="http://www.w3.org/1999/xhtml">
<head></head>
<body style="margin-top: -420px; overflow-y: scroll;">
</body>
</html>
然而,它对页面的内容没有任何影响,它仍然可以很好地与窗口顶部齐平。
有谁知道这是为什么?
修改 基于下面的评论,我决定切换代码,为页面添加一个正边距,看看它有什么效果,假设它会在我的页面顶部添加一大块空白空间。
它实际上做的是首先实现我正在寻找的东西。
我现在拥有的是:
var scrollTop = $(window).scrollTop();
$("html, body").css({ "overflow-y": "hidden", "margin-top": (scrollTop) + "px" });
它有效,删除垂直滚动条并保留滚动位置。
任何人都可以解释为什么当逻辑表明需要负数时,正偏移是有效的吗?