这是一个高级CSS问题。
在JSFiddle中:(在Chrome26.0、Firefox20.0和IE10上进行测试)
http://jsfiddle.net/4yRrm/10
父函数建立一个堆叠上下文,并且子元素的z索引比父文件高,并且覆盖父文件,所以这一切都很好。
但是在http://jsfiddle.net/4yRrm/11里呢?
现在孩子们的z指数比父母低。孩子的文字现在在父母的文本下面(你可以看到家长的文本以蓝色遮盖孩子文本的黑色),但是为什么孩子的背景色是而不是呢?请用说明书来证实你的答案。为什么会有这样的行为--达到某种目的吗?
实际上,父母的背景是最低层,然后是孩子的背景,然后是孩子的文本,然后是父母的文本。所以父母的画处于“极端末端”--背景是最低层,文本是最顶层,孩子们的内容被夹在这两个极端中。
相关的问题是:当父母建立一个堆叠的上下文时,你如何使父母完全超越孩子的,甚至对于背景来说也是?请不要回答删除positive: relative或删除父级的z-index: 0,因为这将无法为子级建立堆叠上下文。也就是说,父母必须有一个position的relative,absolute或fixed,同时,有一个整数的z-index (不能是auto)。
发布于 2013-05-12 07:54:20
CSS2.1 州
每个框属于一个堆叠上下文。给定堆叠上下文中的每个定位框都有一个整数堆栈级别,这是它在z轴相对其他堆栈级别上的位置,在相同的堆叠上下文中。堆栈级别较高的框总是在堆栈级别较低的框前面格式化。框可能具有负堆栈级别。在堆叠上下文中具有相同堆栈级别的框根据文档树顺序从后向前堆叠。 在每个堆叠上下文中,以下各层是按前后顺序绘制的:
从项目1和2中可以看到,具有负堆栈级别(即您的子元素)的子堆栈上下文总是绘制在当前堆叠上下文的背景之上(即父元素)。
然后将父元素的文本绘制在子元素的上方,如第5项中所示。
不可能让堆叠的背景完全凌驾于其后代之上--无论你做什么,它的背景和边框都会被画在最底层。由于一个方框一次只能出现在一个堆叠上下文中(堆叠上下文可以嵌套,但在这里不相关),如果您希望这些元素完全位于父堆栈上下文中,并且允许父元素为其其他内容建立自己的堆叠上下文,则必须将这些元素移出父堆栈上下文。例如,您可以将它们移到父级之外,从而使它们成为兄弟姐妹,共享相同的堆叠上下文,在您的情况下是根堆叠上下文。
发布于 2013-05-12 07:55:53
非常有趣的问题:

(图片来源于http://www.vanseodesign.com/css/css-stack-z-index/)
在每个堆叠上下文中,以下各层是按前后顺序绘制的: 1-构成堆叠上下文的元素的背景和边界。2-具有负堆栈级别的子堆栈上下文(最负的第一层)。3-在流,非直线水平,非定位后代。4-非定位浮标。5-流内,内联级,非定位的后代,包括内联表和内联块.6-具有堆栈级别0的子堆栈上下文和具有堆栈级别0的定位后代。7-具有正堆栈级别的子堆栈上下文(最不肯定的优先)。
发布于 2013-05-12 08:00:40
您的文本节点:
Hello Chip Hello Chip Hello Chip Hello Chip
还获得了一个堆叠的上下文:
#chip01:imaginary-stack-context: 0#chip01 "Hello Chip..." - imaginary-stack-context: 1#chip02 - imaginary-stack-context: 0#chip03 - imaginary-stack-context: 0 (因为有z-index: -1,所以在所有其他元素后面都有positive / auto z-索引)。)CSS2.1规范已经由@BoltClock提供。

https://stackoverflow.com/questions/16504832
复制相似问题