【工作中的bug】绝对定位元素被相对定位元素覆盖的问题

82 阅读1分钟

image.png

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no" />
    <title>Document</title>
    <style>
      .absolute {
        position: absolute;
        width: 100px;
        height: 100px;
        background: green;
      }
      .relative {
        position: relative;
        background: #555;
        width: 100%;
        height: 50px;
      }
      .content {
        position: relative;
        width: 200px;
        height: 200px;
        background-color: red;
      }
    </style>
  </head>
  <body>
    <div class="content">
      <div class="absolute">absolute</div>
      <div class="relative">
        relative
      </div>
    </div>
  </body>
</html>
<div class="content">
  <div class="absolute">absolute</div>
  <div class="relative">
    relative
  </div>
</div>

解决方式:只需要将absolute元素移到relative下面就行了。

原因:同z-index层级的(定位)元素会根据元素出现的先后顺序层叠。

不含 z-index 的堆叠: developer.mozilla.org/zh-CN/docs/…

<div class="content">
  <div class="relative">
    relative
  </div>
<div class="absolute">absolute</div>
</div>