- 浏览: 47415 次
- 性别:
- 来自: 北京
文章分类
最新评论
z-index属性
1. z-index : auto | number
2. z-index 属性设置元素的堆叠顺序,如果为正数,则离用户更近,为负数则表示离用户更远;
3. 拥有更高堆叠顺序的元素总是会处于堆叠顺序较低的元素的前面;
4. z-index 仅能在定位元素上奏效(position 属性值为 relative 或 absolute 或 fixed的对象),而position:static 不会影响节点的遮盖关系。
z-index规范参考
1. 在 W3C CSS2.1 规范中,每个元素都具有三维的空间位置,除我们所熟悉的水平和垂直位置外,元素还可在 "Z轴" 方向上层层相叠、依次向前排开;
2.元素在 "Z 轴" 方向上的呈现顺序,由层叠上下文和层叠级别决定。在文档中,每个元素仅属于一个层叠上下文。在给定的层叠上下文中,每个元素都有一个整型的层叠级别,它描述了在相同层叠上下文中元素在 "Z轴" 上的显示顺序;
3. 同一个层叠上下文中,层叠级别大的显示在上,层叠级别小的显示在下,相同层叠级别时,遵循后来居上的原则(back-to-font);
4.不同层叠上下文中,元素显示顺序以父级层叠上下文的层叠级别来决定显示的先后顺序。与自身的层叠级别无关;
5.每一个定位元素都归属于一个stacking context。根元素形成 root stacking context,而其他的 stacking context 则由定位元素产生(此定位元素的 z-index 被定义一个非 auto 的 z-index 值),定位子元素会以这个 local stacking context 为参考,用相同的规则来决定层叠顺序;
6.当任何一个元素层叠另一个包含在不同 stacking context 元素时,则会以 stacking context 的层叠级别(stack level)来决定显示的先后情况。也就是说,在相同的 stacking context 下才会用元素本身的 z-index 来决定先后,不同时则由 stacking context 的父元素的 z-index 来决定。
7.如果所有节点都定义了 position:relative. z-index 为 0 的节点与没有定义 z-index 在同一层级内没有高低之分; 但z-index 大于等于 1 的节点会遮盖没有定义 z-index 的节点; z-index 的值为负数的节点将被没有定义 z-index 的节点覆盖.
在IE下出现的问题
当定位元素的 'z-index' 未设置时(默认为 auto),在 IE6 IE7 IE8(Q) 下将会创建一个新的局部层叠上下文。而在其它浏览器下,则严格按照规范,不产生新的局部层叠上下文。
这个问题将导致定位元素的层叠关系在不同浏览器出现很大的区别,严重的可导致页面布局混乱、内容覆盖等。
受影响的浏览器有IE6 IE7 IE8(Quriks Mode)
<style type="text/css"> body { margin:0; } .p1{ top:20px; height:50px; width:150px; background-color:blue;} .p2{ top:10px; left:20px; height:30px; width:100px; background-color:yellow;} .p3{ top:0px; left:50px; height:100px; width:50px; background-color:red;} </style> <div style="position:relative;" class="p1">1 <div style="position:absolute; z-index:1;" class="p2">2</div> </div> <div style="position:absolute;" class="p3">3</div>
注:Q代表Quriks Mode,即混杂模式
根据 W3C CSS2.1 规范中的说明,定位元素【p1】和【p3】由于未设置 'z-index' 特性(使用默认值 auto),它们不会创建新的局部层叠上下文,而定位元素【p2】设置了 z-index:1 则会创建新的层叠上下文。
另,在同一根层叠上下文中,同为 z-index:auto 的定位元素【p1】和【p3】,它们的层叠级别相同,但【p3】在【p1】之后,所以在 Z 轴上【p3】比【p1】靠前显示,又,【p2】层叠上下文的层叠级别为正数,所以【p2】的层叠级别要比【p3】高。因此,它们在 Z 轴上的顺序为:(遵循 back-to-font)【p1】 -> 【p3】 -> 【p2】
以上为标准浏览器下的情况。
而在 IE6 IE7 E8(Q) 下,定位元素【p1】和【p3】都创建了新的局部层叠上下文,在同一根层叠上下文中,它们的层叠级别相同,但【p3】在【p1】之后,所以在 Z 轴上【p3】比【p1】靠前显示。此时,由于【p2】处于【p1】的层叠上下文中,所以【p2】在 Z 轴上要比【p3】靠后。
再来一个例子:
<style> .parent{width:200px; height:200px; padding:10px;} .sub{text-align:right; font:15px Verdana;width:100px; height:100px;} .lt50{left:50px;top:50px;} </style> <div style="position:absolute; background:lightgrey;" class="parent"> <div style="position:absolute;z-index:20;background:darkgray;" class="sub">20</div> <div style="position:absolute;z-index:10;background:dimgray;" class="sub lt50">10</div> </div> <div style="position:absolute;left:80px;top:80px;background:black;" class="parent"> <div style="position:absolute;z-index:2;background:darkgray;" class="sub">2</div> <div style="position:absolute;z-index:1;background:dimgray;" class="sub lt50">1</div> </div>
解决办法
理解层叠上下文、层叠级别与 'z-index' 之间的关系。在可能出现定位元素相互覆盖的情况时,明确指定定位元素的 'z-index' 特性,避免此问题的出现。
注:此段内容基本都是来自w3help。
ie6 select出现在层上面的解决方法
div在IE6下无法遮盖select,原因是在IE6下,浏览器将select元素视为窗口级元素,这时div或者其它的普通元素无论z-index设置的多高都是无法遮住select元素的。
IE6下的效果图:
FireFox Chrome Safari下的效果图:
网上有两种解决办法:
1.当浮动层div出现的时候,用JS将select隐藏,当浮动层div消失的时候select恢复出现。
2.使用iframe:
注:如果要关闭弹出层请记得关闭iframe否者无法对页面进行操作了。
我这边的做法是:
给iframe加id=“div_iframe” 在关闭层的方法里加上 $("#div_iframe").remove();
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>IE6 select Bug</title> <link rel="stylesheet" type="text/css" href="styles.css"> <script language='javascript' src='flashobject.js'></script> <style> #test{ width:200px; height:200px; background: green; position: absolute; left:50px; top:10px; z-index: 1; } #test1{ width:250px; height:150px; background: green; position: absolute; left:50px; top:220px; z-index: 1; } #testMask1{ width:250px; height:150px; position: absolute; left:50px; top:220px; z-index: 0; } </style> </head> <body> <!--解决方法1--> <select> <option> -- please select--</option> </select> <div id="test"><iframe style="width:100%;-moz-opacity:0;-webkit-opacity:0; opacity:0; filter:alpha(Opacity=0);" frameborder="0" scrolling="no"></iframe></div> <div style="height: 250px"></div> <!--解决方法2 用一个和test同样大小的iframe 放在test1下面,select的上面,用iframe遮住select--> <select> <option> -- please select--</option> </select> <div id="test1"></div> <iframe id="testMask1" frameborder="0" scrolling="no"></iframe> </body> </HTML>
参考文章:http://www.cnblogs.com/Darren_code/archive/2012/03/05/z-index.html#darren_9
有更详细介绍的文章:http://www.neoease.com/css-z-index-property-and-layering-tree/
发表评论
-
iconfont font_1
2013-12-26 13:43 0http://ux.etao.com/posts/401 ... -
iconfont font
2013-12-26 13:41 0图形设计生成总结 http://www.yixieshi ... -
IE6,IE7绝对定位元素神秘消失或被遮挡的解决
2013-12-04 16:36 0IE6,IE7绝对定位元素 ... -
css float文字的显示问题(兼容性)
2013-11-22 17:55 0如果float容器未定义宽度,ff下内容会尽可能的撑 ... -
white-space:nowrap
2013-11-19 09:40 0white-space:nowrap应用 注意:f ... -
css3 target
2013-11-17 10:57 0转自:http://www.qianduan.net/cs ... -
css bugs
2013-10-24 10:36 0HR { clear: both; backgro ... -
使用CSS3的appearance属性改变元素的外观
2013-07-30 14:19 0转:http://www.w3cplus.com/css3/ ... -
css 技巧
2013-07-18 09:30 0使用background设置图片来替换文本: 每个网站都 ... -
CSS3 Word-wrap word-break white-space(待整理)
2013-06-15 22:45 0http://www.w3cplus.com/content ... -
浏览器兼容问题
2013-04-27 18:31 0兼容性: 1)浮动双边距:display:inline ... -
CSS竖直对齐vertical-align属性详解
2013-04-27 13:12 0转自:http://zhengguoting.blog. ... -
IE6 fixed min-height max-height
2013-04-08 22:03 0Fixed 1.expression 例子 ... -
ie6 bugs-2
2013-04-08 17:38 0ie6 overflow-y:auto BUG修复 h ... -
中间div滚动
2013-04-08 15:13 0<!DOCTYPE html PUBLIC &quo ... -
font-size:0对取消img的右侧和下侧margin
2013-04-04 21:21 0在做人人面试题时,发现默认情况下img并排会出现右边 ... -
工作总结
2013-02-25 13:57 0hr { width:100%; backgr ... -
IE6 BUG汇总
2013-02-24 08:48 0IE6 BUG汇总http://hi.baidu.com ... -
hasLayout
2013-02-23 17:11 0什么是hasLayout?http://ne ... -
各浏览器对常用行内替换元素的 'baseline' 位置理解不同
2013-02-17 14:44 0转自:http://www.w3help.org/ ...
相关推荐
**CSS中的`z-index`详解** `z-index`属性在CSS中扮演着至关重要的角色,它定义了元素在页面上的堆叠顺序。简单来说,`z-index`越高,元素越会在其他元素之上显示。但这个规则并非总是如此,理解其工作原理对于创建...
### CSS中的z-index属性详解与应用 在网页布局设计中,元素之间的层级关系至关重要,它决定了哪些元素在页面上看起来“更靠前”。这便是z-index属性发挥作用的地方。本文将深入探讨CSS中的z-index属性,解析其工作...
### CSS中的Z-Index属性详解 #### 一、引言 在网页布局设计中,元素之间的堆叠顺序是非常重要的一个方面。特别是在复杂的页面结构中,如何控制这些元素的前后顺序,确保用户能够按照设计师的意图浏览信息,是前端...
CSS的z-index属性是控制页面上元素堆叠顺序的重要工具,它允许开发者定义元素在页面的垂直层叠中的位置。在没有z-index属性的情况下,元素默认会按照HTML代码中出现的顺序进行堆叠,但在复杂布局中,这种默认的堆叠...
### JavaScript 动态改变层的 Z-INDEX 的代码详解 #### 一、概述 在网页设计与开发过程中,为了实现页面元素之间的堆叠效果,常常需要动态调整元素的 `z-index` 属性。`z-index` 是 CSS 中的一个属性,用于控制...
**CSS定位与Z-Index详解** 在网页设计中,CSS(Cascading Style Sheets)扮演着重要的角色,尤其是在实现复杂的网页布局和元素定位时。本文将深入探讨CSS中的定位属性和Z-Index的概念,帮助你更好地理解和应用这些...
在CSS中,`z-index`属性是一个至关重要的概念,它在层叠布局(Stacking Context)中起到决定性的作用。层叠布局允许元素在页面上按照特定的顺序进行堆叠,使得某些元素能够覆盖其他元素,从而实现丰富的交互效果。 ...
本文将详细介绍如何使用JavaScript(js)来实现轮播图效果,以及如何利用`z-index`属性进行层叠控制。 1. **JavaScript实现轮播图的基本原理** 要实现轮播图,首先需要一个包含多张图片的列表,然后通过改变这些...
- **模板结构**:了解Z-BlogPHP的模板文件结构,如header、footer、index等。 - **模板语言**:学习Z-BlogPHP的模板标签,如{loop}、{if}、{function}等。 - **CSS/JS定制**:修改样式表和JavaScript文件,实现...
### 详解CSS定位与定位应用 #### CSS定位概述 定位技术是Web开发中不可或缺的一部分,尤其是在页面布局的设计过程中。良好的定位技巧能够帮助开发者构建出既美观又实用的网站界面。CSS提供了多种定位方式,包括...
- 当 `position` 被设置为 `relative` 时,可以通过 `z-index` 来改变元素的堆叠顺序。 - **示例代码**: ```html ;height:50px;width:50px;background:#f00;left:50px;top:50px;"> ``` 在此示例中,红色方块...
**Z-BlogPHP详解** Z-BlogPHP是一款基于PHP语言的开源博客系统,以其轻量级、高效能、易扩展的特性深受广大个人站长和企业的喜爱。标题中的"blog最新版本"表明这是一个Z-BlogPHP的最新更新,通常包含最新的功能优化...
Opera浏览器在7.10版本以后,所有表单元素(包括SELECT)遵循z-index,但其对IFRAME的处理与其他浏览器不同,视其为有窗口元素。 CSS的z-index属性是解决覆盖问题的重要工具,它用于决定元素的堆叠顺序。数值越大,...
2. **调整`z-index`值**:通过调整`z-index`的值来控制各层的堆叠顺序,确保想要展示在前面的层具有更高的`z-index`值。 3. **注意点**: - 当使用`absolute`或`fixed`定位时,需要指定`top`、`right`、`bottom`、...
1. **z-index属性**:CSS中的`z-index`属性用于定义元素的堆叠顺序。具有较高`z-index`值的元素会覆盖具有较低`z-index`值的元素。 2. **position属性**:CSS中的`position`属性用于设置元素的定位方式,常见的值...
static 没有特别的设定,遵循基本的定位规定,不能通过z-index进行层次分级。relative 不脱离文档流,参考自身静态位置通过 top,bottom,left,right 定位,并且可以通过z-index进行层次分级。absolute 脱离文档流,...
例如,若`.divcss5-a`和`.divcss5-b`分别设置了`z-index: 1`和`z-index: 2`,那么在重叠区域,`.divcss5-b`将会覆盖`.divcss5-a`。 ### 小结 通过以上分析,我们可以看出CSS定位的强大功能。正确使用不同的定位...