赞
踩
具体功能实现:
document.body.setAttribute('data-theme', 'red')
设置当前body内容的data-theme属性,想数据持久化则存储到localStorage即可。
在css中定义var变量
- @function hexToRGB($hex) {
- @return red($hex), green($hex), blue($hex);
- }
- // 默认颜色
- :root{
- --primary: #F56C6C; // 主色
- --primary-rgb: #{hexToRGB(#F56C6C)}; // rgb主色
- }
- // 红色主题
- body[data-theme='red'] {
- --primary: #F56C6C;
- --primary-rgb: #{hexToRGB(#F56C6C)};
- }
- // 蓝色主题
- body[data-theme='blue'] {
- --primary: #409EFF;
- --primary-rgb: #{hexToRGB(#409EFF)};
- }
如何使用?
- div {
- color: var(--primary);
- }
通过var()的形式进行变量样式赋值,如果多主题时,只需要将该主题下的具体颜色进行var变量定义既可
浏览器展示:
那么问题来了,使用css var(),在ie浏览器中会有兼容问题,下面则是ie浏览器兼容处理
首先在当前项目(vue)中安装css-vars-ponyfill
然后在项目的main.ts/js中引入
- import cssVars from 'css-vars-ponyfill';
- import Vue from 'vue'
- import App from './App.vue'
- import router from './router'
-
- // ie var 兼容
- cssVars({
- preserveVars: true
- });
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。