javascript - 根据事件屏幕居中 DIV - jQuery

标签 javascript jquery css html

我正在使用此代码将 myDiv 置于事件屏幕的中心。 (取自Using jQuery to center a DIV on the screen)


$("#myDiv").css("position","absolute");
$("#myDiv").css("top", Math.max(0, (($(window).height() - $("#myDiv").outerHeight()) / 2) + $(window).scrollTop()) + "px");
$("#myDiv").css("left", Math.max(0, (($(window).width() - $("#myDiv").outerWidth()) / 2) + $(window).scrollLeft()) + "px");

如果页面在浏览器窗口中加载并正确地将 myDiv 居中到事件屏幕(忽略页面的长度,无论我有很多向下或向上滚动),代码工作完美。

但是,当页面在 iframe 中加载时,代码无法按预期工作,而是根据内容的完整长度(而非事件屏幕)将 DIV(垂直)居中。因此,如果我在屏幕顶部并且页面长度为 3000px,那么代码将在 1500px 处显示 myDiv,就像在浏览器窗口中加载页面一样,myDiv 将根据当前事件屏幕显示/滚动位置。

我想根据当前事件屏幕/滚动条将 div 居中。无论页面是在浏览器窗口中加载还是在 iframe 中加载。 有帮助吗?

提前致谢

最佳答案

试试这个纯 CSS 解决方案:

#myDiv {
  position: fixed;
  top: 50%;
  left: 50%;
  -webkit-transform: translate(-50%, -50%);
  -moz-transform: translate(-50%, -50%);
  transform: translate(-50%; -50%);
}

此代码将 #myDiv 的左上角移动到视口(viewport) X 轴和 Y 轴的 50%。使用具有负值的 translate,将 #myDiv 向后移动其自身宽度的 50% 以及 X 轴和 Y 轴。

旧版浏览器不支持 CSS3 变换,请记住这一点。

关于javascript - 根据事件屏幕居中 DIV - jQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20993316/

相关文章:

javascript - 检测重叠元素中的悬停,同时允许所有指针操作

javascript - 将 json 对象从 Android/iOS native 传递到 javascript

javascript - 从外部调用jquery函数内的变量

Jquery IE8以下滚动脚本错误

javascript - 将 swf 嵌入 html 页面

javascript - 如何最好地预安装或预加载或缓存 JavaScript 库来优化性能?

javascript - Selenium 关于 loadTimeout 的屏幕截图

javascript - 修复加载 2 Favicon 或 Tab 图标

css - 没有调整大小的下拉列表/选择框箭头

android - Android 中保存文件的基本 URL