当前位置:   article > 正文

主题换肤处理(css var)_cssvars

cssvars

具体功能实现:

document.body.setAttribute('data-theme', 'red')

设置当前body内容的data-theme属性,想数据持久化则存储到localStorage即可。

在css中定义var变量

  1. @function hexToRGB($hex) {
  2. @return red($hex), green($hex), blue($hex);
  3. }
  4. // 默认颜色
  5. :root{
  6. --primary: #F56C6C; // 主色
  7. --primary-rgb: #{hexToRGB(#F56C6C)}; // rgb主色
  8. }
  9. // 红色主题
  10. body[data-theme='red'] {
  11. --primary: #F56C6C;
  12. --primary-rgb: #{hexToRGB(#F56C6C)};
  13. }
  14. // 蓝色主题
  15. body[data-theme='blue'] {
  16. --primary: #409EFF;
  17. --primary-rgb: #{hexToRGB(#409EFF)};
  18. }

如何使用?

  1. div {
  2. color: var(--primary);
  3. }

通过var()的形式进行变量样式赋值,如果多主题时,只需要将该主题下的具体颜色进行var变量定义既可

浏览器展示:

 

那么问题来了,使用css var(),在ie浏览器中会有兼容问题,下面则是ie浏览器兼容处理

首先在当前项目(vue)中安装css-vars-ponyfill

然后在项目的main.ts/js中引入

  1. import cssVars from 'css-vars-ponyfill';
  2. import Vue from 'vue'
  3. import App from './App.vue'
  4. import router from './router'
  5. // ie var 兼容
  6. cssVars({
  7. preserveVars: true
  8. });

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号