带有伪元素之前的 Z 索引

发布于 2024-12-11 02:20:20 字数 608 浏览 0 评论 0原文

我创建了一个带有 before-pseudo 元素的“header”元素。伪元素必须位于父元素后面。 一切都工作得很好,直到我给我的“标题”一个 z 索引。

我想要的:前景中的黄色“标题”,背景中的红色伪元素以及黄色“标题”元素上的简单 z 索引 30。

header { 
    background: yellow;
    position:relative;
    height: 100px;
    width: 100px;
    z-index:30; /*This is the problem*/
}

header::before { 
    content:"Hide you behind!";
    background: red;
    position:absolute;
    height: 100px;
    width: 100px;
    top:25px;
    left:25px;
    z-index:-1;
}

您可以在此链接(http://jsfiddle.net/tZKDy/)上测试我的问题,当您设置/时您会看到问题删除“header”元素上的 z 索引。

I've created a 'header' element with a before-pseudo element. the pseudeo element must be behind the parent element.
Everything works great till the moment I give my 'header' a z-index.

What I want: The yellow 'header' on the foreground, the red pseudo-element in the background and a simple z-index of 30 on the yellow 'header' element.

header { 
    background: yellow;
    position:relative;
    height: 100px;
    width: 100px;
    z-index:30; /*This is the problem*/
}

header::before { 
    content:"Hide you behind!";
    background: red;
    position:absolute;
    height: 100px;
    width: 100px;
    top:25px;
    left:25px;
    z-index:-1;
}

You can test my problem on this link (http://jsfiddle.net/tZKDy/) and you see the problem when you set/remove the z-index on de 'header' element.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

挽梦忆笙歌 2024-12-18 02:20:20

::before 伪元素放置在 header 元素内。

CSS 规范

:before 和 :after 伪元素与其他框交互,就好像它们是插入到其关联元素内的真实元素一样。

设置 header 元素的 z-index 创建一个新的 Stacking Context,因此您创建的新伪元素不能浮动在 header 元素后面,因为它必须位于 Stacking Context 之外。

我建议您只需在标头元素之前添加另一个元素,以便默认情况下它可以正确堆叠。 示例

The ::before pseudo-element is placed inside the header element.

CSS Spec:

The :before and :after pseudo-elements interact with other boxes as if they were real elements inserted just inside their associated element.

Setting the z-index for the header element creates a new Stacking Context, so the new pseudo element you created can not float behind the header element, because it would have to go outside that Stacking Context.

I suggest that you simply precede the header element by another element, so it stacks correctly by default. Example.

挖鼻大婶 2024-12-18 02:20:20

我使用了 z-index:-1 (在此处输入链接描述)

a {
    position: relative;
    z-index: 1;
    text-align: center;
    display: table-cell;
    vertical-align: middle;
}

a::before {
    content: "";
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    background-color: yellow;
    z-index: -1;    
}

I used z-index:-1 (enter link description here)

a {
    position: relative;
    z-index: 1;
    text-align: center;
    display: table-cell;
    vertical-align: middle;
}

a::before {
    content: "";
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    background-color: yellow;
    z-index: -1;    
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文