html - 如何使模态框在其父div之外打开

标签 html css

我正在父 div 内设置一个带有打开按钮的弹出模式,但当它打开时,它包含在 div 内,并且我希望它在所有 div 顶部打开。

我尝试将 z-index 设置为高于父 div,但似乎没有什么区别。我怀疑这与父 div 的位置有关,父 div 位于其父 div 内的绝对中间和中心位置。如果我从 div 中取出模式,它会像我需要的那样以全屏方式打开。

<div id="parent1" style="position:relative;height:100%;z-index:1;">
  <div id="parent2" style="position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;width:100%;z-index:2;">
    (modal, which is set to z-index:3)
  </div>
</div>

最佳答案

您已将 absolute div 包装在一个 relative div 内。这就是为什么它在里面。下面的代码片段将告诉您相对定位和绝对定位如何协同工作。

  .top {
  top: 50px;
  height: 100%;
  position: relative;
}

.relative {
  background: #dfdfdf;
  ) body {
    height: 100%;
  }
  .absolute {
    position: absolute;
    bottom: 0;
  }
<div class="relative top">
  <div class="absolute bottom">hey there</div>
</div>

div 应该一直向下,但不是,因为它被相对的 div 包裹着,如果删除相对类,那么 div 就会向下落。
对于覆盖整个页面的模式,请在任何 relative div 之外使用位置 fixedabsolute,甚至更好 -> 使用用于“响应速度非常快”模式的 Flexbox

document.getElementById('modal-Opener').onclick = function() {
  document.querySelector('.modal').classList.add("modalOpen");
}
body,
html {
  height: 100%
}

.modal {
  border-radius: 20px;
  height: 100px;
  background-color: #dfdfdf;
  width: 60%;
  color: #000;
  padding: 20px;
  display: none;
  position: relative;
  justify-content: center;
  -webkit-animation-name: animatetop;
  -webkit-animation-duration: 0.4s;
  animation-name: animatetop;
  animation-duration: 0.4s align-items:center;
}

.modalOpen {
  display: flex;
}

.flex {
  height: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
  align-self: center;
}

@-webkit-keyframes animatetop {
  from {
    top: -300px;
    opacity: 0
  }
  to {
    top: 0;
    opacity: 1
  }
}

@keyframes animatetop {
  from {
    top: -300px;
    opacity: 0
  }
  to {
    top: 0;
    opacity: 1
  }
}
<button id="modal-Opener">Open modal</button>
<div class='flex'>
  <div class='modal'>I am a modal</div>
</div>

关于html - 如何使模态框在其父div之外打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55924646/

相关文章:

javascript - 将 JavaScript 对象序列化为可用作片段标识符 (url#hash) 的最佳方法是什么?

javascript - jQuery .height() 增加高度,但不会降低高度

html - 试图让状态栏与文本内联

css - 响应式两个渐变对 Angular 线按钮

html - 位置为 :absolute to dynamically extend to bottom of viewport? 的 DIV

javascript - 我如何使用 javascript 和 php 在 $_GET 获取数组?

javascript - Android:从 HTML 代码获取链接(无标签/ID)

html - 图像垂直居中

Google 云端硬盘中的 CSS 样式表不再有效

css - 剪辑路径 : Black background instead of transparent