// 给 <style> 中所有的 css 增加一个父级 class
function addPrefixForStyle(styleNodes = [], classPrefix = ".prefix") {
for (let i = 0; i < styleNodes.length; i++) {
const cssRules =
styleNodes[i].sheet?.cssRules || styleSheets[i].sheet?.rules;
const funCssRules = (rules) => {
if (rules) {
for (let r = 0; r < rules.length; r++) {
// @media 需要递归
if (rules[r].cssRules?.length) {
funCssRules(rules[r].cssRules);
} else {
let selector = rules[r].selectorText;
// 增加class前缀
if (selector) rules[r].selectorText = classPrefix + " " + selector;
}
}
}
};
funCssRules(cssRules);
}
}
使用示例
addPrefixForStyle($("style").get());