Javascript 将窗口滚动条设置为包含内部div,并对正文的其余部分禁用它

Javascript 将窗口滚动条设置为包含内部div,并对正文的其余部分禁用它,javascript,html,css,scrollbar,Javascript,Html,Css,Scrollbar,我尝试显示一些类似于在一些著名网站上所做的事情:在叠加div中显示图片+注释文本,因此当我这样做时,我喜欢禁用正文其余部分的滚动,并且窗口滚动条调整为只允许我在叠加div中滚动 我将所有页面内容都放在一个名为id=bodyDiv的div中,因此一个糟糕的解决方案可能是将bodyDiv的高度设置为“100%”,并将覆盖div直接附加到body下面。问题是,当我将页面内容滚动到某个位置,然后希望在叠加div bodyDiv中显示图像时,滚动返回原始位置scroll=0 你能给我一个基于JavaScr

我尝试显示一些类似于在一些著名网站上所做的事情:在叠加div中显示图片+注释文本,因此当我这样做时,我喜欢禁用正文其余部分的滚动,并且窗口滚动条调整为只允许我在叠加div中滚动

我将所有页面内容都放在一个名为id=bodyDiv的div中,因此一个糟糕的解决方案可能是将bodyDiv的高度设置为“100%”,并将覆盖div直接附加到body下面。问题是,当我将页面内容滚动到某个位置,然后希望在叠加div bodyDiv中显示图像时,滚动返回原始位置scroll=0

你能给我一个基于JavaScript和CSS的解决方案吗

我没有处理这个问题的初始代码。例如,如果我们看到facebook出版物,我们会看到一个浮动的“div”(我想),图片(较大尺寸)在左边,评论在右边,浏览器滚动条会调整,一旦我们关闭出版物(该div),就只允许在该div内滚动滚动条恢复到以前的状态(位置也相同)

这就是我想要实现的目标。我可以通过以下方式部分实现将滚动条调整到div以覆盖div:

document.getElementById("bodyDiv").style.overflow = "hidden";
document.getElementById("bodyDiv").style.height = "100%";
然后返回正常滚动:

    document.getElementById("bodyDiv").style.height = "auto";
    document.getElementById("bodyDiv").style.overflow = "auto";

但在关闭出版物后,正文(正常)滚动返回到0。在查看页面之前,我想将滚动条保留在原来的位置。

要准确地选择您想要的内容有点困难,但听起来您显然超出了基于浏览器的栏的预期范围

你为什么不调查一下这样的事情?它是一个jQuery插件,因此您可以极大地控制它的工作方式


我用它做了一些非常丰富的工作:条件样式、手动定位等等……

我找到了一个解决方案,它可以正常工作,但有一个例外我将在最后提到。在显示图像之前,首先保存滚动位置:

scrollPos = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
document.getElementById("bodyDiv").style.overflow = "hidden";
document.getElementById("bodyDiv").style.height = "100%";
然后在关闭叠加div时将窗口滚动到保存的位置:

document.getElementById("bodyDiv").style.height = "auto";
document.getElementById("bodyDiv").style.overflow = "auto";
window.scrollTo(0, scrollPos);
这当然可以调整为支持x和y滚动。它工作得非常好(卷轴以像素的精度设置),有一点是,当图片显示在屏幕上时,边缘仍然部分可见的背景似乎有点偏移。
我不知道这是什么原因;除此之外,我对结果感到满意。

提供一些代码供我们使用,您的解释对我来说有些模糊。另外,如果没有代码,我就无法真正理解你的意图……这里那些愚蠢的人是谁,他们只是在没有评论或解决方案的情况下投了反对票。。谢谢你,直到现在我都能免费编写我的jquery代码。我不知道这个决定是好是坏。作为一种选择,我甚至在我的内部div中添加了一些漂亮的滚动条。