当前位置:首页 > 文章列表 > 文章 > 前端 > 动态添加CSS规则的正确方法

动态添加CSS规则的正确方法

2026-04-14 09:48:37 0浏览 收藏
本文深入解析了动态插入 CSS 规则(如 `@font-face`)时常见的认知误区:虽然通过 `CSSStyleSheet.insertRule()` 成功添加规则并能被浏览器样式引擎识别和应用,但 `

如何让动态插入的 CSS 规则在 <style> 元素中正确显示
元素中正确显示 " />

动态创建

在 Web 开发中,通过 JavaScript 动态注入样式(尤其是 @font-face、媒体查询或主题变量)是一种常见需求。然而,开发者常遇到如下现象:

const styleElement = document.createElement('style');
document.head.appendChild(styleElement);
const sheet = styleElement.sheet;

const fontIdentifier = 'CustomIconFont';
const font = { url: '/fonts/icon.woff2' };
const rule = `@font-face {
  font-family: '${fontIdentifier}';
  src: url('${font.url}');
}`;

sheet.insertRule(rule); // ✅ 成功插入到 sheet.rules 中

console.log(sheet.cssRules.length);    // → 1
console.log(styleElement.innerHTML);   // → ""(空字符串)
console.log(styleElement.textContent); // → ""(仍为空)

这是预期行为,而非 Bug。

微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码