gpt4 book ai didi

html - 转换伪元素和父元素时 z-index 不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 06:59:57 24 4
gpt4 key购买 nike

当前,我正在尝试在 X 轴和 Y 轴上平移一个父元素 10px,同时在其他方向上将 ::after 等量地平移(这是为了模拟伪造的体验元素无处可去)。我预计这是相当微不足道的,但是, ::after 不想在转换时留在它的父级后面。我假设创建一个新的堆叠上下文会起作用,而且我以前从未遇到过这个问题(拥有多年的 CSS 经验)。

body {
background-color: #FFF;
}

button {
padding: .75rem 1rem;
background-color: #eee;
border: none;
font-weight: 500;
font-size: 1rem;
position: relative;
transition: ease all .15s;
}

button::after {
content: '';
position: absolute;
z-index: -1;
height: 100%;
width: 100%;
background-color: #000;
top: 0;
left: 0;
transition: ease all .15s;
}

button:hover {
transform: translate(-10px, -10px);
}

button:hover::after {
transform: translate(10px, 10px);
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>Fun Button</title>
</head>
<body>

<button type="button">Fun Button!</button>

</body>
</html>

最佳答案

解决这个问题的一个简单方法是考虑使用另一个伪元素来创建灰色背景,并且让它们最初都属于同一个堆叠上下文(通过向按钮添加 z-index)所以添加转换时你不会有任何问题

body {
background-color: #FFF;
}

button {
padding: .75rem 1rem;
border: none;
font-weight: 500;
font-size: 1rem;
position: relative;
z-index:0;
transition: ease all .15s;
}

button::after,
button::before{
content: '';
position: absolute;
z-index: -2;
height: 100%;
width: 100%;
background-color: #000;
top: 0;
left: 0;
transition: ease all .15s;
}
button::before{
z-index:-1;
background-color: #eee;
}

button:hover {
transform: translate(-10px, -10px);
}

button:hover::after {
transform: translate(10px, 10px);
}
<button type="button">Fun Button!</button>

关于html - 转换伪元素和父元素时 z-index 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52101436/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com