我发现使用 CSS 变量更容易。您可以将类设置为使用变量,然后在 Javascript 中更改该值,从而更改 CSS。
如果你将类设置为:
:root {
--some-color: red;
}
.someClass {
color: var(--some-color);
}
然后你可以用 Javascript 改变变量的值
document.documentElement.style.setProperty('--some-color', '(random color)');
(random color) 可以是任何被视为有效 CSS 颜色的东西(例如,blue、black、#626262、rgb(12, 93, 44))
在 JS 中更新值也会自动更新页面。
当然,这可以使用任何属性来完成,而不仅仅是颜色。下面是一个改变类填充的例子:
CSS
:root {
--some-padding: 12px;
}
.someClass {
padding: var(--some-padding);
}
Javascript
// Set padding to 15px
document.documentElement.style.setProperty('--some-padding', '15px');
// Set padding to 5rem
document.documentElement.style.setProperty('--some-padding', '5rem');
// Set padding to 25%
document.documentElement.style.setProperty('--some-padding', '25%');
有用的例子:切换暗/亮模式:
(如何使用css属性动态设置css属性)
// set to light mode:
document.documentElement.style.setProperty('--bg-color', getComputedStyle(document.documentElement).getPropertyValue('--bg-color-light'));
// set to dark mode:
document.documentElement.style.setProperty('--bg-color', getComputedStyle(document.documentElement).getPropertyValue('--bg-color-dark'));
使用相应的 css:
:root {
--bg-color: black;
--bg-color-light: white;
--bg-color-dark: black;
body {
background-color: var(--bg-color);
}
来源
如何声明和使用 CSS 变量:https://www.w3schools.com/css/css3_variables.asp
如何在 JS 中更新 CSS 变量:https://css-tricks.com/updating-a-css-variable-with-javascript/