javascript - 无论屏幕尺寸如何,动态完美居中灯箱

标签 javascript html css

我有一个弹出式 div,它能够根据文件附件流式传输视频或显示文档/图像。

我遇到的问题是确保它在桌面和移动浏览器/应用程序中垂直和水平居中。

我一直在尝试不同的属性,但就好像我改变了我已有的属性,突然间它就在页面之外了。

if(extension === "mp4"){
    document.body.innerHTML += '<div id="light"><a class="boxclose" id="boxclose" onclick="lightbox_close();">x</a><video id="VideoLauncher" width="600" controls controlsList="nodownload"><source src="'+file+' " type="video/mp4"><!--Browser does not support <video> tag --></video></div><div id="fade" onClick="lightbox_close();"></div>'
}
if(extension === "jpg"){
    document.body.innerHTML += '<div id="light"><a class="boxclose" id="boxclose" onclick="lightbox_close();">x</a><img id="VideoLauncher" width="600"  src="'+file+'" onclick="lightbox_close()"></img></div><div id="fade" onClick="lightbox_close();"></div>'
}
if(extension === "pdf" || extension === "doc" || extension === "docx"){
    document.body.innerHTML += '<div id="light"><a class="boxclose" id="boxclose" onclick="lightbox_close();">x</a><iframe src="https://docs.google.com/gview?url='+file+'&embedded=true" style="height:800px; width:600px;" frameborder="0"></iframe></div><div id="fade" onClick="lightbox_close();"></div>'
}

var LightEle = document.querySelector("#light");
var FadeEle = document.querySelector("#fade");
var BoxCloseEle = document.querySelector("#boxclose");

LightEle.style.cssText = 'display: none;  position: absolute; top: 50%;  left: 50%;  max-width: 600px;  max-height: 100%px;  margin-left: -200px;  margin-top: -180px;  border: 2px solid #FFF;  background: #FFF;  z-index: 1002;  overflow: visible;';
FadeEle.style.cssText = 'display: none;  position: fixed;  top: 0%;  left: 0%;  width: 100%;  height: 100%;  background-color: black;  z-index: 1001;  -moz-opacity: 0.8;  opacity: .80;  filter: alpha(opacity=80);';

理想情况下,我正在寻找的样式会在水平和垂直方向上动态地将灯光元素居中,尽管灯光元素的大小会根据要显示的文件而有所不同。因此,我不能简单地对高度和宽度进行硬编码。

最佳答案

有两种方法可以做到这一点:

.lightbox {
  margin: 0 auto;
}

这仅在父组件内水平居中。如果您想要这样做,这是一种非常简单的方法。

如果没有,试试这个:

.lightbox {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

关于javascript - 无论屏幕尺寸如何,动态完美居中灯箱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57730116/

相关文章:

javascript - 单击取消按钮后清除选中的复选框

javascript - Angular js 缩小后出错。错误 : [$injector:unpr] Unknown provider: eProvider <- e <- makeErrorsDirective

JQuery 确认删除 onclick 问题

javascript - 更改悬停 html/css 后出现的背景图像的位置

javascript - 从 javascript 的列表中选择最多 x 个项目

c# - 在 HTML5 CSS 或 C#.NET 中裁剪图像

html - 内容正文中的图像重叠下拉菜单

javascript - 如何在每个新条目中包含日期/时间戳?

javascript - 使用冒号、分号等符号将变量传递给 javascript 函数

javascript - 如何清空变量/将变量恢复为未定义?