css - 带有 rgba 变量的盒子阴影

标签 css css-variables

所以我想要一个带有 Color 变量的盒子阴影。我在这里的帖子上看到 rgba(var(--card-border-color),0.75); 工作正常,但将它放在 box-shadow 属性中会破坏它。所以这不起作用:

box-shadow: 0px 0.46rem 2.18rem rgba(var(--card-shadow-color), 0.03),
    0px 0.93rem 1.4rem rgba(var(--card-shadow-color), 0.03),
    0px 0.25rem 0.53rem rgba(var(--card-shadow-color), 0.05),
    0px 0.12rem 0.18rem rgba(var(--card-shadow-color), 0.03);

我该如何解决这个问题?

最佳答案

如果满足以下条件,您的代码应该可以正常工作:注入(inject)变量后,您的颜色属性是一个有效的 CSS 值。例如,当您使用十六进制代码时,这会插入到 rgba(#040914, 0.33)。这不是有效的 CSS — 根据我的评论,它是有效的 SCSS,因为解析器会将其转换为有效的 CSS RGBA 颜色字符串。

您需要将十六进制颜色解构/转换为对应的 RGBA 颜色,这样它才能工作,这样它就会插值成类似 rgba(4, 9, 20, 0.33) 的颜色。这是通过做:

--card-shadow-color: 4, 9, 20;

请参阅下面的概念验证:

.box {
  --card-shadow-color: 4, 9, 20; /* RGB equivalent of #040914 */
  
  box-shadow: 0px 0.46rem 2.18rem rgba(var(--card-shadow-color), 0.03),
    0px 0.93rem 1.4rem rgba(var(--card-shadow-color), 0.03),
    0px 0.25rem 0.53rem rgba(var(--card-shadow-color), 0.05),
    0px 0.12rem 0.18rem rgba(var(--card-shadow-color), 0.03);
    
  /* Presentational styles */
  width: 100px;
  height: 100px;
  margin: 50px auto;
  border: 1px solid rgba(var(--card-shadow-color), 0.1);
}
<div class="box"></div>

关于css - 带有 rgba 变量的盒子阴影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59250927/

相关文章:

css - 是否可以在IE6/7/8中应用RGBA边框?

html - 表 : removing unwanted spaces between dt (with different sizes) 有问题

框阴影颜色函数中的 CSS 自定义属性在 Safari 中呈现不正确

css - 有什么方法可以使类名与 CSS 自定义变量相同?

angular - Angular 组件的自定义 CSS 属性

javascript - 使用 javascript 显示列表项

css - 在 scss 导入上设置 `font-display: swap`

javascript - CSS 变量和 Angular 5

css - 在 Stylus 迭代中使用 CSS 变量

HTML 相对字体太大