使用z-index将div取得另一个div

我希望div1高于div2 。 我尝试使用z-index但它不起作用。

我试过这个代码:

 div { width: 100px; height: 100px; } .div1 { background: red; z-index: 1; } .div2 { background: blue; margin-top: -15vh; z-index: 2 } 
 <div class="div1"></div> <div class="div2"></div> 

您可以添加position: relative对于这两个div和创buildstacking context

 div { width:100px; height: 100px; } .div1 { background: red; z-index: 2; position: relative; } .div2 { background: blue; margin-top: -15vh; z-index: 1; position: relative; } 
 <div class="div1"></div> <div class="div2"></div> 

在很多情况下,一个元素必须被定位为z-index才能工作。

实际上,应用position: relative对于问题中的div将解决z-index问题。

实际上, position: fixedposition: absoluteposition: sticky也会启用z-index ,但是这些值也会改变布局。 有position: relative布局不受干扰。

基本上,只要元素不是position: static (默认值),它就被认为是定位的, z-index将起作用。


这里和相关问题的一些答案断言z-index 只适用于定位元素。 从CSS3开始,这不再是事实。

即使positionstaticFlex项目网格项目的元素也可以使用z-index

从规格:

4.3。 Flex Item Z-Ordering

除了用顺序修改的文档顺序代替原始文档顺序之外,Flex项目的绘制与内嵌块完全相同,即使positionstaticz-index值也不是auto创build堆栈上下文。

5.4。 Z轴sorting: z-index属性

网格项目的绘制顺序与内嵌块完全相同,不同之处在于,使用顺序修改的文档顺序代替原始文档顺序,即使positionstaticz-index值也不是auto创build堆栈上下文。

这是一个z-index在非定位flex项目上的演示: https : //jsfiddle.net/m0wddwxs/

z-index只适用于static position以外的元素,例如: relativeabsolutefixed

 div { width:100px; height: 100px; position:relative; } .div1 { background: red; z-index: 2; } .div2 { background: blue; margin-top: -15vh; z-index: 1 } 
 <div class="div1"></div> <div class="div2"></div> 

div的默认属性是position:static ,Add position:relative在这两个div只有z-index会起作用。