DarkMode(5):深色模式不同实现方案切换
sass自定义函数转 sass预处理
在《DarkMode(2):深色模式解决方案——css颜色变量实现Dark Mode》与《DarkMode(3):深色模式解决方案——颜色反转与函数 》,如果使用
1 2 3 4 5 6 7 8 9 10 11 12 | @mixin themeify { @each $theme-name , $theme-map in $themes { $theme-map : $theme-map !global; body[data-theme=#{ $theme-name }] & { @content ; } } } @function themed( $key ) { @return map-get( $theme-map , $key ); } |
这种方案写出来的样式代码,在改为普通模式,非常难搞。
不过推荐使用正则表达式的方式,去替换
正对第一个函数,替换的正则表达式如下:\@include themeify \{\n([\s\w\:\-\"\;$\!]*)\}
1 2 | const reg =/\@include themeify \{\n([\s\w\:\-\ "\(\)\;\$\!]*)\}/ const reg = /@include themeify {\n([\s\w:\-" ();$!]*)}/; |
替换为$1即可
第二个函数正则表达:themed\;
1 | const reg = /themed\(\"([\w\-]*)\"\)\;/ |
替换为$$1
sass变量主题输出切换为css变量主题输出
如果单纯sass变量输出两套主题,切换主题样式,需要刷新页面。如果是css变量,就无需刷新变量
目的无非就是想要输出:
1 2 3 | :root { --primary- color : #{ $primary-color }; } |
如果之前直接是声明的,也没有啥好说的
1 2 3 4 5 | $accent-color : #fbbc04 ; :root { --accent-color-wrong: $accent-color ; --accent-color- right : #{ $accent-color }; } |
其实还是声明一个函数,即可:
1 2 3 4 5 6 7 8 9 10 | $var-element : '--' ; $colors : ( -black: #000 , -blue: #088DC6 ); :root { @each $color in $color-variables { #{ $var-element }#{nth( $color , 1 )}: #{nth( $color , 2 )}; } } |
如何在把读取 variable.scss 变量,并自动处理成css 变量文件,这个正在研究,等时间空点,再续
这个用sass或者less函数可以直接处理
如果是map 形势的赋值,直接操作
转载本站文章《DarkMode(5):深色模式不同实现方案切换》,
请注明出处:https://www.zhoulujun.cn/html/webfront/style/darkMode/8586.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了