一般认为HTML页面是二维的,但实际上,CSS还有一个z-index
属性,容许层叠元素。html
全部的盒模型元素都处于三维坐标系中。 除了咱们经常使用的横坐标和纵坐标, 盒模型元素还能够沿着“z轴”层叠摆放, 当他们相互覆盖时, z轴顺序就变得十分重要。segmentfault
-- CSS 2.1 Section 9.9.1 - Layered presentationide
假定元素没有指定z-index
属性,那么元素按照以下顺序叠放(从底到顶)布局
对于浮动的块元素来讲,堆叠顺序变得有些不一样。浮动块元素被放置于非定位块元素与定位块元素之间:ui
若是须要改变默认的摆放顺序,只需给元素指定z-index
。z-index
必须是整数,体现了元素在z轴的位置:spa
没有指定z-index
的时候,全部元素默认在0层渲染。多个元素的z-index
属性相同时,将按照上文描述的顺序布局。code
使用z-index排序的例子:htm
注意,div#5
的z-index无效,由于未指定position
属性。排序
指定z-index
属性将构造一个堆叠上下文。ci
如下元素构成堆叠上下文指:
html
z-index
值不为auto
opacity
小于1的元素position: fixed
的元素老是会构造堆叠上下文,即便z-index
为auto
。堆叠上下文中的子元素按照前述顺序摆放。堆叠上下文内部的子堆叠上下文的z-index
只在父堆叠上下文中有意义。
总而言之:
z-index
不为auto
,opacity
小于1的元素会构建堆叠上下文。