为了账号安全,请及时绑定邮箱和手机立即绑定

无论屏幕大小如何,都可以动态地将灯箱完美居中

无论屏幕大小如何,都可以动态地将灯箱完美居中

慕尼黑8549860 2021-09-30 15:09:28
我有一个弹出式 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);';理想情况下,我正在寻找的是能够在水平和垂直方向上动态居中光元素的样式,尽管光元素的大小取决于要显示的文件。因此,我不能简单地对高度和宽度进行硬编码。
查看完整描述

3 回答

?
忽然笑

TA贡献1806条经验 获得超5个赞

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


.lightbox {

  margin: 0 auto;

}

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


如果没有,试试这个:


.lightbox {

  position: absolute;

  top: 50%;

  left: 50%;

  transform: translate(-50%, -50%);

}


查看完整回答
反对 回复 2021-09-30
?
三国纷争

TA贡献1804条经验 获得超7个赞

垂直和水平居中元素的流行方法是使用:


top: 50%;

left: 50%;

transform: translate( -50%, -50% );

您可以将其与绝对或固定定位一起使用。top并将left左上角移动到屏幕中心,同时translate( -50%, -50% )将元素移回左侧和元素宽度/高度的顶部 50%,将元素的中心放在页面的中心。


.box {

  position: fixed;

  top: 50%;

  left: 50%;

  transform: translate( -50%, -50% );

  

  /* For Demo */

  width: 75vw;

  height: 75vh;

  background-color: #ccc;

}

<div class="box"></div>


查看完整回答
反对 回复 2021-09-30
?
繁花如伊

TA贡献2012条经验 获得超12个赞

使用弹性盒:


main {

  background-color: teal;

}


.modal-container {

  display: flex;

  justify-content: center;

  align-items: center;

  width: 100%;

  height: 100%;

  position: absolute;

  top: 0;

  right: 0;

  bottom: 0;

  left: 0;

  background-color: gray;

}


.modal {

  display: block;

  max-width: 300px;

  width: 90%;

  max-height: 300px;

  height: 90%;

  background-color: white;

}

<main>

  <div class="modal-container">

    <div class="modal">

      <h2>yes</h2>


    </div>

  </div>

</main>


查看完整回答
反对 回复 2021-09-30
  • 3 回答
  • 0 关注
  • 198 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信