CSS 翻译和 z 索引

问题描述 投票:0回答:1

我这里有个问题 在html文件的正文中有这样的内容:

<div>translate() issue</div>
我想通过CSS来实现这个形状: HTML + CSS 这就是我的制作方法:

div {
        width: 300px;
        height: 200px;
        background-color: #eeeeee;

        display: flex;
        justify-content: center;
        align-items: center;
        color: #03a9f4;

        margin: 40px auto;
        position: relative;
}

div::before {
        content: "";
        background-color: #03a9f4;
        height: 100%;
        width: 100%;
        position: absolute;
        transform: rotate(-5deg);
        z-index: -1;
}

div::after {
        content: "";
        background-color: #e91e63;
        height: 100%;
        width: 100%;
        position: absolute;
        transform: rotate(5deg);
        z-index: -2;
}

它实际上起作用了,然后我想使用position和translate()将div居中,如下所示:

div {
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
}

不是自动调整左右边距, 但, 由于变换属性,div::before 和 div::after 的“z-index”不再起作用。 有没有正确使用它们的解决方案或想法?

css css-position transform centering
1个回答
0
投票

transform
属性使
<div>
成为新的堆叠上下文。这意味着其中的伪元素包含在其内部,这意味着
<div>
不能位于伪元素前面,因此
<div>
元素的背景颜色无法绘制到伪元素上。相反,您可以考虑在
<div>
内添加另一个元素,该 可以 在伪元素之上绘制:

div {
        width: 300px;
        height: 200px;
        background-color: #eeeeee;
        display: flex;
        justify-content: center;
        align-items: center;
        margin: 40px auto;
        position: relative;
}

p {
        background-color: #eeeeee;
        width: 100%;
        height: 100%;
        display: flex;
        justify-content: center;
        align-items: center;
        color: #03a9f4;
}


div::before {
        content: "";
        background-color: #03a9f4;
        height: 100%;
        width: 100%;
        position: absolute;
        transform: rotate(-5deg);
        z-index: -1;
}

div::after {
        content: "";
        background-color: #e91e63;
        height: 100%;
        width: 100%;
        position: absolute;
        transform: rotate(5deg);
        z-index: -2;
}

div {
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
}
<div><p>translate() issue</p></div>

© www.soinside.com 2019 - 2024. All rights reserved.