当我们使用CSS变量开发页面主题时,难免遇到这样的场景,假设有一个主色--primary-color: #2a8b92;,在某些地方想使用透明度为0.5的主色、0.8的主色。。。这个时候该怎么办呢?在这之前,我只能定义多个主色变量:

1
2
3
4
5
6
:root {
--primary-color: #2a8b92;
--primary-color-opacity-05: rgba(42, 139, 146, 0.5);
--primary-color-opacity-08: rgba(42, 139, 146, 0.8);
--primary-color-opacity-10: rgba(42, 139, 146, 1);
}

这样一来,需要维护的变量就太多了,好在CSS变量支持如下写法:

1
2
3
:root {
--primary-color: 42, 139, 146;
}

使用时只需这样即可:

1
2
3
4
.element {
background: rgba(var(--primary-color), 0.5);
border-color: rgba(var(--primary-color), 1);
}

但这样每次使用时都需要写rgb或rgba,略微麻烦,所以一般可以这样:

1
2
3
4
:root {
--primary-color-rgb: 42, 139, 146;
--primary-color-hex: #2a8b92;
}

这样当需要透明度时使用--primary-color-rgb,当不需要透明度时直接使用--primary-color-hex

1
2
3
4
.element {
background: rgba(var(--primary-color-rgb), 0.5);
border-color: var(--primary-color-hex);
}