当前位置: 首页 > 知识库问答 >
问题:

如何对CSS颜色变量应用不透明度?

慕光霁
2023-03-14

我正在电子中设计一个应用程序,因此我可以访问CSS变量。我在vars.css中定义了一个颜色变量:

:root {
  --color: #f0f0f0;
}

我想在main.css中使用这种颜色,但应用了一些不透明度:

css prettyprint-override">#element {
  background: (somehow use var(--color) at some opacity);
}

我该如何着手做这件事?我没有使用任何预处理器,只有CSS。我更喜欢全CSS的答案,但我会接受JavaScript/jQuery。

我不能使用不透明度,因为我使用的背景图像不应该是透明的。

共有3个答案

巴照
2023-03-14

我也处于类似的情况,但不幸的是,给定的解决方案对我不起作用,因为变量可以是从rgbhslhex甚至颜色名称的任何内容。
我现在解决了这个问题,通过将backed-Color不透明度应用于伪:在之后或:之前元素:

.container {
    position: relative;
}

.container::before {
    content: "";
    width: 100%;
    height: 100%;
    position: absolute;
    left: 0;
    background-color: var(--color);
    opacity: 0.3;
}

样式可能需要稍微改变,这取决于背景应该应用到的元素。< br >此外,它可能并不适用于所有情况,但希望它在其他解决方案无法使用的情况下有所帮助。

编辑:我刚刚注意到,这个解决方案显然也会影响文本颜色,因为它在目标元素前面创建了一个元素,并对其应用了透明的背景颜色。< br >在某些情况下,这可能是一个问题。

海宁
2023-03-14

我知道OP没有使用预处理器,但如果下面的信息是答案的一部分,我会得到帮助(我还不能评论,否则我会评论@BoltClock answer)。

例如,如果您使用的是scss,上面的答案将会失败,因为scss试图使用scss特定的rgba()/hsla()函数来编译样式,该函数需要4个参数。但是,rgba()/hsla()也是原生css函数,所以可以使用字符串插值来绕过scss函数。

示例(在sass 3.5.0中有效):

:root {
    --color_rgb: 250, 250, 250;
    --color_hsl: 250, 50%, 50%;
}

div {
    /* This is valid CSS, but will fail in a scss compilation */
    background-color: rgba(var(--color_rgb), 0.5);
    
    /* This is valid scss, and will generate the CSS above */
    background-color: #{'rgba(var(--color_rgb), 0.5)'};
}
<div></div>
吕承望
2023-03-14

您不能获取现有的颜色值并对其应用alpha通道。也就是说,您不能获取现有的十六进制值,例如#f0f0f0,给它一个alpha组件并将结果值与另一个属性一起使用。

但是,自定义属性允许您将十六进制值转换为 RGB 三元组以用于 rgba(),将该值存储在自定义属性中(包括逗号!),使用 var() 将该值替换为具有所需 alpha 值的 rgba() 函数,这样它就起作用了:

:root {
  /* #f0f0f0 in decimal RGB */
  --color: 240, 240, 240;
}

body {
  color: #000;
  background-color: #000;
}

#element {
  background-color: rgba(var(--color), 0.8);
}
html lang-html prettyprint-override"><p id="element">If you can see this, your browser supports custom properties.</p>
 类似资料:
  • 问题内容: 我正在设计电子应用程序,因此可以访问CSS变量。我在中定义了一个颜色变量: 我想在中使用此颜色,但应用了一些不透明度: 我将如何去做呢?我没有使用任何预处理器,只有CSS。我希望使用全CSS的答案,但是我会接受JavaScript / jQuery。 我无法使用,因为我使用的背景图片应该不透明。 问题答案: 您不能采用现有的颜色值并对其应用Alpha通道。也就是说,您不能使用现有的十六

  • 问题内容: 我没有使用CSS3。所以我不能使用或属性。不使用这些属性,如何使a透明?它应该是此链接中的文本框示例。这里的文本框背景色是透明的。我想做同样的事情,但是不使用上面提到的属性。 问题答案: 不透明度使您透明或透明。在这里查看示例Fiddle。 注意:这些不是CSS3属性

  • 在Canvas绘图时,可以通过绘制上下文的strokeStyle属性和fillStyle属性来设置图形的描边颜色和填充颜色。默认颜色为不透明的黑色。 strokeStyle属性和fillStyle属性可以被设置为任意有效的CSS颜色字符串,可以使用颜色名称、十六进制RGB颜色、RGB、RGBA、HSL、HSLA颜色中的任意一种。 在使用RGBA或HSLA颜色时,可以通过设置其透明度(alpha)来

  • #klem1,#klem2 { opacity:0.4; filter:alpha(opacity=40); /* For IE8 and earlier */ } #klem1:hover,#klem2:hover { opacity:1.0; filter:alpha(opacity=100); /* For IE8 and earlier */ } div.background { widt

  • 本文向大家介绍Android 颜色透明度(Alpha)级别,包括了Android 颜色透明度(Alpha)级别的使用技巧和注意事项,需要的朋友参考一下 示例 十六进制不透明度值 如果要将45%设置为红色。 红色的十六进制值-#FF0000 您可以在前缀中添加73以实现45%的不透明度-#73FF0000

  • 本文向大家介绍使用CSS设置背景色的不透明度,包括了使用CSS设置背景色的不透明度的使用技巧和注意事项,需要的朋友参考一下 要设置背景色的不透明度,请使用不透明度属性和RGBA颜色值。 示例 您可以尝试运行以下代码来实现opacity属性: