我怎样才能在所有其他元素前面有一个透明的 <div>

How can I have a transparent <div> in front of every other element

所以我试图在页面顶部创建一个 div alpha:0 并有一个动画到 "darken" 网站的其余部分,顶部有一个弹出窗口.

虽然这在理论上听起来很容易做到,但我一直在摆弄位置 absolute/relative/fixed 来尝试实现这一点,但没有成功。

我现在拥有的是一个元素中的一个元素,我的问题是我无法将它带到网页的后面,即使使用 z-index。

在任何其他元素上设置透明 div 最简单的解决方案是什么? (弹出窗口除外)

我目前的代码:

<body>
    <div position="fixed" style="background-color: rgba(0, 0, 0, 1); border: 1px solid green; height: 100vh; width: 100vw; top:0; z-index: 10">
        <div position="absolute" class="header" id="header" style="border:1px solid green; background-color: white; height:30px; width:250px; top:0; z-index: -1"></div>
    </div>
</body>

将叠加层写在另一个 div 的下方,并将它们都放在 position: absolute; 中。如果您想要叠加层上方的任何内容,请使用相同的逻辑。在叠加层下方添加另一个 div。您也可以在叠加层中添加。

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

html,
body {
  height: 100%;
  min-height: 100%;
}
<body>

  <!-- your content -->
  <div class="header" id="header" style="position: absolute;border:1px solid green; background-color: white; height:30px; width:250px;">
  </div>

  <!-- the overlay -->
  <div style="position: absolute; background-color: rgba(0, 0, 0, 0.8); border: 1px solid green; height: 100%; width: 100%;">
  </div>

</body>

另请注意,我将 position: absolute; 移到了样式中。顺便说一句,你应该再次将它移动到 css 文件 :)

这里有一个有效的代码:

<body>
    <div style="position: fixed; display: block; z-index: 2;  height: 100vh; width: 100vw; background-color: transparent; top: 0px; left: 0px;"></div>
    <p id="objectInBackground">The text you want to hide</p>
</body>