当前位置: 首页 > news >正文

css实现一键换肤

        实现一键换肤的时候,我们除了动态替换引用的css文件,还可以通过使用css变量的方式,达到所需效果。

        首先我们来了解css变量,css变量以--开头,引用时va(--变量名),例

:root{
    --default-color: #fff;
}
.box{
    background-color: var(--default-color);
}

        :root指向文档根元素,可用来配置全局变量,而我们可以通过修改变量的值,来实现修改样式。

        一种方式是直接修改变量值,这种方式需要在setProperty时将所有变量都设置一遍。

document.documentElement.style.setProperty('--default-color', '#f00');

        另一种方式是在css中将每一套变量的值罗列出来,在:root上添加自定义属性,js通过修改自定义属性的值修改css的引用值

        css

:root{
    --default-color: #fff;
}
:root[theme="black"]{
    --default-color: #000;
}

        js

document.documentElement.setAttribute('theme', "black");
localStorage.setItem('theme', "black"); // 在缓存中存入theme的值,方便下次进入页面的时候主题与上一次一致

        第二种方式较第一种的优势是,不需要在js中修改那么多的变量,如果主题样式也特别多的话,js的方式比较麻烦,而且第二种更方便存储到缓存中,以便后续直接应用

相关文章:

  • 入门-C编程基础部分:1、环境搭建
  • MySQL 超详细安装教程与常见问题解决方案
  • 优先级队列(堆二叉树)底层的实现:
  • 十四、C++速通秘籍—函数式编程
  • JAVA EE_文件操作和IO
  • 蓝桥杯 web 常考到的一些知识点
  • OpenCV 图形API(33)图像滤波-----高斯模糊函数gaussianBlur()
  • 3D版的VLA:从3D VLA、SpatialVLA到PointVLA——3D点云版的DexVLA,在动作专家中加入3D数据
  • 人工智能100问☞第4问:人工智能与机器学习、深度学习的区别?
  • Matplotlib库详解
  • 网页防篡改与盗链防护:实时监控与自动化修复实践
  • python中,sort(reverse=True)与列表.reverse的区别
  • 【集成电路版图设计学习笔记】2. 基本绘制的layer层和电路失效机制
  • ubuntu22.04安装zabbix7.0
  • ubuntu学习day2
  • 机器学习核心知识:从基础概念到关键算法
  • 高性能IO的基石:零拷贝(Zero-Copy)技术全解析
  • 云渗透一(云租户渗透⼊⻔)
  • IO模式精讲总结
  • ARM处理器程序烧写方式
  • 专访|导演刘江:给谍战题材注入现实主义的魂
  • 字母哥动了离开的心思,他和雄鹿队的缘分早就到了头
  • 人民网评:守护健康证的“健康”,才有舌尖上的安全
  • 今起公开发售,宁德时代将于5月20日在港股上市
  • 佩斯科夫:俄会考虑30天停火提议,但试图对俄施压无用
  • 2025年4月份CPI环比由降转涨,核心CPI涨幅稳定