建站软件 优化软件 编程软件 网页辅助 站群程序 网站程序 图像处理 资源教程 字体下载 推荐软件


您的位置:首页 > div+css > CSS中z-index属性使用教程

CSS中z-index属性使用教程

时间:2016-06-02 10:57:24  来源:免费模板网 作者:风雪 阅读次数 tags属性教程

我们在使用浮动的时候,文字要在图片上显示,类似3d效果怎么实现呢,这个时候需要用到z-index属性,请看下文

z-index语法和应用
CSS
  1. z-indexauto | <integer>  

z-index 接受的属性值为:关键字auto和整数,整数可以是负值(Firefox2.0及之前不支持负值)。

需要注意的是 z-index 虽然很给力,却只能应用于定位元素(即设置了 position 属性为非 static 值),其它情况下,z-index 将被忽略。

对于定位元素而言,z-index 意味着:

确定该元素在当前层叠上下文中的层叠级别。
确定该元素是否创建了一个新的局部层叠上下文。


创建层叠上下文

在规范中说明:当某个元素的 z-index 未显式定义或者被指定为 auto 时,该元素不会产生新的局部层叠上下文。也就是说它可以和兄弟,祖先,后辈元素处在同一个堆叠上下文中,它们被放在一起比较层叠级别,儿子可以盖住祖先,父亲也可以盖住儿子,儿子甚至可以越过祖先,盖住祖先的兄弟,在层叠上下文中,它们是并级的关系。来看这样一个例子 DEMO1: z-index与创建层叠上下文

值得高兴的是,大部分浏览器都实现了这个特性;不过在IE6/7下,不论 z-index 值是否被显式定义,都将产生新的局部层叠上下文,也就是说子元素不可以越过是定位元素的父亲,子元素都处在新创建的局部层叠上下文中,只能在内部进行层叠级别的比较。

深入浅出

某区域内有个浮层提示或者下拉菜单,于是可能需要遮住该区域之下的区域。

HTML

XML/HTML
  1. <div class="a">  
  2.     ...   
  3.     <div class="tips">我是一个简陋的浮层提示</div>  
  4. </div>  
  5. <div class="b">  
  6.     ...   
  7. </div>  

CSS

CSS
  1. .a{position:relative;}   
  2. .tips{position:absolute;z-index:99;}  

如上HTML/CSS代码,很显然,浮层 tips 将可以覆盖在其父级元素 a 的兄弟元素 b 之上。

于是你的意图得到实现,效果如下图:
201635115051330.png (294×116)

不过很显然,你依然无法准确的判断出在各浏览器下,tips 能盖住 b 是因为其父级的定位还是本身的定位。

但是我们可以做这样一个测试,我们让 b 也拥有定位,Code如下:

CSS

CSS
  1. .a{position:relative;}   
  2. .tips{position:absolute;z-index:99;}   
  3. .b{position:relative;}  

这段代码run完之后,就比较纠结了,你能得到的效果将会如下:
201635115132931.png (600×140)

首先,我们来解读一下这个例子:因为 a 和 b 都是 relative 且没有定义 z-index (等同于z-index:auto),根据后来居上的原则,此时 b 的层叠级别是要高于 a 的,意思就是说 a 是无法遮住 b 的。不过从 DEMO3 中,我们看到 a 的子元素 tips 遮住了 b,这就表示 tips 能越过它,所以可以判断出 a 没有创建新的局部层叠上下文。很明显,这是完全吻合标准对此的定义。

不过这是在非IE6/7之下结果。在IE6/7下,我们看到 tips 并没能遮住 b,也就是说 tips 无法越过父级,因为 a 创建了新的局部层叠上下文,而 a 的层叠级别又比 b 低,所以 tips 无法遮住 b,这也就是在IE6/7下常出现覆盖Bug的根源。

能得出以下结论:

当定位元素没有显式定义z-index值时,不会创建新的局部层叠上下文
子元素有可能和祖先的兄弟或者祖先兄弟的子元素处在同一个层叠上下文中
在实际工作中,有些情况可能是你没注意或者已然存在的。比如你事先可能并不知道 b 也是定位元素,或者由于某些原因,你需要将其设置为定位元素,于是可能出现各种兼容问题。如果你不了解 z-index 是如何创建局部层叠上下文,且又没注意到IE6/7的实现错误,那么处理起这样的问题将会让你深陷泥潭。

所以在实际的场景中,如果是为了相互覆盖而设置为定位,那么显式的定义 z-index 值,将可避免出现创建新局部层叠上下文差异。

本文地址:https://www.freemoban.com/bjrm/2016/0602/2624.html

猜你喜欢
栏目推荐
模板推荐

Copyright:www.freemoban.com 免费模板网 All Rights Reserved 网站备案:辽ICP备19014872号-2   辽公网安备 21010602000376号  辽公网安备:42900402000182号

免责声明:本站部分资源来自互联网收集,版权归原创者所有,如果侵犯了你的权益,我们会及时删除侵权内容,联系QQ:1615187561 谢谢合作!