任何地方的颜色 Alpha

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您旅程的每个阶段提供云产品。 立即开始使用 200 美元的免费积分!

在我的 “自定义属性的不同使用程度” 文章中,我注意到关于颜色和 CSS 自定义属性的一种情况,在那里我将 HSL 颜色值分解得“过头”了。 将每个颜色都分解成其 H、S 和 L 部分可能有点过头了。

但是您可能确实希望像这样将其分解

html {
  --color-1-hsl: 200deg 15% 73%;
  --color-1: hsl(var(--color-1-hsl));
}

因此,在您的颜色系统中,每个颜色使用两个自定义属性。 为什么?因为现在您有了一种非常简单的方法来使用它,并且如果您需要,还可以使用一种方法将 alpha 应用于颜色。

.card {
  background: var(--color-1);
}
.card-with-alpha {
  background: hsl(var(--color-1-hsl) / 0.5);
}

实际上没有其他方法可以在 CSS 中获取现有颜色并为其应用 alpha 透明度。 嗯,我这么说,但实际上

/* Future CSS! (works in Safari TP right now) */
.card-with-alpha {
  background: hsl(from var(--color-1) h s l / 0.5);
}

这很巧妙,但我并不完全确定我们何时才能在生产环境中依赖它。

您知道我们还不能在生产环境中用于任何非常重要的事情是什么吗?Houdini 绘制工作线程。 Firefox 或 Safari 还没有这些

有点可惜,因为Dave 几乎已经破解了这个东西! 这里需要注意的是,Houdini 绘制工作线程基本上会返回一个使用<canvas> API 绘制的图像。 您可以在 Canvas 中使用任何颜色格式绘制一个矩形,然后设置globalAlpha,将其作为图像返回,因此这基本上可以解锁任何颜色格式上的 alpha! 它有效(在 Chrome 中)

Dave 将代码放在 GitHub 上写了博客。 当然,它也制作了一个不错的视频

点赞和订阅。

但是,如果您需要在生产环境中使用这样的系统,只需使用我首先列出的自定义属性技术即可。

之前版本的这篇文章被推文轰炸了,但我在这里写博客,因为真正的博主会写博客。