html - 垂直居中绝对div?
问题描述
我有一个 div,它是一个在屏幕中央打开的小模式。它曾经是fixed
定位的,但由于移动浏览器不支持absolute
固定,所以我做了它。
当用户向下滚动时,此模态位置将是错误的,因为它按预期随页面滚动。我需要这种fixed
行为。
如何确保无论我向下滚动多少,模态都保持在中间?
.whiteBox{
visibility: hidden;
position:absolute;
overflow: hidden;
width: 94vw;
height: auto;
background-color: rgba(255,255,255,1.0);
left: 100vw;
top:7%;
border-radius: 4vw;
opacity: 0.0;
transition: all 0.55s ease;
z-index: 1000;
}
.whiteBox.show{
left: 3vw;
opacity: 1.0;
visibility: visible;
}
身体relative
定位。
我正在考虑的一个选择是在 JS 上将 scrollTop 添加到他的top
样式中。但是由于它是从右到左的动画,如果我动态添加顶部位置,动画会看起来很糟糕。
div.style.top=50+document.body.scrollTop +"px";
解决方案
这是我的解决方案,适用于任何在移动设备上苦苦挣扎的人:
当用户滚动时,我想重新定位所有模态,以便它们准备好动画,所以当滚动停止时,我会更新它们的顶部位置。
window.onscroll = function() {adjustmodals()};
var isScrolling = null;
function adjustmodals() {
window.clearTimeout( isScrolling );
isScrolling = setTimeout(function() {
//lop all modals
for (key in menuBox){
var div = document.getElementById(key);
console.log(div);
div.style.top=50+document.body.scrollTop +"px";
}
}, 66);
}
推荐阅读
- angular - 如果使用 [].concat() 组合多个数组,Angular @NgModule 导入不会看到模块
- numpy - numpy 点积的爱因斯坦符号
- c# - 使用 MS Graph 进行机器人身份验证 - 如何在不手动输入的情况下动态读取 6 位代码
- c# - c#aspx如何在页面上执行拆分
- python - Python3 线程还是 aiohttp?
- c# - 将部分视图转换为 HTML 2019
- ruby - 使用 ruby Octokit,我如何返回自指定日期以来创建的所有拉取请求
- javascript - 在我重新启动应用程序之前,导航抽屉不会刷新
- c - SDL2 渲染在基于 Rockchip 的板上不超过 30 FPS
- c# - 具有 1 对 1 关系实体框架的抽象类