06 【Sass语法介绍-函数】

Sass函数详解:重点解析颜色函数
本文介绍了Sass中的函数功能和用法,强调了颜色函数的重要性和实用性。文章详细讲解了获取通道色值、调整饱和度和使用scale-color函数等颜色操作。虽然在实际项目中调色多由设计师负责,但理解Sass颜色函数对开发者仍然有益。

这篇文章只更新了颜色函数,由于Sass使用时间过短,其它函数参考官网

1.前言

Sass 中的函数,这在 Sass 中是比较强大的一个功能,同时使用场景和语法也比较多,所以本节内容篇幅较长,但你一定要好好学习, Sass 函数很重要!在 Sass 中函数中几乎可以用到前面你学的所有章节的内容,所以说函数包括万象同时功能也非常强大,本节我们将详细讲解 Sass 中各种函数的功能和用法。

2.什么是函数?

函数是一段可以被另外的程序或代码调用的“子程序”,一个函数由称为函数体的一系列代码语句组成,并且函数也可以接收值,在大多数语言中函数都是这样的,Sass 中的函数也是一样。

3.Sass 函数简介

Sass 为我们提供了很多内置模块,其中就包含了很多函数(包括一些指令),我们可以通过 @use 去加载它们,然后我们就可以调用了,当然还有一些函数可以直接在 CSS 语句中调用,在 Sass 中常用的函数有:

  • 字符串函数
  • 数字函数
  • 列表函数
  • Introspection函数
  • 条件函数
  • Map 函数
  • 颜色函数

上面这些函数为我们提供了强大而丰富的功能来更高效地编写样式,下面我们来详细讲解 Sass 函数。

4.颜色函数

Sass 中提供了非常非常多的颜色函数用来处理颜色值,它们很多需要你具有专业的调色及配色知识才能发挥出作用,所以本节我们不讲的那么复杂,本节内容中我们只讲几种常见的、比较简单的颜色函数,其他特别复杂的用于调色的函数在以后你可以再慢慢研究。

4.1 用于获取通道色值的函数

Sass 提供了可以获取一个色值中红色通道、绿色通道和蓝色通道色值的函数,它们分别是 red(color)、green(color) 、green(color)green(color) 和 blue($color)。你可能还不太了解这三种通道是什么,不要紧,只要知道这三种函数和它的使用就可以。我们举例看下:

blue(#BA55D3)  //=> 211
red(#BA55D3)  //=> 186
green(#BA55D3)  //=> 85

4.2 saturate($color, $amount)

saturate($color, $amount) 函数用于调整 $color 的饱和度,第 1 个参数 $color 是一个颜色值,第 2 个参数是 0% ~ 100% 之间的百分数,其返回值也是一个颜色值。

saturate(#BA55D3, 20%)  //=> #c740e8

4.3 scale-color(…)

这是一个非常强大的颜色函数,它接收很多个参数,可以调整一个色值的很多属性,包括这个颜色的红、绿、蓝通道,以及亮度等等,我们只能举例来直观的看下:

scale-color(#BA55D3, $red: 15%)  //=> #c455d3  调整红色通道
scale-color(#BA55D3, $blue: 15%)  //=> #ba55da  调整蓝色通道
scale-color(#BA55D3, $lightness: -10%, $saturation: 10%)  //=> #b338d2 调整亮度和饱和度
scale-color(#BA55D3, $alpha: -30%)  //=> rgba(186, 85, 211, 0.7)  调整不透明度

通过上面的例子可以看到颜色函数提供了非常强大的用于调色的函数,驾驭它的前提是你要有非常丰富的调色知识以及一定的美术基础。在实际的项目中我们非常少的用到颜色函数,因为一般都是由公司的 UI 设计师来进行调色,所以作为入门教程,你只需要了解 Sass 中的颜色函数就好。

5. 小结

本节内容我们讲了 Sass 提供的各种各样的函数,基本覆盖到了比较常用的、常见的函数,它们分别是:

  • 字符串函数
  • 数字函数
  • 列表函数
  • Introspection函数
  • 条件函数
  • Map 函数
  • 颜色函数
在比较 `node-sass` 和 `dart-sass` 的语法差异时,需要明确的是,`node-sass` 是 Sass 的早期实现之一,它基于 C++ 编写的 `libsass` 库,而 `dart-sass` 是由 Sass 的创建者 Natalie Weizenbaum 用 Dart 编写的官方实现,并且被官方推荐作为未来的主要开发方向[^1]。 ### 语法兼容性 从语法角度来看,`dart-sass` 和 `node-sass` 在大多数情况下是兼容的,因为它们都遵循 Sass语法规范。然而,由于 `dart-sass` 是官方维护的实现,它对 Sass 最新特性的支持更为及时和完整。例如: - `dart-sass` 支持 Sass 模块化系统(`@use` 和 `@forward`),这是 Sass 官方推荐的替代 `@import` 的新方式,可以避免样式重复输出的问题[^2]。 - `dart-sass` 对 Sass 脚本(SassScript)的支持更加全面,包括对 `sass:map`、`sass:list`、`sass:meta` 等模块的完整支持,这些模块提供了丰富的内置函数来操作数据结构[^2]。 - `dart-sass` 支持 Sass 的新特性如 `@extend`、`%placeholder`、`@at-root` 等更全面,而 `node-sass` 在某些旧版本中可能存在兼容性问题或不支持某些新特性。 ### 语法差异示例 #### 1. 使用 `@use` 替代 `@import` 在 `dart-sass` 中,推荐使用 `@use` 来引入其他 Sass 文件,而不是传统的 `@import`。例如: ```scss // _variables.scss $primary-color: #3498db; // main.scss @use 'variables'; body { background-color: variables.$primary-color; } ``` 而在 `node-sass` 中,通常使用 `@import` 来引入文件: ```scss // _variables.scss $primary-color: #3498db; // main.scss @import 'variables'; body { background-color: $primary-color; } ``` #### 2. 使用 `sass:map` 模块 `dart-sass` 支持 `sass:map` 模块,可以更方便地操作 Map 数据结构。例如: ```scss // dart-sass 示例 @use 'sass:map'; $theme: ( 'primary': #3498db, 'secondary': #e67e22 ); body { color: map.get($theme, 'primary'); } ``` 而在 `node-sass` 中,虽然也可以使用 Map,但通常需要依赖第三方库(如 `sass-map`)或者手动实现类似功能。 #### 3. 使用 `@extend` 和占位符选择器 `dart-sass` 对 `@extend` 和占位符选择器的支持更为完善。例如: ```scss %button-style { padding: 10px 20px; border-radius: 4px; } .btn-primary { @extend %button-style; background-color: #3498db; } ``` 在 `node-sass` 中,虽然也支持 `@extend`,但在某些复杂场景下可能会导致生成的 CSS 不够优化,或者在处理嵌套 `@extend` 时出现意外行为。 ### 总结 尽管 `node-sass` 和 `dart-sass` 在语法上有很多相似之处,但 `dart-sass` 作为官方推荐的实现,具有更好的语法支持和更活跃的维护。特别是在模块化开发、新特性支持以及与现代构建工具(如 Vue CLI 和 Vite)的兼容性方面,`dart-sass` 显示出了明显的优势。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值