本文介绍如何使用JavaScript获取CSS自定义属性值,并构建一个自动生成的调色板示例。 我们知道,可以使用getComputedStyle
和getPropertyValue
来访问单个自定义属性,但如果有多个属性,则需要编写大量重复代码。本文将展示如何自动化此过程。
假设我们已在HTML元素上声明了多个自定义属性:
html { --color-accent: #00eb9b; --color-accent-secondary: #9db4ff; --color-accent-tertiary: #f2c0ea; --color-text: #292929; --color-divider: #d7d7d7; }
我们可以通过以下步骤自动获取所有自定义属性并生成调色板:
-
获取所有样式表: 使用
document.styleSheets
获取页面上的所有样式表(内部和外部)。 -
过滤第三方样式表: 为了安全起见,只处理当前域上的样式表。 我们使用
isSameDomain
函数过滤掉第三方样式表:const isSameDomain = (styleSheet) => { if (!styleSheet.href) return true; return styleSheet.href.indexOf(window.location.origin) === 0; };
-
获取所有样式规则: 使用
reduce
和concat
方法,将所有样式规则合并到一个数组中。 -
过滤非基本样式规则: 只保留
CSSStyleRule
类型的规则,忽略其他类型规则(如CSSMediaRule
)。 使用isStyleRule
函数进行过滤:const isStyleRule = (rule) => rule.type === 1;
-
获取所有属性的名称和值: 遍历每个样式规则的
style
属性(CSSStyleDeclaration
对象),使用map
方法获取所有属性的名称和值。 -
过滤非自定义属性: 只保留以
--
开头的自定义属性。 使用filter
方法进行过滤。 -
生成HTML: 使用
reduce
方法,根据获取的自定义属性和值,生成HTML代码,用于显示调色板。 我们使用<div>元素作为颜色样本,并使用内联样式设置颜色。 外部CSS使用<code>var(--color)
来设置背景颜色。最终代码会类似于以下结构(具体实现细节请参考原文):
const getCSSCustomPropIndex = () => [...document.styleSheets] .filter(isSameDomain) .reduce((finalArr, sheet) => finalArr.concat( [...sheet.cssRules] .filter(isStyleRule) .reduce((propValArr, rule) => { const props = [...rule.style] .map((propName) => [propName.trim(), rule.style.getPropertyValue(propName).trim()]) .filter(([propName]) => propName.indexOf("--") === 0); return [...propValArr, ...props]; }, []) ), []); const cssCustomPropIndex = getCSSCustomPropIndex(); document.querySelector(".colors").innerHTML = cssCustomPropIndex.reduce( (str, [prop, val]) => `${str}<div class="color__swatch" style="--color: ${val};"></div>`, "");
这个方法可以自动生成一个显示所有CSS自定义属性的调色板,无需手动编写大量代码。 未来,可以使用CSS Typed Object Model Level 1 draft中的
CSSStyleRule.styleMap
属性简化代码。
以上是如何在JavaScript中的页面上获取所有自定义属性的详细内容。更多信息请关注PHP中文网其他相关文章!

前几天我得到了这个问题。我的第一个想法是:奇怪的问题!特异性是关于选择者的,而在符号不是选择器,那么...无关紧要?

在这篇文章中,我们将使用我构建和部署的电子商务商店演示来进行Netlify,以展示如何为传入数据制作动态路线。这是一个公平的


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

Dreamweaver CS6
视觉化网页开发工具

WebStorm Mac版
好用的JavaScript开发工具

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

记事本++7.3.1
好用且免费的代码编辑器