如何较好的实现界面主题切换?

#1

通过前端界面的选项切换界面的主题比如说dark,light这样的切换,主要思路是什么?

目前想到的是,写好几种theme主题的css样式,然后js文件里引用一个大的theme变量,加在className的前缀上,与css文件对应,然后切换变量切换主题,也就是切换了css样式,但是感觉很笨拙,请问有什么更好的方法吗?

#2

思路:
思考1: (样式来自服务器) 样式如果采用的css文件来控制的 —> 切换主题也就是页面重新刷新去拿不同的css文件 —> css文件可以请求后端不同主题的css文件 —> 后端主题css文件可以是静态文件也可以动态产生

总结: 如果你用的less.scss这类预编译文件,可以后端根据请求来动态产生主题文件.如果是css文件,可以准备几套让用户来选择.区别在于用户选择的多样性.比如颜色.

思考2:(样式是前端动态控制) 样式是动态控制,那么一般是js动态产生的 —> 定义样式变量(颜色,大小等) —> 改变主题就是改变js变量的值 —> 重新渲染页面

总结: 如果你页面样式都是js动态产生的,那么可以定义主题变量,改变变量即可.

#3

是前端渲染的,我的想法和你的思路2是一致的,只是感觉这样比较笨拙

#4

思路1靠谱点,容易维护