JS动态添加css样式
用到的特性是 CSSStyleSheet.
添加style rule
function click(){
const sheet = new CSSStyleSheet()
sheet.insertRule(`body {
font-size: 10px;
}`);
// 应用规则到document
document.adoptedStyleSheets = [sheet];
}
替换规则
sheet.replaceSync(`body {
font-size: 30px;
}`);
// 应用规则到document
document.adoptedStyleSheets = [sheet];
带有回调的替换
sheet.replace('a { color: blue; }')
.then(() => {
console.log('Styles replaced');
})
.catch(err => {
console.error('Failed to replace styles:', err);
});
CSS @import
sheet.replaceSync('@import url("styles.css"); a { color: red; }');
动态创建node 应用样式到该节点
const node = document.createElement('div');
node.innerText = 'div'
document.body.append(node)
const sheet = new CSSStyleSheet()
sheet.insertRule(`div {
color: red;
}`)
document.adoptedStyleSheets = [sheet]