使用css3 var()实现html主题皮肤设置

日常我们使用换肤时,一般采用以下方案之一;
1,常见用法,以elemntui为例,是换了一个引入的css主题文件
2,使用less或者sass这样的css预处理器,在主less文件中写入变量,使用的时候也使用变量继承
3,后端保存样式,通过接口返回给前端,前端重新渲染
4,其他……

本次主要针对第三种方案进行了研究,也使用方案2的精神

搜索html,var() ,很多教程都提示要写在:root选择器下,其实并不是,根据我的测试结果,理论上来说任意标签都可以,写在:root、html或者body下,只是为了更好的全局使用,毕竟这些选择器优先级很高。

95cb9962c3ea7ad4bb00c4407ca314cf_9137.png

写法1:在app.vue中注册一个变量,我这里选择注册在id="app"上

b6f6fb053b23e305ea4f5381e2191db.png
fd38282d0fa31949911274aff844994.png
cce648fdf7f8693fdb623428811ffee.png
e8f132c948b78991b7b07f877ee5335.png
72301bedcc8f879c33c7c8265852aea.png
image.png

写法2:使用document.body.style.setProperty注册属性在body上
这个方法有一个好处,在其他页面,如果需要在js(不是css)中获取某些颜色时,可以用getPropertyValue拿到

bdbc32b3d27f9e3ecf6d2308efb55af.png
78ed647149cb4cb98e8341d6d02208c.png
image.png

扩展:
var可以支持两个属性,如上文未注册testColor,但是使用了,可以多设置一个默认颜色。

image.png

image.png
image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容