javascript - 将滚动页面上的 div 居中

标签 javascript jquery html css

我有以下代码:

<div id="overlay" style="
    display: none;
    border: solid #aa0 10px;
    width: 75vh;
    height: 80vh;
    z-index: 650;
    position: absolute;
    left:50%; top: 50%;
    transform: translate(-50%, -50%)"
>

它一开始是隐藏的,但如果我点击特定的屏幕元素,我有一些 jquery 代码用 show() 显示它。

如果页面未滚动,这将完美居中,但是,如果当用户单击其中一个屏幕元素时页面滚动,叠加层将显示为居中,就好像页面未滚动一样。 (即,即使不在 View 中,它也会位于页面顶部的中央)。

如何解决这个问题,无论页面滚动到哪里,它都位于视口(viewport)中心?

最佳答案

您需要将位置从absolute 更改为fixed

<div id="overlay" style="
    display: none;
    border: solid #aa0 10px;
    width: 75vh;
    height: 80vh;
    z-index: 650;
    position: fixed;
    left:50%; top: 50%;
    transform: translate(-50%, -50%)"
>

关于javascript - 将滚动页面上的 div 居中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34648291/

相关文章:

javascript - JavaScript 函数中的 from = 是什么意思?

javascript - HTML5 文件上传 - 卡在非常大的文件上 - 仅限 Firefox

html - 如何制作带有左侧导航的两栏页面?

javascript - 我怎样才能把这张凭证打印成A4纸?

javascript - React Router Link 不适用于 LeafletJS

javascript - BootstrapVue 访问 slot 模板中的 b-table 行数据

javascript - 在 id attr 中的点击函数中传递参数

javascript - 如何使用 Javascript 获取 cordova 插件/项目的配置首选项?

javascript - jquery,不能在回调函数中进行ajax调用

html - 无法在导航菜单中调整子 UL 的位置