javascript - 用户在 CSS 中插入规则

标签 javascript html css

我想让用户通过从下拉列表中选择属性来更改站点的样式。当选择一个元素时,一个函数会将规则插入到 CSS 中。我认为它的 JavaScript 代码类似于:

var sheet = document.styleSheets[];
sheet.insertRule(rule,index);

但我无法让它工作。首先,该函数应检查特定样式规则是否已经存在值。如果是这样,它应该在添加新规则之前删除规则。所以如果它试图在索引 1 上添加 16 的字体大小并且已经有一个字体大小它应该覆盖它,否则它应该只添加规则......

最佳答案

document.styleSheets 返回一个 StyleSheetList - 样式表列表而不是特定样式表,而 insertRule 的方法CSS样式表。要使用此方法,您必须从列表中选择一个特定的样式表。

看看second example here .他们使用 document.createElement 创建了一个新的样式表,将其添加到头部,然后将新规则插入到该样式表中。像这样:

var styleElem = document.createElement('style');
document.head.appendChild(styleElem);
styleElem.sheet.insertRule( ... );

检查现有规则更加困难,因为您必须遍历每个工作表和规则以查明是否已经有匹配新规则的规则。

大多数时候浏览器会采用它看到的最后一条规则并覆盖之前的规则(除非它有 !important 关键字)。

关于javascript - 用户在 CSS 中插入规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41789434/

相关文章:

javascript - 使用ajax将JSON发送到PHP,数据出现问题

javascript - 不能在 img 标签内使用 base64 图像吗?

javascript - Bootstrap 悬停水平子导航

css - @keyframes 动画没有运行

javascript - 在按钮上使用 onmouseover 事件时无法使图像消失

javascript - 是否可以在 JavaScript 中创建 session 变量?

javascript - jQuery 选择器在特定 HTML 元素之后检索内容

javascript - 如何仅在需要时运行 Google Cloud SQL?

javascript - qTip2 样式结果与预期不同

javascript - 在 Bootstrap 4 中,多个元素 slider (桌面屏幕上同时显示 3 个元素),当涉及到移动尺寸时,将它们一个一个地移动