如何利用 JavaScript 的 CSSOM 动态操作样式表规则?

幻影之瞳

幻影之瞳

2025-10-04

535人浏览

原创

通过cssom可动态操作样式表,如增删改规则;利用document.stylesheets获取样式表集合,遍历cssrules读取规则,用insertrule和deleterule插入删除规则,动态创建style标签可避免影响现有样式,适用于主题切换与样式管理。

如何利用 javascript 的 cssom 动态操作样式表规则?

JavaScript 的 CSSOM(CSS Object Model)提供了直接操作样式表的能力,不只是修改单个元素的 style 属性,还能动态增删改整个 CSS 规则。这在实现主题切换、运行时样式注入或组件化样式管理时非常有用。

访问样式表

通过 document.styleSheets 可以获取页面中所有样式表的集合,包括 link 引入的和 style 标签内联的:

const sheets = document.styleSheets;

每个 sheet 对象代表一个 CSSStyleSheet 实例,可通过索引访问:

const sheet = document.styleSheets[0];

注意:跨域的外部样式表受同源策略限制,无法操作其 rules。

读取与修改 CSS 规则

CSSStyleSheet 的 cssRules 属性返回一个包含所有 CSSRule 的类数组对象。可以遍历规则进行查找或修改:

for (let rule of sheet.cssRules) {<br>  console.log(rule.selectorText, rule.style.cssText);<br>}
例如,想修改 .highlight 的背景色:

for (let rule of sheet.cssRules) {<br>  if (rule.selectorText === '.highlight') {<br>    rule.style.backgroundColor = 'yellow';<br>  }<br>}

插入新样式规则

使用 insertRule() 方法可在指定位置插入一条新规则:

sheet.insertRule('p { color: blue; }', 0);

ApiPost接口调试与文档生成工具
ApiPost接口调试与文档生成工具

ApiPost是一个支持团队协作,支持模拟POST、GET、PUT等常见请求,并可直接生成文档的API调试、管理工具,ApiPost是后台接口开发者或前端、接口测试人员的工作必备工具。快速生成、一键导出API文档。感兴趣的朋友快来下载吧。软件说明ApiPost官方版是一款十分出色的接口调试与文档生成工具,ApiPost官方版界面美观大方,功能强劲实用,支持团队协作,支持模拟POST、GET、PUT等常见请求,是后台接口开发者或前端、接口测试人员的工作必备工具。软件特色更方便支持接口调试的同时快速生成、一键

下载
第二个参数是插入位置索引,0 表示最前面。 实际应用中常用于动态创建类:

sheet.insertRule('.fade { opacity: 0.5; transition: opacity 0.3s; }', sheet.cssRules.length);

删除样式规则

通过 deleteRule(index) 删除指定位置的规则:

sheet.deleteRule(1); // 删除第二条规则

如果知道规则内容但不确定位置,可先遍历匹配再删除:

[...sheet.cssRules].forEach((rule, index) => {<br>  if (rule.selectorText === '.obsolete') {<br>    sheet.deleteRule(index);<br>  }<br>});

创建新的样式表

若没有现成的可操作样式表,可动态创建并添加到页面:

const style = document.createElement('style');<br>document.head.appendChild(style);<br>const sheet = style.sheet;<br>sheet.insertRule('body { margin: 0; }', 0);
这种方式完全可控,避免影响已有样式表。

基本上就这些。掌握 CSSOM 操作后,你可以更灵活地管理样式逻辑,尤其适合封装成工具函数或 UI 主题系统。关键是理解 cssRules 的只读性(需用方法修改)和同源限制。不复杂但容易忽略细节。

Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

java css javascript 跨域

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
if什么意思
if什么意思

if的意思是“如果”的条件。它是一个用于引导条件语句的关键词,用于根据特定条件的真假情况来执行不同的代码块。本专题提供if什么意思的相关文章,供大家免费阅读。

2023.08.22

1020

3

php中foreach用法
php中foreach用法

本专题整合了php中foreach用法的相关介绍,阅读专题下面的文章了解更多详细教程。

2025.12.04

450

13

c语言const用法
c语言const用法

const是关键字,可以用于声明常量、函数参数中的const修饰符、const修饰函数返回值、const修饰指针。详细介绍:1、声明常量,const关键字可用于声明常量,常量的值在程序运行期间不可修改,常量可以是基本数据类型,如整数、浮点数、字符等,也可是自定义的数据类型;2、函数参数中的const修饰符,const关键字可用于函数的参数中,表示该参数在函数内部不可修改等等。

2023.09.20

1128

7

length函数用法
length函数用法

length函数用于返回指定字符串的字符数或字节数。可以用于计算字符串的长度,以便在查询和处理字符串数据时进行操作和判断。 需要注意的是length函数计算的是字符串的字符数,而不是字节数。对于多字节字符集,一个字符可能由多个字节组成。因此,length函数在计算字符串长度时会将多字节字符作为一个字符来计算。更多关于length函数的用法,大家可以阅读本专题下面的文章。

2023.09.19

1236

6

console接口是干嘛的
console接口是干嘛的

console接口是一种用于在计算机命令行或浏览器开发工具中输出信息的工具,提供了一种简单的方式来记录和查看应用程序的输出结果和调试信息。本专题为大家提供console接口相关的各种文章、以及下载和课程。

2023.08.08

572

5

console.log是什么
console.log是什么

console.log 是 javascript 函数,用于在浏览器控制台中输出信息,便于调试和故障排除。想了解更多console.log的相关内容,可以阅读本专题下面的文章。

2024.05.29

2368

7

margin在css中是啥意思
margin在css中是啥意思

在CSS中,margin是一个用于设置元素外边距的属性。想了解更多margin的相关内容,可以阅读本专题下面的文章。

2023.12.18

713

10

css3transition
css3transition

css3transition属性用于指定如何从一个CSS样式过渡到另一个CSS样式,本专题为大家提供transition相关的文章、相关下载和相关课程,大家可以免费体验。

2023.06.27

951

7

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 1.3万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 5万人学习

CSS教程
CSS教程

共754课时 | 84.5万人学习