Css 简明教程

CSS - z-index Property

CSS z-index 属性用于在 web 页面中重叠相同层叠上下文中时控制元素的层叠顺序。z-index 值较高的元素显示在值较低的元素前面。

以下图表演示了作为参考的 z-index 布局:

z index

z-index 属性可以与其他定位元素内的 positioned 元素一起使用。

Possible Values

  1. auto − 默认值。该堆叠顺序等于父元素的堆叠顺序。

  2. <Integer> − 正或负整数。将元素堆叠层级设为此给定值。

Applies to

所有定位元素。

DOM Syntax

object.style.zIndex = "2";

CSS z-index - auto Value

CSS z-index: auto 将元素的 z-index 设置为其父元素的堆叠顺序。是 z-index 属性的默认值。

<html>
<head>
<style>
   .box1 {
      position: absolute;
      height: 200px;
      width: 280px;
      background-color: #f0baba;
      z-index: auto;
      text-align: center;
      padding: 3px;
      left: 10px;
      top: 10px;
   }
   .box2 {
      position: absolute;
      height: 120px;
      width: 200px;
      background-color: #eae98f;
      z-index: 1;
      text-align: center;
      padding: 5px;
      margin: 20px;
      left: 30px;
      top: 30px;
   }
   p {
      margin-top: 250px;
   }
</style>
</head>
<body>
   <p>The element with z-index value of auto appears behind the element with the z-index value of 1.</p>
   <div class="box1">
      <span>CSS z-index: auto</span>
      <div class="box2">
         <span>CSS z-index: 1</span>
      </div>
   </div>

</body>
</html>

CSS z-index - with Positive Integer

CSS z-index 属性可以具有正整数值。堆叠顺序中具有较大整数值的元素将显示在值较低的元素的上方。

<html>
<head>
<style>
   .box1 {
      position: absolute;
      height: 200px;
      width: 280px;
      background-color: #f0baba;
      z-index: 1;
      text-align: center;
      padding: 3px;
      left: 10px;
      top: 10px;
   }
   .box2 {
      position: absolute;
      height: 140px;
      width: 220px;
      background-color: #eae98f;
      z-index: 2;
      text-align: center;
      padding: 5px;
      margin: 10px;
      left: 30px;
      top: 30px;
   }
   .box3 {
      position: absolute;
      height: 90px;
      width: 160px;
      background-color: #b7c8ae;
      z-index: 3;
      text-align: center;
      padding: 5px;
      margin: 20px;
      left: 50px;
      top: 50px;
   }
   p {
      margin-top: 250px;
   }
</style>
</head>
<body>
   <p>The element with z-index value of 1 appears behind the element with the z-index value of 2 and 3.</p>
   <div class="box1">
      CSS z-index: 1
   </div>
   <div class="box2">
      CSS z-index: 2
   </div>
   <div class="box3">
      CSS z-index: 3
   </div>
</body>
</html>

CSS z-index - With Negative Integer

还可以对 z-index 属性使用负整数。具有负 z-index 值的元素将堆叠在具有较高 z-index 值的元素下方。

<html>
<head>
<style>
   .box1 {
      position: absolute;
      height: 200px;
      width: 280px;
      background-color: #f0baba;
      z-index: -3;
      text-align: center;
      padding: 3px;
      left: 10px;
      top: 10px;
   }
   .box2 {
      position: absolute;
      height: 140px;
      width: 220px;
      background-color: #eae98f;
      z-index: -2;
      text-align: center;
      padding: 5px;
      margin: 10px;
      left: 30px;
      top: 30px;
   }
   .box3 {
      position: absolute;
      height: 90px;
      width: 160px;
      background-color: #b7c8ae;
      z-index: -1;
      text-align: center;
      padding: 5px;
      margin: 20px;
      left: 50px;
      top: 50px;
   }
   p {
      margin-top: 250px;
   }
</style>
</head>
<body>
   <p>The element with z-index value of -3 appears behind the element with the z-index value of -2 and -1.</p>
   <div class="box1">
      CSS z-index: -3
   </div>
   <div class="box2">
      CSS z-index: -2
   </div>
   <div class="box3">
      CSS z-index: -1
   </div>
</body>
</html>

CSS z-index - With Sticky Position

以下示例演示了 z-index 属性如何用于控制 position: sticky 属性的元素的堆叠顺序,这样它们将在页面滚动时保持固定 −

<html>
<head>
<style>
   .box1 {
      position: sticky;
      height: 200px;
      width: 280px;
      background-color: #f0baba;
      z-index: 1;
      text-align: center;
      padding: 3px;
      margin: 10px;
      left: 10px;
      top: 80px;
   }
   .box2 {
      position: sticky;
      height: 140px;
      width: 220px;
      background-color: #eae98f;
      z-index: 2;
      text-align: center;
      padding: 5px;
      margin: 10px;
      left: 40px;
      top: 200px;
   }
   .box3 {
      position: sticky;
      height: 90px;
      width: 160px;
      background-color: #b7c8ae;
      z-index: 3;
      text-align: center;
      padding: 5px;
      margin: 10px;
      left: 70px;
   }
</style>
</head>
<body>
   <p>Move cursor upward to see the effect.</p>
   <div class="box1">
      CSS z-index: 1
   </div>
   <div class="box2">
      CSS z-index: 2
   </div>
   <div class="box3">
      CSS z-index: 3
   </div>
</body>
</html>

CSS z-index - With Fixed Position

以下示例演示了 z-index 属性如何用于使元素在用户向下滚动时保持在内容顶部,即使它具有 position: fixed 属性 −

<html>
<head>
<style>
   .container {
      position: relative;
      height: 350px;
   }
   .box1 {
      position: fixed;
      height: 200px;
      width: 280px;
      background-color: #f0baba;
      z-index: -3;
      text-align: center;
      padding: 3px;
      left: 10px;
      top: 10px;
   }
   .box2 {
      position: fixed;
      height: 140px;
      width: 220px;
      background-color: #eae98f;
      z-index: -2;
      text-align: center;
      padding: 5px;
      margin: 10px;
      left: 30px;
      top: 30px;
   }
   .box3 {
      position: fixed;
      height: 90px;
      width: 160px;
      background-color: #b7c8ae;
      z-index: -1;
      text-align: center;
      padding: 5px;
      margin: 20px;
      left: 50px;
      top: 50px;
   }
   h3 {
         margin-top: 320px;
   }
</style>
</head>
<body>
   <h3>Scroll down the content to see the effect.</h3>
   <div class="container">
      <div class="box1">
         CSS z-index: -3
      </div>
      <div class="box2">
         CSS z-index: -2
      </div>
      <div class="box3">
         CSS z-index: -1
      </div>
   </div>
</body>
</html>

CSS z-index - With Static Position

以下示例说明 z-index 属性不影响具有 * position: static* 属性的元素的堆叠顺序 −

<html>
<head>
<style>
   .box1 {
      position: static;
      height: 200px;
      width: 280px;
      background-color: #f0baba;
      z-index: 1;
      text-align: center;
      padding: 3px;
      margin: 10px;
      left: 10px;
      top: 10px;
   }
   .box2 {
      position: static;
      height: 140px;
      width: 220px;
      background-color: #eae98f;
      z-index: 2;
      text-align: center;
      padding: 5px;
      margin: 10px;
      left: 30px;
      top: 30px;
   }
   .box3 {
      position: static;
      height: 90px;
      width: 160px;
      background-color: #b7c8ae;
      z-index: 3;
      text-align: center;
      padding: 5px;
      margin: 10px;
      left: 50px;
      top: 50px;
   }
</style>
</head>
<body>
   <p>The z-index property has no effect on the stacking order of elements if the position property is set to static.</p>
   <div class="box1">
      CSS z-index: 1
   </div>
   <div class="box2">
      CSS z-index: 2
   </div>
   <div class="box3">
      CSS z-index: 3
   </div>
</body>
</html>

CSS z-index - With Relative Position

该示例说明当元素具有 position: relative 属性时, z-index 属性会将元素相对于其在文档流中原始位置进行定位。

<html>
<head>
<style>
   .box1 {
      position: relative;
      height: 200px;
      width: 280px;
      background-color: #f0baba;
      z-index: 1;
      text-align: center;
      padding: 3px;
      margin: 10px;
      left: 10px;
      top: 10px;
   }
   .box2 {
      position: relative;
      height: 140px;
      width: 220px;
      background-color: #eae98f;
      z-index: 2;
      text-align: center;
      padding: 5px;
      margin: 10px;
      left: 30px;
      top: 30px;
   }
   .box3 {
      position: relative;
      height: 90px;
      width: 160px;
      background-color: #b7c8ae;
      z-index: 3;
      text-align: center;
      padding: 5px;
      margin: 10px;
      left: 50px;
      top: 50px;
   }
</style>
</head>
<body>
   <p>The z-index property positions the element relative to its original position if position is relative.</p>
   <div class="box1">
      CSS z-index: 1
   </div>
   <div class="box2">
      CSS z-index: 2
   </div>
   <div class="box3">
      CSS z-index: 3
   </div>
</body>
</html>