您的位置:首页 > Web前端 > CSS

CSS教程:彻底掌握Z-index属性

2010-10-08 16:53 369 查看
大多数的
CSS
属性都很容易使用。常常,当您
对标记语
言的元素使用
CSS
属性



生的

果会随着您刷新

面而立即呈

。而另一些
CSS
属性,却会有一些
复杂
,且只能在

定的

境下才会工作。

Z-index
属性便属于上面所

的后面的那一


Z-index
无疑的比其他任何属性都会

繁的

致(兼容性)上 的混乱和(
开发
者心理上)的挫

感。但滑稽的是,一旦你真正理解了
Z-index
,你会
发现
它却是一个非常容易使用的属性,并且会

解决很多
layout
方面的挑

提供

有力的帮助。



篇文章里,我

会准确的

明究竟什


Z-index
,它




这么


人所了解,并一起
讨论
一些

于它的



使用中的
问题
。我



会描述一些会遇到的
浏览


的差异,那些存在于已有版本的
IE

Firefox
浏览
器中的独特
问题





Z-index
属性 的全透

文章将会

那些有着良好基


开发
者在使用
Z-index
属性

提供

大的自信心及

有力的帮助。



是什






Z-index
属性决定了一个
HTML
元素的


级别
。元素


级别
是相

于元素在
Z

上(与
X

Y



照)的位置而言。一个更高的
Z-index

意味着

个元素在叠
层顺
序中会更靠近

部。





序沿着垂直的
线轴
被呈






了更清晰的描述
Z-index
是如何工作的,上面的
这张图
片夸大展示了

叠元素在
视觉
位置上的

系。

自然的











一个
HTML

面中,自然的



序(也就是元素在
Z

上的

序)是由很多因素决定的。下面的是一个列表,它展示的列表



于一个



境 (
stacking context

暂时
未找到合适的
汉语



应该
是指

叠的元素所

的那个

叠的

境)中,











境的底部的。

个列表中的

都没有被


Z-index
属性。

元素的背景和

框会

建一个
stacking context

引用

:


·
具有
负值

stacking contexts
元素,按照出

的先后

序排列(越靠后
层级
越靠上)

·
没有被定位,没有浮


块级
元素,按照出

的先后

序排列

·
没有被定位,浮

的元素,按照出

的先后

序排列

·


元素,按照出

的先后

序排列排列

·
被定位的元素,按照出

的先后

序排列

Z-index
属性,当被正确使用的

候,会改

自然的



序。

当然,除非元素已

被定位按照互相交叠的形式展

,否

元素的



序并不会特

的明

。下面的,
负边
距的
BOX
被拿来展示,用以

明自然的



序。



上 面的
BOX
被定

了不同的背景和

框色,并且后两个是交

的并且定


负值




距,所以我

可以看到自然的



序。灰色的
BOX

标记
中位于第一 位,

色的
BOX
位于第二位,金色的排在第三。

用的
负边
距明确的表明

个事



些元素未被


Z-index
属性;它





序是自然的,或者是默

的,


规则
的。

生交



象都是因
为负值


距。







它会



生混乱?


即使
Z-index
并不是一个

以理解的属性,但它却会因
错误
的假

而使很多初


开发


陷入混乱。混乱

生的原因是因

Z-index
只能工作在被明确定


absolute

fixed

relative

三个定位属性的元素中。





Z-index
只能工作于被定位了的元素中,

里有同

的三个
BOX
,它
们应
用了
Z-index
属性来
尝试
打破他

自然的



序。



灰色的BOX
具有“9999”
的Z-index




色的BOX
有“500”
的Z-index


,金色的有“1”
的Z-index



合乎
逻辑
的,你会
认为这
三个
BOX




序会倒

来。但事

却不是
这样
,因
为这
些元素都没被


position
属性。

下面是同

的三个BOX
,分

都被

置了position:
relative
,他

的Z-index

值还
是按照上面那段

定。




在的

果是我

所期待的了:

些元素的




实现
了反向;灰色的
BOX
覆盖在

色之上,

色的覆盖在金色之上。






#grey_box {

width: 200px;

height: 200px;

border: solid 1px #ccc;

background: #ddd;

position: relative;

z-index: 9999;

}

#blue_box {

width: 200px;

height: 200px;

border: solid 1px #4a7497;

background: #8daac3;

position: relative;

z-index: 500;

}

#gold_box {

width: 200px;

height: 200px;

border: solid 1px #8b6125;

background: #ba945d;

position: relative;

z-index: 1;

}



一下,Z-index
属性只能工作于那些被定

了position
属性的元素中。

并没有被足

的重

,尤其是

于那些新手。

运用JavaScript



如果你希望通

JavaScript

一个元素
动态
的加上Z-index
属性,其

法同其他大部分CSS
元素能被存取

似,就是使用“


峰命名法”
取代CSS
属性中的

字符,就像下面的代



的那



var myElement = document.getElementById(”gold_box”);

myElement.style.position = “relative”;

myElement.style.zIndex = “9999″;

在IE
和 Firefox
中的不当解析(兼容性


问题




在某些特定的情况下,

于Z-index
属性的解析会在IE6
、IE7
以及Firefox2
版本中存在一些小小的前后矛盾。

IE

中的<select>
元素:


IE6
中的<select>
元素是一个窗口控件,所以它

是出





序的

部而不会

及到自然



序、position
属性或者是Z-index
。下

展示的就是


问题




<select>
元素出

在了

部,它被

置了“


定位”
并且Z-index

值为
“1”
。金色的BOX






序中排在了第二位,它的Z-index


是 “9999”



自然



序及
Z-index

的原因,在我

目前所用的所有
浏览
器中金色的
BOX
都会排在

部,但
IE6
除外。





IE6

BUG

致了很多覆盖在
<select>
元素上的下拉菜



出下拉
选项时



问题
。一个解决

法是使用
JavaScript


时隐

<select>
元素,等到下拉菜

的下拉

收回

再将
<select>

示出来。其他的

法会

及到使用
<iframe>


IE6/IE7

中被定位了的父容器:


因父容器(元素)被定位的

故,
IE6/7

错误



stacking context

行重置。

了演示

个多少有些
复杂

BUG
,我

再一次的放置两个
BOX
,但

次我

会将第一个
BOX
放置在一个被定位了的元素里。



灰色BOX
的z-index


是“9999”


色BOX
的z-index


是“1”


两个BOX
都被

置了position

所以,正确的


应该
是灰色的
BOX
覆盖在

色的之上。


是在
IE6

IE7
中,我

却会看到

色的
BOX

于灰色的之上。

是由灰色
BOX


的父容器也被

置了定位造成的。

两款
浏览

错误
的将被定位的父容 器的
stacking context

行了

重置

,但却不
应该这样
。灰色的
BOX

有一个非常高的
Z-index

,它理


为处



BOX
之上。其他的
浏览

对这

问题


行正确的解析。

Firefox 2

中的

负值




在Firefox2
版本中,一个

的Z-index


会使元素位于stacking
context
的后面,而不是位于公

的背景和


这样
的元素stacking context
之前。下面的截

展示了

个Firefox
2
的BUG




下面的是上面截

的HTML
版本(限于目前博客所限,做不到能

像Smashing Magazine


的内容部分

示code demo
,需要

看原始



去原文章

看) ,如果你在Firefox
3
或者其他目前正在被使用的
浏览
器中

看,你会看到正常的解析

果:灰色BOX
的背景(元素stacking
context
的基底)出

在所有

物的下面,并且灰色BOX
内部的文字出



色BOX
的上面。



普遍



用的展示


对页
面中的元素


z-index
属性可以非常便捷的解决各




layout


,同

使得
设计
者可以在他


设计
中使用

叠的



行更多的

造。





的滑

动门








一个
对这

CSS
属性
实际应
用的案例:
CTCOnlineCME


个网站


正被点



tab
使用
Z-index
属性及清晰交


PNG

片,

造出非常好的效果。



CSS

气泡:


Z-index
属性

可以用来
实现
基于CSS
的提示气泡,就像下面trentrichardson.com
展示的那




Light Box




如果不是因
为应
用了z-index
属性,

在也不会有那

多的品
质优
秀的Light
Box
脚本可以免

使用,比如

JQuery
的一个插件FancyBox




Light box
脚本使用半透明的
PNG

片来使背景

暗,之后拿来一个新的元素,

常会使用

似窗口的
DIV
,将之放置在前排。覆盖住屏幕的
PNG
和之后的
DIV
都使用
Z-index
属性以确保

2
个元素会位于

面其他元素之上。

下拉菜







似于Brainjar’s classic Revenge of the Menu Bar
的下拉菜

使用Z-index
以确保菜

的按

和他

的下拉

位于

叠的

部。



画廊效果的



片展示:


将JQuery animation
和Z-index


合可以

造出幻灯片或画廊式的卓越效果。usejquery.com

网站中的

个demo
向我

展示了

两者的




带给


的惊喜。



Polaroid Photo Gallery by Chris
Spooner

采用功能更
为强
大的CSS3
同Z-index
配合,

造出了一个当鼠


过时
会重新

放的超cool
效果。



在Fancy Thumbnail
Hover Effect
中Soh Tanaka
使用Query




的脚本改

z-index

赋值




Stu Nicholls

所做的CSS


实验




Stu Nicholls
在他的网站
CSSplay

阐释
了众多的CSS
的案例。下面是一些

于z-index
属性的作品。

CSS


片地




CSS





CSS
模仿框架







版的



叠布局:


24 ways


个网站以
Z-index

工具来提升它的模板体

,将年份和日期的

度、

度延伸到和网站外

容器同等并相互交



造出了一个非常有趣的效果。



奇异的网摘






Janko At Warp Speed


个网站在“
奇异的网摘


中使用了Z-index




完美的整



背景






Chris Coyier


述了

个技

并将之

用到了ringvemedia.com

网站上。在内容容器上

用 z-index
以确保它出

在那个看上去像“
背景”


却不是的

片上。



总结



CSS




系是一个
复杂

话题
。本文并不打算
针对这

话题
的所有
细节进

讨论
,而是
针对
Z-index
究竟是如何影响我









行一次深入的探



里所

的,当被真正的全面理解后,我


发现这

CSS
属性是如此的

大。

初学者


应该

对这
个属性有了非常好的理解,并且会避免很多在

其的使用

程中

常出


问题
。另外,有基


开发
者也会

如何正确使用
Z-index
来避免很多布局方面的
问题
有了更

深入的理解,并且
为创
造出更多的
CSS
艺术
作品打

了大

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: