首页 > 其他分享 >css变量实现换肤

css变量实现换肤

时间:2023-01-18 19:56:31浏览次数:43  
标签:换肤 body 变量 -- color CSS fff css

css变量

语法:var( <自定义属性名> [, <默认值 ]? )
如果我们使用的变量没有定义(注意,仅限于没有定义),则使用后面的值作为元素的属性值

  • 变量命名 不能包含$,[,^,(,%等字符,普通字符局限在只要是“数字[0-9]”“字母[a-zA-Z]”“下划线_”和“短横线-”这些组合,但是可以是中文,日文或者韩文,
  • 只能在声明块{}
  • 变量也是跟着CSS选择器走的,如果变量所在的选择器和使用变量的元素没有交集,是没有效果的。
  • 当存在多个同样名称的变量时候,变量的覆盖规则由CSS选择器的权重决定的,但并无!important这种用法,因为没有必要,!important设计初衷是干掉JS的style设置,但对于变量的定义则没有这样的需求。

使用方式

  1. 直接在标签上绑定style
// 实现进度条
<div class="bar" style="--percent: 60;"></div>
.bar::before {
    display: block;
    counter-reset: progress var(--percent);
    content: counter(progress) '%\2002';
    width: calc(1% * var(--percent));
    color: #fff;
    background-color: #2486ff;
    text-align: right;
    white-space: nowrap;
    overflow: hidden;
}
  1. JS中设置CSS变量
<div id="box">
    <img src="mm.jpg" style="border: 10px solid var(--color);">
</div>

box.style.setProperty('--color', '#cd0000');
  1. JS中获取CSS变量
// 获取 --color CSS 变量值
var cssVarColor = getComputedStyle(box).getPropertyValue('--color'); 

// 输出cssVarColor
// 输出变量值是:#cd0000 
console.log(cssVarColor);

实现换肤

首先定义变量skinVariablescss

body[data-theme='dark'] {
    --bgColor: #353535;

    --navFontColor: #adb7be;

    --mainFontColor: #fff;

    --mainColor: #3db96d;

    --mainHoverColor: #2aa461;

    --btnBgColor1: #3db96d;

    --btnBgColor2: #1b904e;

    --selectBgColor: #212121;

    --selectOpColor: #afafaf;

    --selectActiveColor: #fff
}

body[data-theme='light'] {

    --bgColor: #f4f5f5;

    --navFontColor: #515767;

    --mainFontColor: #212121;

    --mainColor: #1e80ff;

    --mainHoverColor: #508cf7;

    --btnBgColor1: #1d7dfa;

    --btnBgColor2: #1e80ff;

    --selectBgColor: #fff;

    --selectOpColor: #afafaf;

    --selectActiveColor: #fff
}

vue项目在app.vue根组件中为body设置自定义属性

      const body = document.body
      body.setAttribute('data-theme','dark')

body下所有元素即可使用变量

标签:换肤,body,变量,--,color,CSS,fff,css
From: https://www.cnblogs.com/whh666/p/17060465.html

相关文章

  • 通过Canal将云上MySQL数据同步到华为云ES(CSS)中
    背景:A部门想将mysql中多张表join成一个sql查询语句,然后将结果同步到es中供搜索使用环境信息:源端mysql在阿里云上,有公网ip目标端es在华为云上,三节点操作步骤与目......
  • CSS:em 和 rem,另附:outline
    em是相对于元素的字体大小,相对于父元素,rem全部的长度都相对于根元素,也就是html元素,通常做法是给html元素设置一个字体大小,然后其他元素的单位长度就为rem在实际应用中......
  • 应用笔记 | 如何利用TSMaster的系统变量触发标定和诊断功能?
    随着电子模块的迅速增加,ADAS、无人驾驶场景带来的海量数据交互和实时性要求,OTA技术带来的信息安全挑战,对汽车总线仿真、测试、诊断、标定工具链的性能提出了更高的要求。本......
  • Day02 变量的使用
    1、变量的作用存储数据变量分为变量名,变量值,内存地址id() 获取内存地址2、变量命名规则1)变量的名字只能由字母、数字、下划线组成2)数字不能作为开头(支持中文变量名称......
  • K8S 初始化系统和全局变量
    集群规划k8s-01:172.17.10.51k8s-02:172.17.10.52k8s-03:172.17.10.53三台机器混合部署本文档的etcd、master集群和woker集群。如果没有特殊说明,需要在所有节点上执行本文......
  • jdk环境变量
    a.首先要打开系统环境变量配置的页面。具体操作是:桌面上找到“此电脑”,然后右键“属性”。b.c.在新建页面输入"变量名"位JAVA_HOME,输入“变量值”为你安装的JDK路径d.......
  • jmeter添加全局变量,跨线程组传递参数
    在软件测试中,当我们想把某个变量值想设置为全局变量,也就是在任何一个线程组都可以使用该变量时,我们就要用到BeanShell取样器,示例如下:1.拿到某个接口的变量值2.通过BeanSh......
  • nasm:变量的使用(bss_section)
    nasm:变量的使用(bss_section)    一、bss变量的说明 1、bss段内的变量名,代表内存地址; 2、bss段的变量赋值:  mov  [bss_var_name],  re......
  • java新版本配置环境变量那些事
    下载jdk安装包进入Oracle官网进行下载:JavaDownloads|Oracle镜像源也可以下载为什么配置环境变量系统在运行命令和程序的时候先从当前目录进行查找,找不到会去配置......
  • python基础: python语法之注释、PEP8规范说明、变量与常量、变量的本质、命名规范、命
    目录python基础python语法之注释PEP8规范说明变量与常量变量的本质命名规范命名风格常量基本数据类型python基础python语法之注释注释:是对所写的代码的解释说明三种......