mat*_*ram 6 css safari css-variables box-shadow
这是一个Safari bug还是我做错了什么?
在Safari与Chrome和Firefox中查看此CodePen:https://codepen.io/mattaningram/pen/zWVxzR
或者在下面运行代码段:
.item {
--itemColor: 200, 0, 0;
--itemColorHex: #C80000;
width: 50vw;
height: 50vh;
background-color: rgba( var(--itemColor), 1 );
-webkit-box-shadow: 0 0 15px 10px rgba( var(--itemColor), .5 );
box-shadow: 0 0 15px 10px rgba( var(--itemColor), .5 );
/* box-shadow: 0 0 15px 10px var(--itemColorHex); THIS WORKS */
/* color: rgba( var(--itemColor), .5 ); BOX-SHADOW INHERITS THIS PROPERLY IF UNCOMMENTED */
}
.wrapper {
height: 100vh;
width: 100vw;
display: flex;
align-items: center;
justify-content: center;
}Run Code Online (Sandbox Code Playgroud)
<div class="wrapper">
<div class="item"></div>
</div>Run Code Online (Sandbox Code Playgroud)
在Safari中,box-shadow呈现为黑色(应为红色),没有alpha.如果您不使用,这确实有效rgba(请参阅注释掉的box-shadow行).
奇怪的是,Safari inspect元素识别CSS调用并且能够识别CSS自定义属性值:

更奇怪的是,如果你将项目的color(文本颜色)属性设置为自定义属性,则box-shadow继承它并且它可以工作(遗憾的是在我的实际实现中我需要多个框阴影,所以这不能解决我的问题) .
这是一个 Safari 错误:https : //bugs.webkit.org/show_bug.cgi?id=185940
使自定义属性在 box-shadow 中工作的唯一方法是将整个颜色放入变量中
.item {
--color: rgba(200, 0, 0, 0.5);
box-shadow: 0 0 10px var(--color);
}
Run Code Online (Sandbox Code Playgroud)
编辑:看起来它自 Safari 13.0.3 以来已修复
我已经解决了您的问题,如果您只是在框阴影中添加可变颜色,那么它将无法在Safari浏览器中使用。但是,通过在代码中进行一些操作,您可以轻松实现。
这里有几个步骤。
选择RGB值中的任何根色。
:根 {
-颜色:130、16、253;
}
为盒子阴影添加相同的颜色但带有一定的不透明性。这是在另一个--shadowColor变量中使用一个变量的技巧。
:根 {
-颜色:130、16、253;
--shadowColor:0px 10px 50px 0px rgba(var(-color),0.08);
}
将颜色和框阴影应用于任何对象。
.feature_box
{
颜色:rgba(var(-color),1);
-webkit-box-shadow:var(-shadowColor);
box-shadow:var(-shadowColor);
}
请享用:)
| 归档时间: |
|
| 查看次数: |
1437 次 |
| 最近记录: |