有没有可能继承颜色但是覆盖不透明度值?下面是一个pseudoCSS的例子:
.color-class {
background-color: rgba(255, 0, 0, 0);
}
.lighten {
background-color: rgba(inherit, inherit, inherit, .4);
}
适用于
<div style="color-class">I am red</div>
<div style="color-class lighten">
I am red and a little bit transparent
</div>
应该导致一个彩色元素,另一个元素是相同的(继承的)颜色,但增加了透明度。
我基本上希望有一个CSS类,可以在不改变颜色值的情况下使背景颜色变亮(或变暗)。
3条答案
按热度按时间bxpogfeg1#
一种解决方案是使用伪元素作为背景,并简单地控制其不透明度:
62lalag42#
首先,这不起作用,因为inherit从元素父元素而不是其兄弟元素中取值。请参见:https://developer.mozilla.org/en-US/docs/Web/CSS/inherit
其次,inherit关键字是一个属性值,它不能用作浏览器函数(rgba)的参数,因为函数本身就是一个属性值。
你也不需要如此努力地强制继承和可重用性,这通常会使你的代码膨胀,使它过度工程化。
你最好有一套配色方案,因此能够选择一个固定的颜色变亮,考虑到你会重复使用这个没有太多的需要尝试,使它像这样的动态。
如果你真的想要这个功能,你可以选择使用SASS/SCSS混合来模拟这个继承,JavaScript也可以是一个替代方案,但是对于你试图实现的目标来说,这将是非常低效的。
lawou6xi3#
你可以这样做,只要使用CSS变量。假设你有一个设置了背景的元素,你想改变它的不透明度。
添加用于更改不透明度的新类:
在CSS中:
"255,230,0"是黄色的...
就是这样,你也可以根据自己的需要随意操纵这个方法。
一个三个三个一个