DarkMode(3):sass函数实实现深色模式操作
上文《DarkMode(2):深色模式解决方案——css颜色变量实现Dark Mode》,完全基于样色抽离变量,然后使用预处理其,生成两套样式。切换样式文件。
sass自定义函数与mixin指令实现暗黑模式
其实还是变量抽离,只是不是两个variable 变量文件,而是一个map文件。
首先声明函数
@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);
}
样式代码
button {
@mixin background($color) {
@include themeify {
background: themed($color)
}
}
color: themify(accent-200);
&:hover {
background-color: themify(primary-100, 0.5);
}
}
js切换样式
document.body.dataset.theme = newValue;
当然,给body添加样式类也是可以的。其实这种方案,还是 css 选择器去 隔离各个主体模块
更新详细,推荐阅读:《Introducing Themify: CSS Themes Made Easy 》、《How to Create a Dark Mode in Sass》
sass颜色函数实现深色模式
在定义sass变量时,我们会有基准尺寸,如:
$h1-font-size: $font-size-base * 2.5 !default;
$h2-font-size: $font-size-base * 2 !default;
$h3-font-size: $font-size-base * 1.75 !default;
$h4-font-size: $font-size-base * 1.5 !default;
$h5-font-size: $font-size-base * 1.25 !default;
$h6-font-size: $font-size-base !default;
颜色,我们也可以定义基准颜色,主题色系,通过sass颜色函数,生成整个主题。
然后对基准颜色,进行处理,就生成另外一套主题
sass提供蛮多的颜色函数:
https://sass-lang.com/documentation/modules/color
从大的方面主要分为RGB、HSL和Opacity三大类函数,当然其还包括一些其他颜色函数,比如说adjust-color、change-color等等。
这里大致地介绍一下
HSL颜色函数
“HSL”所表示的是“H:色相”,“S:饱和度”,“L:亮度”。色相是在色盘上的颜色(见下图),颜色的选择是使用饱和度:“0度是红色”,“120度为绿色”和“240度为蓝色”。

HSL给我们带来了一个更直观的颜色控制,我们时常需要让一个颜色比另一个颜色更暗一点或者说更亮一点。比如说“a:hover”状态下我们需要把一个颜色变暗一点,那么使用“HSL”是非常方便的。
这方面的理论知识,安利下:《色彩空间RGB/CMYK/HSL/HSB/HSV/Lab/YUV基础理论及转换方法:RGB与YUV》
其中我们最常用的有:lighten、darken、saturation、lightness、adjust-hue
lighten($color,$amount):通过改变颜色的亮度值,让颜色变亮,创建一个新的颜色;
darken($color,$amount):通过改变颜色的亮度值,让颜色变暗,创建一个新的颜色;
invert($color):反回一个反相色,红、绿、蓝色值倒过来,而透明度不变。
saturate($color,$amount):通过改变颜色的饱和度值,让颜色更饱和,从而创建一个新的颜色
desaturate($color,$amount):通过改变颜色的饱和度值,让颜色更少的饱和,从而创建出一个新的颜色;
saturation($color):从一个颜色中获取饱和度(saturation)值;
lightness($color):从一个颜色中获取亮度(lightness)值;
grayscale($color):将一个颜色变成灰色,相当于desaturate($color,100%);
complement($color):返回一个补充色,相当于adjust-hue($color,180deg);
hsl($hue,$saturation,$lightness):通过色相(hue)、饱和度(saturation)和亮度(lightness)的值创建一个颜色;
hsla($hue,$saturation,$lightness,$alpha):通过色相(hue)、饱和度(saturation)、亮度(lightness)和透明(alpha)的值创建一个颜色;
hue($color):从一个颜色中获取色相(hue)值;
adjust-hue($color,$degrees):通过改变一个颜色的色相值,创建一个新的颜色;
其中,我们通过 invert、lighten、darken 相关,就可以生成我们暗黑模式。
RGB颜色函数
rgb颜色只是颜色中的一种表达方式,其中R是“red"表示红色,而G是“green”绿色,B是“blue”蓝色。在Sass中为RGB颜色提供六种函数:
rgb($red,$green,$blue):根据红、绿、蓝三个值创建一个颜色;
rgba($red,$green,$blue,$alpha):根据红、绿、蓝和透明度值创建一个颜色;
red($color):从一个颜色中获取其中红色值;
green($color):从一个颜色中获取其中绿色值;
blue($color):从一个颜色中获取其中蓝色值;
mix($color-1,$color-2,[$weight]):把两种颜色混合在一起。
RGBA()函数
rgba()函数主要用来将一个颜色根据透明度转换成rgba颜色。其语法有两种格式:
rgba($red,$green,$blue,$alpha):将一个rgba颜色转译出来,和未转译的值一样
rgba($color,$alpha) :将一个Hex颜色转换成rgba颜色
Mix()函数
Mix函数是将两种颜色根据一定的比例混合在一起,生成另一种颜色。具体地说,选择权重是每个RGB的百分比来衡量,当然透明度也会有一定的权重。其中指定的比例会包括在返回的颜色中。默认的的比例是50%,这意味着两个颜色各占一半,如果指定的比例是25%,这意味着第一个颜色所占比例为25%,第二个颜色所占比例为75%。其使用语法如下:
mix($color-1,$color-2,$weight):$color-1和$color-2指的是你需要合并的颜色,颜色可以是任何表达式,也可以是颜色变量。$weight合并的比例,默认值为50%,其取值范围是0~1之间。
这一部分的实现,需要和设计师紧密地配合。所以,对于目前前端所处的环境,其实也没有啥好讲的
先回去睡觉,明天再讲
转载本站文章《DarkMode(3):sass函数实实现深色模式操作》,
请注明出处:https://www.zhoulujun.cn/html/webfront/style/darkMode/8584.html
DarkMode(3):sass函数实实现深色模式操作的更多相关文章
- iOS 深色模式适配
要求:iOS13.0以上 重点:需要所有界面进行适配,工作量巨大,需要从项目开始就进行适配:H5界面无法进行适配 实现方式:System Colors(常用).Semantic Colors(常用). ...
- JavaScript函数的各种调用模式
函数是JavaScript世界里的第一公民,换句话来说,就是我们如果可以精通JavaScript函数的使用,那么对JavaScript的运用可以更游刃有余了.熟悉JavaScript的人应该都知道,同 ...
- 「技巧」如何将Sketch改为深色模式
之前Sketch只能根据mac系统的外观设置变更皮肤.在更新了版本54之后,可以脱离操作系统,在自己的偏好设置中更改外观了. 准备 Sketch 54 更多工具:whose.design 第一步:打开 ...
- 【深色模式】macOS Mojave+Visual Studio for Mac+FineUICore多图赏析!
全面开启深色模式,今早成功升级到 macOS Mojave,下面就来欣赏一下吧. 点击图片,查看大图 1. 下载 macOS Mojave 2. 安装成功,开启深色模式 3. 来一张桌面截图 4. 开 ...
- Mac上深色模式下的精美炫酷软件
针对发布的 macOS Mojave 10.14 系统中,最大的改变就是引入了深色模式,尤其对技术开发人员来说非常实用,非常的酷! 深色模式使用一种较深的配色方案,这种配色作用于整个系统,包括 Mac ...
- h5移动端flexible源码适配终端解读以及常用sass函数
;(function(win, lib) { var doc = win.document;// win = window,lib = window.lib; var docEl = doc.docu ...
- sass函数:@function
sass定义了很多函数可供使用,当然你也可以自己定义函数,以@fuction开始. sass的官方函数链接为:sass fuction,实际项目中我们使用最多的应该是颜色函数,而颜色函数中又以ligh ...
- macOS Mojave 深色模式
macOS Mojave 深色模式 mac 关闭 深色模式 https://support.apple.com/zh-cn/HT208976 https://www.apple.com/cn/maco ...
- iOS13禁用深色模式
全局禁用深色模式(暗黑模式)在Info.plist中增加UIUserInterfaceStyle,值为Light,如下 <key>UIUserInterfaceStyle</key& ...
- SASS - 函数
SASS – 简介 SASS – 环境搭建 SASS – 使用Sass程序 SASS – 语法 SASS – 变量 SASS- 局部文件(Partial) SASS – 混合(Mixin) SASS ...
随机推荐
- 题解 CF1292A
题目大意: 给你 \(2\times n\) 的迷宫,初始时没有任何障碍,给定 \(q\) 次询问,每次询问给予坐标 \((x,y)\),问将坐标 \((x,y)\) 反转状态(即无障碍变有障碍,有障 ...
- 最佳实践-使用Github Actions来构建跨平台容器镜像
公众号「架构成长指南」,专注于生产实践.云原生.分布式系统.大数据技术分享. 前言 最近在写K8s的相关系列文章,因为有涉及到镜像构建,发现在Mac m1的Arm架构下构建的部分镜像,没法在X86架构 ...
- LabVIEW基于机器视觉的实验室设备管理系统(2)
目录 功能计划 普通用户 欢迎登录 信息查询 返回退出程序 效果演示 在前期的准备完成之后呢,就要开始实现我们的程序啦,不过在编程之前,我们一定要计划好这个系统需要什么功能. 功能计划 既然我们做的是 ...
- iOS APP包分析工具
介绍 分享一款用于分析iOSipa包的脚本工具,使用此工具可以自动扫描发现可修复的包体积问题,同时可以生成包体积数据用于查看.这块工具我们团队内部已经使用很长一段时间,希望可以帮助到更多的开发同学更加 ...
- 谷歌浏览器和火狐浏览器如何查看HTTP协议?
按F12
- C++20语言核心特性的变化
using for Enumeration Values 对比一下C++20前后的区别: enum class State { open, progress, done = 9 }; // Bef ...
- 最小生成树(Prim、Kruskal)
MST 引入 现在有一个连通图,他有\(N\)个节点,\(M\)条边 当我们砍掉一些边时,它会变成一棵树,其剩下的边权之和即为这棵树的权,当剩下的权值最小时,称这棵树为此图的最小生成树,即MST 模版 ...
- 使用 Kubernetes 为 CI/CD 流水线打造高效可靠的临时环境
介绍 在不断发展的科技世界中,快速构建高质量的软件至关重要.在真实环境中测试应用程序是及早发现和修复错误的关键.但是,在真实环境中设置 CI/CD 流水线进行测试可能既棘手又昂贵. Kubernete ...
- Chrome扩展开发系列开篇
大家好,我是 dom 哥.这是我关于 Chrome 扩展开发的系列文章,感兴趣的可以 点个小星星. 浏览器现状 研究机构 Statcounter 发布了 2023 年 9 月报告,揭示了有关浏览器的最 ...
- 【最佳实践】京东小程序-LBS业务场景的性能提升
一.前言 1.1 京东LBS门详业务介绍 京东LBS门详目前已经支持了仓网.药急送.天选.小时达POP多种业务,并且具备了多端的能力,一套代码可以在京东app.健康app.微信小程序中运行,一定程度上 ...