标签:map 深色 变量 sass color accent theme 切换 DarkMode
sass自定义函数转 sass预处理
在《DarkMode(2):深色模式解决方案——css颜色变量实现Dark Mode》与《DarkMode(3):深色模式解决方案——颜色反转与函数 》,如果使用
@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\:\-\"\(\)\;\$\!]*)\}
const reg =/\@include themeify \{\n([\s\w\:\-\"\(\)\;\$\!]*)\}/ const reg = /@include themeify {\n([\s\w:\-"();$!]*)}/;
替换为$1即可
第二个函数正则表达:themed\(\"([\w\-]*)\"\)\;
const reg = /themed\(\"([\w\-]*)\"\)\;/
替换为\$$1
sass变量主题输出切换为css变量主题输出
如果单纯sass变量输出两套主题,切换主题样式,需要刷新页面。如果是css变量,就无需刷新变量
目的无非就是想要输出:
:root { --primary-color: #{$primary-color}; }
如果之前直接是声明的,也没有啥好说的
$accent-color: #fbbc04; :root { --accent-color-wrong: $accent-color; --accent-color-right: #{$accent-color}; }
其实还是声明一个函数,即可:
$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
标签:map,深色,变量,sass,color,accent,theme,切换,DarkMode 来源: https://blog.csdn.net/u012244479/article/details/111054888
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。