z-index 实例讲解

最近有朋友在留言中问我关于 CSS 中 z-index 的问题,来回纠结了好几个回合,也不知道现在对方到底搞清楚没,我想授人以鱼,还不如授人以渔,所以就整理了一下 z-index 属性的一些基本用法,顺便做了一个 DEMO 实例便于比较学习。本来想参考一下网上有没有现成的教程照搬一个,但是搜了一下,有的写的很简单,甚至没有实例,初学者不太能有直观的印象,有的则写的太复杂,把不太可能碰到的特殊情况都列入其中,太打击初学者的积极性了。看来看去还是我写的比较适中,哈哈,只要看会以下几点,这 z-index 的基本用法也就会了。

用法:z-index: auto | number;

在没有定义 z-index 时,默认就是 auto 值,number 就是非默认情况下 z-index 的取值,范围是整数,一般我不太用到负数。这个 z-index 还是很好理解的,就是三维坐标轴上的 Z 轴,也就是垂直于显示器的那根轴,z-index 的值大的将叠堆在值比较小的之上,换句话说,就是 z-index 数值越大就离我们的视线越近!有一点需要注意的是:z-index 属性仅适用于定位元素,比如说 position:absolute;position:relatve;position:fixed; 没有这三种之一的定位支持,单独使用 z-index 是无意义的。

下面来看两个实例:

以下实例中的关键样式:

#test1,#test2,#test3{position:relative;}
.blue,.red,.green,.yellow{position:absolute;}

实例一 HTML 部分:

<div id="test1">
    <div class="blue">z-index:1</div>
    <div class="red">z-index:2</div>
    <div class="green">z-index:3</div>
    <div class="yellow">z-index:4</div>
</div>

实例一 效果:

z-index:1
z-index:2
z-index:3
z-index:4

实例二 HTML 部分:

<div id="test2">
    <div class="blue">z-index:4</div>
    <div class="red">z-index:3</div>
    <div class="green">z-index:2</div>
    <div class="yellow">z-index:1</div>
</div>

实例二 效果:

z-index:4
z-index:3
z-index:2
z-index:1

通过以上两个例子,就可以很轻松地理解 z-index 的基本用法了,当然,还有需要注意的一点是,如果两个进行比较的 z-index 不是处在同一级的标签中,则各自向上寻找动态定位元素,并分别对其祖元素进行比较,此时,子元素的 z-index 值无论多大,都是父元素大的居上。这段话一时之间比较难理解,佩上实例三就会明白了:

实例三 HTML 部分:

<div id="test3">
    <div class="blue">z-index:2
        <div class="red">z-index:3</div>
    </div>
    <div class="green">z-index:1
        <div class="yellow">z-index:4</div>
    </div>
</div>

实例三 效果:

z-index:2

z-index:3

z-index:1

z-index:4

在这里可以看到,虽然黄色方块的 z-index:4 值大于红色方块的 z-index:3,但是红色却仍然盖住了黄色,那是因为红色是蓝色方块的子元素,而黄色是绿色方块的子元素,此时就要先比较蓝色与绿色方块,显然蓝色的 z-index:2 比绿色的 z-index:1 大,于是红色方块也就“狐假虎威”地盖过了绿色和黄色。

花花绿绿的,有没有把你绕晕呢?z-index 还有很多乱七八糟的复杂的特殊情况,不过如果掌握以上三个实例,我觉得也就十拿九稳了,欢迎补充~

另外,为了方便大家参考,我把以上三个实例合并在一起做了一个 DEMO,有兴趣的朋友可以看一下,查看其源码就可以看到完整的 DIV+CSS 了。

,

相关的文章
  1. :?: 看到别人用过 自己还真没用到过这个...不过百度过这个函数,看看是干嘛用的 =.= :neutral:

    发现留的有点脑残...

    • 对于初学者而言,还是不要讲太复杂,我也只是谈谈自己的心得,嘿嘿,不过还是要多练习才会了解其真谛

  2. 我刚刚陷于 IE6 的怪异 z-index 中:position 为 absolute 的元素 z-index 经常无效,需要把 position 为 relative 的父元素的 z-index 也设置一遍。

    • 用处可多了,最多的是用在二级菜单上,一般下拉的菜单会被下面的内容部分挡住,这就需要把菜单调整到靠前一些