您知道 CSS 自定义属性也可以处理图像吗?

Avatar of Robin Rendle
Robin Rendle

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

因此,您可能已经了解 CSS 自定义属性,它可以让您设置一个变量(例如主题颜色),然后像这样将其应用于多个类

:root {
  --theme: #777;
}

.alert {
  background: var(—-theme);
}

.button {
  background: var(—-theme);
}

好吧,我已经看到这种模式很多次了,我认为自定义属性只能用于像 rgba 或十六进制这样的颜色值——尽管事实并非如此! 在经过一些实验和探索后,我意识到可以使用自定义属性来设置图像路径。

这是一个实际应用的示例

:root {
  --errorIcon: url(error.svg)
}

.alert {
  background-image: var(--errorIcon);
}

.form-error {
  background-image: var(--errorIcon);
}

很酷,不是吗? 我认为这可以用来创建一个图标系统,您可以在其中定义一个完整的图像列表 :root 并在需要时调用它。 或者,您也可以根据其状态或可能在媒体查询中更容易地对某些类进行主题化。 记住,自定义属性也可以在元素内被覆盖

:root {
  --alertIcon: url(alert-icon.svg)
}

.alert {
  background-image: var(--alertIcon);
}

.form-error {
  --alertIcon: url(alert-icon-error.svg)
  background-image: var(--alertIcon);
}

而且,考虑到自定义属性可以在 JavaScript 中被选中,请考虑交换图像的可能性。 我认为这可能很有用!