html 切换主题,html切换主题实现方案

方案一

使用css的var属性,当然此时不考虑低版本浏览器。

1,在default.css主题根元素定义颜色变量

:root {

--main_color: #03a9f4; // 主题色

--main_light: #33baf7; // 二级主题色 常用背景为主题色下的hover

--main_lighter: #65caf5; // 三级主题色 常用border

--main_extra_light: #e6f7ff; // 四级主题色 常用background

}

2,使用时,参考css var属性。

.test{

color: var(--main_color);

}

3,在dark.css主题根元素定义替换变量

:root[theme=dark] {

--main_color: #2F4554; // 主题色

--main_light: #686a6b; // 二级主题色

--main_lighter: #9a9b9c; // 三级主题色

--main_extra_light: #d7d8d8; // 四级主题色

}

4,点击切换成dark主题时,引入dark.css,控制根节点html加them="dark"属性

省去js的实现代码,此时页面应有

...

切换成dark主题

document.getElementById('btn').οnclick=(e)=>{

document.documentElement.setAttribute('theme', 'dark')

}

可以看出dark的主题颜色变量覆盖了default的主题颜色变量

6a79e6d350f8

颜色变量覆盖

5,扩展,用js控制css 的变量可动态的改变颜色,实现不需要在配置一份主题颜色引入。

let btn = document.getElementById('btn')

let html = document.documentElement

btn.οnclick=(e)=>{

html.style.setProperty('--main_color', 'red')

}

方案二

引入scss,配置webpack生成多份的主题css,使用时引入对应的主题。

1,新建主题目录

6a79e6d350f8

image.png

2, 配置webpack.config.js打包成多份的css

const globby = require('globby');

const getCssEntry = (() => {

const paths = globby.sync('*.scss', {

cwd: path.join(__dirname, './style/themes')

});

const rs = {}

paths.forEach(h => {

if (!h.includes('_')) { // 过滤打包_的命名文件

let name = path.basename(h, '.scss')

let p = path.join('./style/themes', h);

if (!p.startsWith('.')) { // 转成相对地址

p = './' + p;

}

rs[name] = p;

}

})

return rs

});

const options = [{

mode: mode,

entry: {

app: './src/index.js',

...getCssEntry() // 引入多主题

},

......

}]

module.exports = options;

启动后可以看到生成的主题

6a79e6d350f8

image.png

3,默认主题app.css定义变量和引入样式

$main_color: #03a9f4; // 主题色

$main_light: #33baf7; // 二级主题色 常用背景为主题色下的hover

$main_lighter: #72cef7; // 三级主题色 常用border

$main_extra_light: #e6f7ff; // 四级主题色 常用background

@import './_common.scss';

4,深色主题dark.css定义变量和引入样式

$main_color: #2F4554; // 主题色

$main_light: #686a6b; // 二级主题色

$main_lighter: #9a9b9c; // 三级主题色

$main_extra_light: #d7d8d8; // 四级主题色

@import './_common.scss';

_common.scss下可以是

.test{

font-size: $main_color;

}

5,使用js控制link标签的引入href = "app.css" 和href="dark.css"的切换就可以了,省去js代码...。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/527095.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

json取数据怎么取_干货速递丨书名应该怎么取?

很多作者开书前都会遇到这个困扰:“什么样的书名是好的?”在跟一线编辑广泛交流后,大家普遍认为:一个好书名,既应该是能突出作品内容特点、故事主题,又具有一定的趣味性的,能吸引读者&#xff0…

android加一减一控件,Android的步进器(增加/减少值)控件?

用于Android的步进器(增/减值)控件?没有像Android中的Stepper这样的内置控件但是您可以尝试这种方式android:layout_width"wrap_content"android:background"#ffffff"android:layout_height"wrap_content"android:orientation"h…

qt web混合编程_Qt+VS混合编程教程

VSQt配置VSQT混合编程后打包的项目可以移植到2017程序中,此处的版本不影响使用。VSQt配置VS:2013Qt:5.5.1qt-vs-addin:1.2.3-opensource1. 所有Qt版本下载地址:http://download.qt.io/archive/qt/2. 所有Qt Creator下载地址&#…

python 自动上报json信息_python接口自动化5-Json数据处理

前言有些post的请求参数是json格式的,这个前面第二篇post请求里面提到过,需要导入json模块处理。一般常见的接口返回数据也是json格式的,我们在做判断时候,往往只需要提取其中几个关键的参数就行,这时候就需要json来解…

eclipse html页面校验,当我在Eclipse浏览器中运行url时,HTML表单未通过验证

尝试这个:function emptyvalidation(field, errorMessage) {if (field.value null || field.value "") {alert(errorMessage);field.focus();return false;} else {return true;}}function validateAndSend() {if (emptyvalidation(nameField,"Ple…

xcode+文字支持html元素,iOS使用UITextview实现富文本编辑

代码使用swift4 Xcode9及以上主要思路是Textview使用NSMutableAttributedString 转化为 html字符 给后台其中图片另外 截取htmlStr里相应的图片标示 组成字典imgs[“标示Str”] “图片Base64” 给后台再编辑时拿到后台的 带图html字符串转为NSMutableAttributedString给Textvi…

安装教程rtx2080ti_点云深度学习环境配置指南(一)Ubuntu16.04+RTX2080ti

【今日导读】想做点云深度学习?先把环境配置好吧。本期为初学者带来环境配置指南,有需求的同学赶快上手吧。配置为:Ubuntu16.04RTX2080tiNVIDIA驱动cuda10.1cudnn7.5。一、安装NVIDIA驱动法一(优先推荐):先添加NVIDIA 的ppa 源&am…

html5响应式网站优势,响应式网站优势有哪些 真的利于排名优化么

今天我们一起来探讨下响应式网站的优势!是否利于排名,因为的确很多朋友在这边进行徘徊,他们 总认为响应式网站并不利于排名,绝对并不正规,其实并不是这样的,下面为大家进行详细的讲解,希望 大家…

二维burgers方程_二维Burgers方程的RKDG有限元解法

二维Burgers方程的RKDG有限元解法∗马艳春1,张寅虎2,冯新龙1【摘要】摘要:本文应用RKDG有限元方法求解具有周期边界条件的二维非粘性Burgers方程,并给出稳定性分析和误差估计.基于一致网格剖分,采用Q1矩形元和广义斜率限制器进行数值模拟&…

计算机管理员相关知识,计算机管理员述职报告范文

计算机管理员述职报告范文计算机管理员述职报告范文尊敬的医院领导:我叫xxx,20xx年7月毕业于西南计算机科学与技术专业。20xx年8月到医院工作,从事网络管理工作已有4年时间,能够胜任本职工作,现将任职以来的主要工作报…

mr图像翻转的原因_MR图像质量与成像参数的相关性及控制对策

MR图像质量与成像参数的相关性及控制对策作者:张晓槟 金宝荣 苏丽娟【关键词】 MR图像摘要:系统研究了MR图像的各种质量指标与各种成像参数的相关性及控制对策。关键词:MR图像质量;成像参数;相关性;控制对…

计算机网络5g,计算机网络参考模型与5G协议

一、分层思想将复杂的流程分解为几个功能相对单一的子过程(1)整个流程更加清晰,复杂问题简单化(2)更容易发现问题并针对性的解决问题二、OSI七层参考模型1984年颁布了开发系统互连(OSI)参考模型;一个开放式体系结构,将网络分为七层分层功能物…

daoi php_使用php生成RSA公钥私钥及进行加密解密和签名验证

这篇文章主要介绍使用PHP开发接口,数据实现RSA加密解密后使用,实例分析了PHP自定义RSA类实现加密与解密的技巧,非常具有实用价值,需要的朋友可以参考下。简单介绍RSA:RSA加密算法是最常用的非对称加密算法,…

html post no js,接受POST请求的Node.js服务器

以下代码显示了如何从HTML表单读取值。正如pimvdb所说,您需要使用request.on(’data’…)来捕获正文的内容。const http require(http)const server http.createServer(function(request, response) {console.dir(request.param)if (request.method POST) {conso…

python excel 数据匹配实现vlookup功能_如何用python实现excel中的vlookup功能?

相信大家都知道excel的vlookup函数,也会运用,这是财务审计工作中经常会用到的函数之一,那用python如何实现这一功能呢?1.目标介绍刀哥想将2017年科目余额表中,应收账款明细的所有客户,以科目编码为索引&…

html 随机出一个地址,nginx random_index 一直指向一个html页面,不会随机

#配置如下#问题:random_index在location /中开启,但是刷新浏览器不会随机,只会一直访问其中一个html文件server {listen 80;server_name localhost;#charset koi8-r;#access_log logs/host.access.log main;#root "E:/phpStu…

双百双新产业项目是什么_投资380亿,广西38个“双百双新”产业项目开竣工

广西2020年四季度“双百双新”产业项目集中开竣工活动现场。图片由自治区工信厅提供柳州分会场视频连线。图片由自治区工信厅提供与会嘉宾。图片由自治区工信厅提供广西新闻网南宁12月8日讯(记者 谢琳琳)12月8日,广西举行2020年四季度“双百双新”产业项目集中开竣工…

微型计算机可避免强磁场干扰,微型计算机测控系统抗干扰技术

微型计算机测控系统抗干扰技术从电网干扰、传输线干扰、空间电磁干扰及机内干扰四方面 ,介(本文共2页)阅读全文>>微型计算机测控系统在运行的过程中会受到外部要素的影响,使系统运转失衡。为了避免出...(本文共1页)阅读全文>>微型计算机测控系统中通常存在着很多干…

ssm把后端数据传到前端_前端传数据到后台分别JSON和STRING接收 AJAX SPRINGBOOT ssm

前端时间复习了SSM,前后端传数据接收,做了个例子,分享下POMorg.springframework.bootspring-boot-starter-testtestorg.springframework.bootspring-boot-starter-weborg.springframework.bootspring-boot-starter-thymeleafcom.alibabafastj…

计算机技术与应用的知识5000字,计算机本科论文范文5000字

近些年来,我国国民经济正在不断地发展,国家日新月异的改变在很大程度上与计算机技术的应用有很大的关系,计算机科学对我国经济发展有着极大的促进作用。下文是学习啦小编为大家搜集整理的关于计算机本科论文范文5000字的内容,欢迎大家阅读参考!计算机本科论文范文50…