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

2024-03-21

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

:root {
  --color: #f0f0f0;
}

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

#element {
  background: (somehow use var(--color) at some opacity);
}

我该怎么做呢?我没有使用任何预处理器,只使用CSS。我更喜欢全 CSS 答案,但我会接受 JavaScript/jQuery。

我无法使用opacity因为我使用的背景图像不应该是透明的。


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

但是,自定义属性允许您将十六进制值转换为 RGB 三元组,以便与rgba(),将该值存储在自定义属性中(包括逗号!),使用该值替换var()进入一个rgba()函数与你想要的 alpha 值,它就会工作:

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

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

#element {
  background-color: rgba(var(--color), 0.8);
}
<p id="element">If you can see this, your browser supports custom properties.</p>

This seems almost too good to be true.1 How does it work?

神奇之处在于自定义属性的值被替换as is更换时var()属性值中的引用,before该属性的值已计算。这意味着就自定义属性而言,--color在你的例子中根本不是颜色值until a var(--color)表达式出现在需要颜色值的地方(并且仅在该上下文中)。从第2.1节 https://www.w3.org/TR/css-variables-1/#syntaxcss 变量规范:

自定义属性允许的语法非常宽松。 产生式匹配一个或多个标记的任何序列,只要该序列不包含 、不匹配的 、 或 或顶级 标记或值为“!”的 标记。

例如,以下是有效的自定义属性:

--foo: if(x > 5) this.width = 10;

虽然这个值作为变量显然是无用的,因为它在任何普通属性中都是无效的,但它可能会被 JavaScript 读取并执行操作。

And 第3节 https://www.w3.org/TR/css-variables-1/#using-variables:

如果某个属性包含一个或多个 var() 函数,并且这些函数在语法上有效,则必须假定整个属性的语法在解析时有效。仅在替换 var() 函数后,在计算值时对其进行语法检查。

这意味着240, 240, 240您在上面看到的值会直接替换为rgba()功能before声明已计算。所以这:

#element {
  background-color: rgba(var(--color), 0.8);
}

起初这似乎不是有效的 CSS,因为rgba()期望不少于四个逗号分隔的数值,则变为:

#element {
  background-color: rgba(240, 240, 240, 0.8);
}

当然,这是完全有效的 CSS。

更进一步,您可以将 alpha 分量存储在其自己的自定义属性中:

:root {
  --color: 240, 240, 240;
  --alpha: 0.8;
}

并替换它,得到相同的结果:

#element {
  background-color: rgba(var(--color), var(--alpha));
}

这允许您拥有可以即时交换的不同 alpha 值。


1 Well, it is, if you're running the code snippet in a browser that doesn't support custom properties.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将不透明度应用于 CSS 颜色变量? 的相关文章

  • 如何将文本环绕在非矩形图像周围?

    是否可以将文本环绕在非矩形图像周围 我希望不同国家的地图周围的文本环绕该国家 地区的形状 即使边界本身不是直的 文本也始终与该国家 地区的边界保持相同的距离 这可能吗 您可以使用这个方法 http torylawson com index
  • tkinter 中无法设置背景颜色

    我对这个简单的 tkinter 程序越来越绝望 我似乎无法更改背景颜色 或单个小部件的颜色 这里出了什么问题 以下是我的各种尝试以及收到的错误的要点 import tkinter import tkinter ttk as tk root
  • 如何在 Angular 应用程序中动态更改 CSS 类名称?

    我有两个 CSS 类名 如下所示 icon heart color bdbdbd icon heart red color a6b7d4 我的 HTML 包含一个心形图标 div class icon heart div
  • Bootstrap:列表内联项目符号?

    有人知道如何在 Bootstrap 3 中水平列表中的元素之间添加项目符号 分隔符吗 ul class list inline li Author Michal li li Modified 17 08 2014 li li Comment
  • 强制应用媒体查询

    我有这个 html 和 css 代码 div class wrapper div class a div div class b div div media all and max width 400px max height 300px
  • iPhone 4 上不稳定的 CSS3 动画

    我有一个非常简单的 或者至少我认为是 动画 我所做的只是 webkit background size 的动画 bubble position relative width 397px height 326px background url
  • 设置绝对仓位和保证金

    我想设置一个元素的position to absolute并有一个margin bottom 但似乎margin bottom没有效果 HTML div div CSS container border 1px solid red posi
  • 如何选择一个元素但排除其子元素

    我明白 div hover not class 作品 但是 如何实现 LI 元素的 悬停 效果 但排除鼠标悬停在LI内的某个 DIV 上时的悬停效果 E G li Hello div Bye div li 我想获得 li 的悬停效果 li
  • 标题后的三角形与标题背景渐变相匹配

    我必须制作这样的标题 我用这个渐变制作标题没有问题 我也知道如何定位三角形 after 但是 如何使三角形颜色与标题背景相匹配 问题是梯度不是静态的 例如 如果我在智能手机中打开页面 由于屏幕较短 渐变将比在显示器中打开更 紧凑 所以箭头颜
  • Sass mixin 将背景透明度恢复到 IE8

    我是 Sass 新手 并为此苦苦挣扎 我无法在两者中渲染颜色hex 对于 IE 和rgba 每一个小片段都让我感到沮丧 因为我还没有掌握语法 而且 Sass 的 Google 结果仍然很少 这是混合 mixin transparent he
  • 如何在 Shiny 中动态渲染的 textInput 添加样式元素

    你好堆栈溢出 在我最近提出的问题中 我已经解决了一些与动态渲染 UI 元素相关的主要问题 并在一些了不起的人的帮助下动态创建了观察者 参见此处 动态渲染的 UI 如何在第二次运行时删除旧的反应变量 https stackoverflow c
  • Bootstrap

    我正在尝试使用 Bootstrap 构建一个网站 到目前为止 一切都按计划进行 我想要一个固定的导航栏 并且我正在使用内置函数 div class navbar navbar fixed top 这很棒 正是我所需要的 但我希望导航和标题从
  • Bootstrap 响应式表格在 iOS 设备上无法垂直滚动

    这就是我所拥有的 div class table responsive table class table style background transparent table div 我正在使用以下 bootstrap css 文件 ht
  • 如何使用CSS缩放图像以填充div并保持纵横比?

    我想用一个 div 填充img 保持纵横比并根据需要拉伸宽度或高度以适应 div style width 80px height 80px img src div 我怎样才能实现它 如果图像不是二次方的 则必须将其 放大 并根据哪一侧较大而
  • Firefox 忽略 CSS 中的最小高度

    由于某些原因 最小高度在 Firefox 上不起作用 我尝试在 body 上设置 min height 但 Firefox 完全忽略了它 由于我的页面是动态的 我不能只将高度设置为 100 我应该怎么办 body border 1px so
  • Chrome 19 无法识别字体粗细:较轻

    我刚刚启动了一个正在开发的项目以进行一些修改 并注意到该声明font weight lighter正在通过以下方式提供服务 font face并且它不再在网站上运行 参见图片 顶部镀铬 底部 ff 自昨晚以来 我的系统 Windows 上没
  • OpenGL 使用着色器将 NV12 转换为 RGB24

    我尝试编写一个应用程序来在 OpenGL 中显示 YUV 图像 我使用此代码片段在 C 中成功将 Y UV 转换为 RGB source https blog csdn net subfate article details 4730514
  • Svelte 条件元素类报告为语法错误

    我正在做一个if块每if 块的精简指南 https svelte technology guide if blocks 这看起来很简单 但 Svelte 认为这是一个语法错误 svelte plugin ParseError Unexpec
  • 使用flex-basis控制行上显示的项目数

    我想在使用 Flex 时将元素推出以隐藏它们 例如 如果flex basis为 50 仅显示两个项目弯曲到给定空间 而其他元素则在overflow hidden 领土 Or if flex basis为 25 则仅显示 4 个 Flex 元
  • 为什么我的 Web 组件 CSS 不显示?我没有使用shadowDOM

    我有一个没有使用 ShadowDOM 的 Native V1 组件 所以我将 CSS 放在 但是当其他人使用我的组件时 我的 CSS 就不再起作用了 仅当其组件确实使用 ShadowDOM 时才会发生这种情况 我的组件的示例代码 class

随机推荐

  • WScript Sendkeys 不接受 Unicode 字符

    我正在尝试使用 WScript Sendkeys 发送字符 似乎它不起作用 我找到了一个帖子VBscript 的 SendKeys 是否支持 Unicode https stackoverflow com questions 3198574
  • 异步加载 BitmapSource 图像时出现内存泄漏

    我有一些图像正在加载到 WPF 应用程序的列表框中 最初我使用 GDI 来调整图像大小 原始图像占用太多内存 这很好 只是每张图像花费了大约 400 毫秒的时间 不太好 因此 在寻找另一个解决方案时 我找到了一种使用 Transformed
  • 如何使用dotnet在linux上生成资源文件

    在 Windows 上 我们可以使用 Resgen exe 从 txt 文件生成 resources 文件 在 Linux 上 我如何使用 NET Core 实现相同的效果 None
  • Google Analytics 双重列表(带和不带正斜杠)

    我们在 Google Analytics 中的大多数网址都出现了双重列表 如下所示 Home Specials Home Specials 该网站基于 MS MVC3 第一个通常显示加载期很短 退出率几乎为零 大多数真实用户数据位于第二个
  • 原则 2 的 GIS 扩展

    我想为我的 Doctrine 2 项目编写一个 GIS 地理空间数据 扩展 我知道如何编写简单的自定义函数和类型 为了适应MySQL特殊的存储格式 我在检索 存储数据时需要使用一些SQL函数 GeomFromWKB 和AsBinary 我找
  • 是否可以在将身份字段值保存到实体框架之前获取它

    我有一个客户和销售表 CUSTOMER Id int auto increment Name SALES Id int auto increment CustomerId int OrderTotal decimal 有了Guid我就可以做
  • 在 wampserver 上安装 PEAR

    在 wampserver 上安装 PEAR 的所有指南 例如交响乐指南 http trac symfony project org wiki HowToInstallPearOnWindowsWithWamp 假设我要在某个 PEAR 目录
  • 分布式序列号生成?

    我一般都实现了序列号生成过去使用数据库序列 例如使用 Postgres SERIAL 类型http www neilconway org docs sequences http www neilconway org docs sequenc
  • 如何在渲染前使用 setState 更新状态

    我将在序言中声明我是 React js 的初学者 我创建了一个我正在开发的项目示例 在该项目中 我在 componentDidMount 中调用 API 并获取对象数组 并将其设置为状态 它看起来是这样的 class App extends
  • 如何将@request注入到服务中?

    当我尝试将 request 注入到我的任何服务中时 我收到此异常 ScopeWideningInjectionException 检测到范围扩大注入 定义 service navigation 引用服务 request 属于比较窄的范围 一
  • 如何在多个 Angular 组件之间共享 api 响应?

    我试图把我的头绕过去并使用BehaviourSubject在 Angular 中 到目前为止还没有太多运气 我的目标是在我的组件之间共享 api 请求响应 这是我的项目的 stackblitz 设置 https stackblitz com
  • 在 Tomcat 中打开新线程

    我只是问理论问题 我有一个需要一段时间的操作 该操作是在某些 Servlet doGet doPost 方法或 Spring MVC 控制器内部执行的 打开新的后台线程并在那里执行是个好主意吗 不会导致性能问题吗 如果我在这种情况下使用 j
  • 通过 VPN 的 Python 请求给出 502 Bad Gateway

    我正在尝试使用以下命令从公司网络内的服务器获取一些数据requests图书馆 我使用 VPN 进入公司网络 并且还设置了公司代理 我尝试访问的地址仅在该公司网络内可见 import requests url http some privat
  • 将 clojure 映射/数组写入文件并读回

    我需要将 clojure 映射保存到文件中并稍后读回以处理它们 这就是我能想到的 有没有更好的方法来完成同样的事情 user gt def my data for a Person1 Person2 b Address1 Address2
  • 对 Python 正在处理其输出的外部程序进行计时

    我想测量我的 Python 脚本使用其输出的外部程序的执行时间 Calling extprogram产生输出的程序 目前我做了类似的事情 import time import subprocess def process output li
  • 尝试将打字稿库与 webpack 捆绑时导出未定义

    我有一个正在用打字稿开发的库 我有通过 tsc 构建它以将其用作 npm 包的解决方案 但 tsc 单独翻译每个文件 我想使用 webpack 将所有内容创建在一个缩小的文件中 但它不起作用 我做了一些测试 使用 module export
  • 如何在页面重新加载时将值保留在 blazor Web 程序集中的单例状态容器中

    我练习和学习blazor web assembly 我正在学习组件之间通信的方法 一种这样的方法是使用状态容器 这按预期工作 但它不能维持页面刷新的价值 这是我的状态容器类 AppState public class AppState pu
  • 了解使用右值/左值的模板参数推导

    这是来自的后续函数模板无法识别左值 https stackoverflow com questions 22166767 template function does not recognize lvalue 22166879 221667
  • C# 中的私有方法单元测试

    Visual Studio 允许通过自动生成的访问器类对私有方法进行单元测试 我编写了一个私有方法的测试 该方法编译成功 但在运行时失败 代码和测试的相当最小的版本是 in project MyProj class TypeA privat
  • 如何将不透明度应用于 CSS 颜色变量?

    我正在使用 Electron 设计一个应用程序 因此我可以访问 CSS 变量 我已经定义了一个颜色变量vars css root color f0f0f0 我想用这个颜色main css 但应用了一些不透明度 element backgro