gpt4 book ai didi

html - CSS :before and :after for background shadows work as well with fixed elements for creating page curl effects

转载 作者:太空宇宙 更新时间:2023-11-03 18:05:39 24 4
gpt4 key购买 nike

我有一个元素,我想使用前后 css 属性添加阴影以创建页面 curl 效果。我在具有相对定位的元素上的其他地方完成了此操作。这工作正常并且是这样完成的:

.feed li{
display:block;
height:50px;
width:80%;
margin-left:10%;
position:relative;
clear:both;
margin-top:20px;
overflow:visible;
background:#FFF;
-webkit-box-shadow: 0 0 4px rgba(0, 0, 0, 0.2), inset 0 0 50px rgba(0, 0, 0, 0.1);
-moz-box-shadow: 0 0 4px rgba(0, 0, 0, 0.2), inset 0 0 50px rgba(0, 0, 0, 0.1);
box-shadow: 0 0 5px rgba(0, 0, 0, 0.2), inset 0 0 50px rgba(0, 0, 0, 0.1);
-webkit-border-top-right-radius: 6px;
-moz-border-radius-topright: 6px;
border-top-right-radius: 6px;
}
.feed li:before, .feed li:after{
position: absolute;
width: 40%;
height: 10px;
content: ' ';
left: 0px;
bottom: 12px;
-webkit-transform: skew(-5deg) rotate(-5deg);
-moz-transform: skew(-5deg) rotate(-5deg);
-ms-transform: skew(-5deg) rotate(-5deg);
-o-transform: skew(-5deg) rotate(-5deg);
transform: skew(-5deg) rotate(-5deg);
-webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.7);
-moz-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.7);
box-shadow: 0 6px 12px rgba(0, 0, 0, 0.7);
z-index: -1;
}
.feed li:after{
left:auto;
right: 0px;
top:12px;
bottom:auto;
-webkit-border-top-right-radius: 6px;
-moz-border-radius-topright: 6px;
border-top-right-radius: 6px;
-webkit-transform: skew(-5deg) rotate(-5deg);
-moz-transform: skew(-5deg) rotate(-5deg);
-ms-transform: skew(-5deg) rotate(-5deg);
-o-transform: skew(-5deg) rotate(-5deg);
transform: skew(-5deg) rotate(-5deg);
-webkit-box-shadow: 0 -6px 12px rgba(0, 0, 0, 0.4);
-moz-box-shadow: 0 -6px 12px rgba(0, 0, 0, 0.4);
box-shadow: 0 -6px 12px rgba(0, 0, 0, 0.4);
}

然而,当我在一个对象上使用类似的方法时,z-index 似乎被覆盖并且我的阴影出现在元素的顶部而不是它的后面。这就是我所拥有的:

    .nav{
z-index:1;
position:fixed;
background:#FFF;
top:0px;
bottom:0px;
left:0px;
width:200px;
-webkit-box-shadow: 0 0 4px rgba(0, 0, 0, 0.2), inset 0 0 50px rgba(0, 0, 0, 0.1);
-moz-box-shadow: 0 0 4px rgba(0, 0, 0, 0.2), inset 0 0 50px rgba(0, 0, 0, 0.1);
box-shadow: 0 0 5px rgba(0, 0, 0, 0.2), inset 0 0 50px rgba(0, 0, 0, 0.1);
}
.nav:before,.nav:after{
content:'';
position:fixed;
background: transparent;
z-index: -1;
width:195px;
height:50%;
-webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.6);
-moz-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.6);
box-shadow: 0 10px 12px rgba(0, 0, 0, 0.6);
}
.nav:before{
-webkit-transform: rotate(-2deg);
-moz-transform: rotate(-2deg);
-ms-transform: rotate(-2deg);
-o-transform: rotate(-2deg);
transform: rotate(-2deg);
bottom:0px;
left:0px;
}
.nav:after{
-webkit-transform: rotate(2deg);
-moz-transform: rotate(2deg);
-ms-transform: rotate(2deg);
-o-transform: rotate(2deg);
transform: rotate(2deg);
bottom:auto;
top:0px;
left:0px;
}

我不完全确定这里的问题是什么,我在其他元素上用这个方法没有任何问题。我唯一能想到的是固定元素受到的影响与其他元素不同。

最佳答案

tl;博士:Fiddle

引用W3C :

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

这意味着它们位于相对于父级的另一个堆栈上。不过,可以将它们放在 parent 身后。这是通过像您一样添加负 z-index 来完成的。

但是将这些伪元素放在父背景(如果有的话)后面似乎有问题。作为一种解决方案,建议将 z-index:1;position:relative; 添加到父级。这就是为什么您的第一个示例运行良好,而带有 position:fixed; 的示例却出现问题的原因。

在我的解决方案中,我更改了标记:

<div class="nav">
<div class="content">lorem ipsum</div>
<div class="shadows"></div>
</div>

并对元素应用适当的规则。我不知道你想象中的导航最终会是什么样子,但我认为我的解决方案看起来很棒。参见 Fiddle .

关于html - CSS :before and :after for background shadows work as well with fixed elements for creating page curl effects,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24727404/

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