CSS3 Z—Index 详解

简介: CSS3 Z—Index 详解

 z-index属性规定元素的堆叠顺序,值越高就会显示在上面。

无定位

<style>
         .div0{
            height: 80px;
             width:100px;
         }
         div{
             height: 50px;
             width:60px;
         }
     </style>
  </head>
  <body>
      <div class="div0" style="background-color:green">
    <div class="div1" style="background-color:red">123</div>
    </div>
    <div class="div2" style="background-color:blue">456</div>
    <div class="div3" style="background-color:rgba(0, 0, 0, 0.801)">789</div>
  </body>

image.gif

image.gif编辑

div0 2 3都在按照块显示,可以看到div1在div0上面,子级会显示在父级上方。

有定位

<style>
         .div0{
            height: 80px;
             width:100px;
         }
         div{
             height: 50px;
             width:60px;
         }
         .div2{
             position:absolute;
         }
         .div3{
             position:absolute;
         }
     </style>
  </head>
  <body>
      <div class="div0" style="background-color:green">
    <div class="div1" style="background-color:red">123</div>
    </div>
    <div class="div2" style="background-color:blue">456</div>
    <div class="div3" style="background-color:rgba(0, 0, 0, 0.801)">789</div>
  </body>

image.gif

image.gif编辑

div2和div3设置的绝对定位,脱离标准流,排在后面写的div3在上面显示的,同级后者居上,

设置z-index

<style>
         .div0{
            height: 80px;
             width:100px;
         }
         div{
             height: 50px;
             width:60px;
         }
         .div2{
             z-index:  100;
             position:absolute;
         }
         .div3{
             position:absolute;
             z-index:  10;
         }
     </style>
  </head>
  <body>
      <div class="div0" style="background-color:green">
    <div class="div1" style="background-color:red">123</div>
    </div>
    <div class="div2" style="background-color:blue">456</div>
    <div class="div3" style="background-color:rgba(0, 0, 0, 0.801)">789</div>
  </body>

image.gif

image.gif编辑

div2比div3的z-index高,所以蓝色div2显示在上面。

混合显示

<style>
         .div0{
            height: 80px;
             width:100px;
         }
         div{
             height: 50px;
             width:60px;
         }
         .div2{
             z-index:  100;
             position:absolute;
         }
         .div3{
             position:absolute;
             z-index:  10;
         }
     </style>
  </head>
  <body>
    <div class="div2" style="background-color:blue">456</div>
    <div class="div3" style="background-color:rgba(0, 0, 0, 0.801)">789</div>
    <div class="div0" style="background-color:green">
        <div class="div1" style="background-color:red">123</div>
        </div>
  </body>

image.gif

image.gif编辑

由于div2 3 脱离标准流所以在上面  因为div2的z-index值高所以显示在最上面,依次分别是 div2 div3 div1 div0

再看下面这个

<style>
         .div0{
            height: 80px;
             width:100px;
         }
         div{
             height: 50px;
             width:60px;
         }
         .div2{
             z-index:  -1;
             position:absolute;
         }
         .div3{
             position:absolute;
             z-index:  -1;
         }
     </style>
  </head>
  <body>
    <div class="div2" style="background-color:blue">456</div>
    <div class="div3" style="background-color:rgba(0, 0, 0, 0.801)">789</div>
    <div class="div0" style="background-color:green">
        <div class="div1" style="background-color:red">123</div>
        </div>
  </body>

image.gif

image.gif编辑

可以看到红色显示出来了,这是为什么,静态定位不能修改div0 z-index的值,但不意味着div0没有值,它的值是0,当你修改其他元素的z-index值是负数小于 0是 div0自然就显示在了最外层,

现在的顺序是 div1 div0 div3 div2

能不能让里面的元素不显示在外层?

.div0{
            position:absolute;
            height: 200px;
             width:170px;
             z-index:100;
         }
         .div1{
            position:absolute;
            height: 80px;
             width:100px;
             z-index:-1;
         }
         /* div{
             height: 50px;
             width:60px;
         } */
         /* .div2{
             z-index:  -1;
             position:absolute;
         }
         .div3{
             position:absolute;
             z-index:  -1;
         } */
     </style>
  </head>
  <body>
    <!-- <div class="div2" style="background-color:blue">456</div>
    <div class="div3" style="background-color:rgba(0, 0, 0, 0.801)">789</div> -->
    <div class="div0" style="background-color:green">
        <div class="div1" style="background-color:red">123</div>
        </div>
  </body>

image.gif

image.gif编辑

div0和div1都有定位 div0z-index值大于div1,但是红色仍然是外层。

如果div0没有修改定位呢?

<style>
         .div0{
            height: 200px;
             width:170px;
         }
         .div1{
            position:absolute;
            height: 80px;
             width:100px;
             z-index:-1;
         }
         /* div{
             height: 50px;
             width:60px;
         } */
         /* .div2{
             z-index:  -1;
             position:absolute;
         }
         .div3{
             position:absolute;
             z-index:  -1;
         } */
     </style>
  </head>
  <body>
    <!-- <div class="div2" style="background-color:blue">456</div>
    <div class="div3" style="background-color:rgba(0, 0, 0, 0.801)">789</div> -->
    <div class="div0" style="background-color:green">
        <div class="div1" style="background-color:red">123</div>
        </div>
  </body>

image.gif

image.gif编辑

div0显示在了外面,要注意设置定位的场景,父子级设置设置脱离标准流的定位,z-index值的设置无法影响父子级的显示,如果只有子级脱离了标准流,父级没有脱标,那么就能修改父子级的显示,

包含个人理解 错误请指出

相关文章
|
11月前
|
前端开发
CSS3 columns
CSS3 columns
24 0
|
1月前
|
Web App开发 前端开发 JavaScript
css【详解】—— content属性(含css计数器)
css【详解】—— content属性(含css计数器)
21 3
|
3月前
|
前端开发 小程序 容器
wxss和css的区别
wxss和css的区别
80 2
|
前端开发 JavaScript
css--使用的四种方法
css--使用的四种方法
|
前端开发
CSS - z-index
CSS - z-index
85 0
CSS - z-index
|
前端开发
CSS - Reset.css
CSS - Reset.css
247 0
|
前端开发
理解 CSS 的 z-index 属性
通常认为HTML页面是二维的,但实际上,CSS还有一个z-index属性,允许层叠元素。 所有的盒模型元素都处于三维坐标系中。 除了我们常用的横坐标和纵坐标, 盒模型元素还可以沿着“z轴”层叠摆放, 当他们相互覆盖时, z轴顺序就变得十分重要。
199 0
理解 CSS 的 z-index 属性
|
JavaScript 前端开发
|
前端开发 JavaScript