css - CSS:Safari 上的堆叠顺序问题
问题描述
我正在尝试使用 CSS 创建一个形状,使用之前和之后的伪元素。形状呈现在 Chrome 和 Firefox 中,但在 Safari 中,:before 内容最终堆叠在 :after 内容之上,我不知道为什么。看起来它与我的 :before 元素中的转换有关,但我不确定我到底做错了什么,以及为什么它只在 Safari 中有所不同,我不知道如何修复它。
这是我在 Chrome/Firefox 上得到的 ,这也是我在 Safari 上得到的
.outer {
position: absolute;
top: 50px;
left: 100px;
transform: rotate(27deg);
}
.shape {
position: absolute;
height: 100px;
width: 100px;
background-color: blue;
border-radius: 50%;
}
.shape:before {
content: '';
position: absolute;
left: 36px;
top: 26px;
width: 200px;
height: 48px;
background-color: inherit;
border-top-right-radius: 50%;
border-bottom-right-radius: 50%;
transform: perspective(200px) rotateY(70deg);
}
.shape:after {
content: '';
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 92px;
height: 92px;
border-radius: 50%;
background:
radial-gradient(blue 17%, transparent 19%),
radial-gradient(red 26%, transparent 28%),
radial-gradient(blue 40%, transparent 42%),
red;
}
<div class="outer">
<div class="shape"></div>
</div>
解决方案
不确定到底是什么问题(我无法测试),但您可以调整:before
形状以考虑径向渐变,以创建透明部分并避免重叠,即使元素位于顶部。
这是一个示例,我明确地:before
在顶部制作了它并且它有效。我还稍微减少了代码。
.shape {
position: absolute;
top: 50px;
left: 100px;
height: 100px;
width: 100px;
transform: rotate(27deg);
}
.shape:before {
content: '';
position: absolute;
left: 36px;
top: 26px;
width: 200px;
height: 48px;
background: radial-gradient(25px 23px at left,transparent 98%, blue 100%);
border-top-right-radius: 50%;
border-bottom-right-radius: 50%;
transform: perspective(200px) rotateY(70deg);
z-index:1;
}
.shape:after {
content: '';
position: absolute;
top: 0;
left:0;
right:0;
bottom:0;
border-radius: 50%;
border:4px solid blue;
background:
radial-gradient(blue 17%, transparent 19%),
radial-gradient(red 26%, transparent 28%),
radial-gradient(blue 40%, transparent 42%),
red;
}
<div class="shape"></div>
推荐阅读
- python - 了解 ROUGE 与 BLEU
- python - 如何输入用int和字符串填充的列表
- python - Python中的生成器,代表无限流
- powerbi - 在 Power BI 中筛选大约一项度量
- vba - 在 Access VBA 中将表记录添加到列表框
- c# - 如何将文本而不是值从选择列表传递到 Asp .Net Core 中的控制器
- excel - ADO 连接后 Excel 崩溃
- html - 如果:target 不存在,如何为元素设置默认样式
- mysql - Redis、Cassandra等分布式数据库在微服务架构中是如何工作的?
- c# - 代码中的值与 excel 文件中的文本不同