就像标题所说,我想以某种方式为css变量中定义的十六进制颜色添加透明度。我已经在其他帖子中看到过使用 rgb 的解决方案,但我需要十六进制。 也许使用 rgba((、calc(( 或 linear-gradient((,但我的尝试没有达到任何结果。
有人可以帮忙吗?
我找不到任何相关帖子,因为我使用的是十六进制颜色和 css 变量
例如:
:root {
--blue: #0000ff;
}
.blue-with-alpha {
color: var(--blue)66; /* I am trying to achieve something like this */
}
使用新的color-mix
函数,这是可能的:
:root {
--blue: #0000ff;
}
.blue-with-alpha {
background-color: color-mix(in srgb, var(--blue), transparent 66%);
}
<p class="blue-with-alpha">Some content</p>
在项目中使用它之前,请检查浏览器支持。
有关更多详细信息,您可以查看本文:https://una.im/color-mix-opacity/
对此有几种潜在的解决方案:
• 调整变量以使用 RGB 值,以便您可以轻松地在 CSS 中添加 alpha
::root {
--blue: 0, 0, 255;
}
.blue-with-alpha{
color: rgba(var(--blue), 0.44);
}
• 您还可以将 alpha 添加为变量:
:root {
--blue: 0, 0, 255;
--alpha: .44;
}
.blue-with-alpha{
color: rgba(var(--blue), var(--alpha);
}
• 使用不透明度:
:root {
--blue: #0000ff;
}
.blue-with-alpha {
color: var(--blue);
opacity: .44;
}
• 为高亮显示定义不同的变量:
:root {
--blue: #0000ff;
--blue-highlight: #0000ff66;
}
.blue-with-alpha{
color: var(--blue-highlight);
}
从 Safari 16.4 开始,您可以使用相对颜色语法来实现它。但是Chrome 111和Firefox 111目前不支持这种语法。
.blue-with-alpha {
color: rgb(from var(--blue) r g b / 0.4)
}