1、非定位元素:

z-index 属性只对具有定位(position: relative;、position: absolute;、position: fixed;)的元素有效。如果一个元素没有设置定位属性(默认是 position: static;),z-index 将不会生效。

解决方案: 给元素添加适当的定位属性,例如 position: relative;,使 z-index 生效。

2、层叠上下文:

某些 CSS 属性或值会创建新的层叠上下文,这可能影响元素的层叠顺序。

解决方案: 检查是否有属性或值(如 opacity、transform、filter 等)创建了新的层叠上下文,根据需求调整元素的层叠顺序。

举例:

<div class="parent">
  <div class="child"></div>
</div>
 
<style>
    .parent {
      /* 父元素设置了一些属性,创建了新的层叠上下文 */
      /* 这可能会影响子元素的层叠顺序 */
      width: 200px;
      height: 200px;
      background-color: #f0f0f0;
      opacity: 0.8; /* 创建了新的层叠上下文 */
    }
 
    .child {
      /* 子元素的 z-index 在此处设置可能会受到父元素的影响 */
      /* 可能无法达到预期的层叠效果 */
      width: 100px;
      height: 100px;
      background-color: #ff0000;
      z-index: 1;
    }
</style>

3、层叠顺序冲突:

如果元素的 z-index 值没有正确设置,可能会导致层叠顺序冲突,使 z-index 失效。比如:两个子盒子都设置为z-index: 1,就会冲突。

4、浮动元素:

对于浮动元素,z-index 可能会失效,因为浮动元素会创建新的层叠上下文,并且浮动元素之间的层叠顺序由它们在 HTML 中的顺序决定。

解决方案: 考虑去除浮动属性,或者使用其他布局技术,如 Flexbox 或 Grid。

5、不支持的 z-index 值:

z-index 只接受整数值,如果使用其他类型的值,可能会导致 z-index 失效。

解决方案: 确保 z-index 的值为整数。