假设我们有一个存储背景色的类列表。
.bgr-red //background-color: rgb(255, 0, 0);
.bgr-green //background-color: rgb(0, 0 , 255);
.bgr-blue //background-color: rgb(0, 128, 0);
我们有一个使用这些类之一的div。
<div class="bgr-red">...</div>
有什么办法可以创建一组包含Alpha通道的新类?这样的事情(我尝试过这种方法,但是没有用):
.alpha-90 //background-color: rgba(inherit, inherit, inherit, .9);
.alpha-80 //background-color: rgba(inherit, inherit, inherit, .8);
.alpha-70 //background-color: rgba(inherit, inherit, inherit, .7);
最终目的是能够将背景色的不透明度放入与其他背景色值分开的div中吗?像这样创建一个div:
<div class="bgr-red alpha-80">...</div>
谢谢。
答案 0 :(得分:7)
使用CSS变量:
.bgr-red {
background-color: rgba(255, 0, 0, var(--a, 1));
}
.bgr-green {
background-color: rgba(0, 0, 255, var(--a, 1));
}
.bgr-blue {
background-color: rgba(0, 128, 0, var(--a, 1));
}
.alpha-90 {
--a: 0.9;
}
.alpha-70 {
--a: 0.7;
}
.alpha-10 {
--a: 0.1;
}
<div class="bgr-red">...</div>
<div class="bgr-red alpha-70">...</div>
<div class="bgr-red alpha-10">...</div>
为了获得更好的支持,您可以考虑使用伪元素来创建背景层并调整不透明度:
div {
position: relative;
z-index: 0;
}
div::before {
content: "";
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: -1;
}
.bgr-red::before {
background-color: rgb(255, 0, 0);
}
.bgr-green::before {
background-color: rgb(0, 0, 255);
}
.bgr-blue::before {
background-color: rgb(0, 128, 0);
}
.alpha-90::before {
opacity: 0.9;
}
.alpha-70::before {
opacity: 0.7;
}
.alpha-10::before {
opacity: 0.1;
}
<div class="bgr-red">...</div>
<div class="bgr-red alpha-70">...</div>
<div class="bgr-red alpha-10">...</div>