先说已排除的方法
1.修改less/scss
由于原理,js修改less/scss/css是难以实现的,只能通过生成文件->引入->重新打包这一几乎不可能存在的方式来进行,所以不要继续寻找此类方法了。
2.行内样式
vue/react都支持在行内样式中嵌入变量,但是行内样式不能使用css选择器,难以批量进行,如果应用此法,代码必将非常麻烦不优雅,会给开发提供非常大的阻力。
我的方案
兼容基本所有浏览器,一个取巧的js
let newColor = 'green'
let mainColor = document.getElementsByClassName('main-color');
for(let i=0; i < mainColor.length; i++) {
mainColor[i].style.color = newColor
}
但是这种方法只对当前页面有效,重新渲染需要重新调用
至于性能,产品已经提出了如此需求,性能问题当然产品背锅啦~