【Sass/SCSS】我花4小时整理了的Sass的函数
【Sass/SCSS】我花4小时整理了的Sass的函数
博客说明
文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢!
说明
Sass 定义了各种类型的函数,这些函数可以通过 CSS 语句直接调用。
可以看到Sass的函数功能已经相当丰富了。
整理了Sass的主要函数,重点在于后面的颜色函数,设计非常的银杏!
String(字符串) 函数
quote(string)
给字符串添加引号
quote(hello) //"hello"
unquote(string)
移除字符串的引号
unquote("hello") //hello
str-index(string, substring)
返回 substring 子字符串第一次在 string 中出现的位置。如果没有匹配到子字符串,则返回 null。区分大小写。
str-index(abcd, a) // 1
str-index(abcd, ab) // 1
str-index(abcd, X) // null
str-insert(string, insert, index)
在字符串 string 中 index 位置插入 insert。
str-insert("Hello world!", " xiaoming", 6) //"Hello xiaoming world!"
str-length(string)
返回字符串的长度。
str-length("hello") //5
str-slice(string, start, end)
从 string 中截取子字符串,通过 start-at 和 end-at 设置始末位置,未指定结束索引值则默认截取到字符串末尾。
是不是感觉合js的操作有些类似。
str-slice("abcd", 2, 3) => "bc"
str-slice("abcd", 2) => "bcd"
str-slice("abcd", -3, -2) => "bc"
str-slice("abcd", 2, -2) => "bc"
to-lower-case(string)
将字符串转成小写
to-lower-case("HELLO") // "hello"
to-upper-case(string)
将字符串转成大写
to-upper-case("hello") // "HELLO"
unique-id()
返回一个无引号的随机字符串作为 id。
不过也只能保证在单次的 Sass 编译中确保这个 id 的唯一性。
unique-id() // 3a153b3ds
数字函数
abs(number)
返回一个数值的绝对值。
abs(13) // 13
abs(-13) // 13
comparable(num1, num2)
返回一个布尔值,判断 num1 与 num2 是否可以进行比较 ,注意是否可以比较,不是比较的结果。
comparable(15px, 10px) // true
comparable(20mm, 1cm) // true
comparable(35px, 2em) // false
ceil(number)
向上取整 。
ceil(13.24) //14
floor(number)
向下取整 。
floor(15.84) // 15
max(number...)
返回最大值 。
max(5, 7, 9, 0, -3, -7) // 9
min(number...)
返回最小值 。
min(7, 2, 0, -2, -7) // -7
percentage(number)
将数字转化为百分比的表达形式。
percentage(1.2) // 120
random()
返回 0-1 区间内的小数。
random() // 0.2783
random(number)
返回 1 至 number 之间的整数,包括 1 和 limit。
random(10) // 4
round(number)
返回最接近该数的一个整数,四舍五入。
round(15.20) // 15
round(15.80) // 16
列表(List)函数
三大注意点:
1、Sass 列表(List)函数用于处理列表,可以访问列表中的值,向列表添加元素,合并列表等。
2、Sass 列表是不可变的,因此在处理列表时,返回的是一个新的列表,而不是在原有的列表上进行修改。
3、列表的起始索引值为 1,记住不是 0。
append(list, value, [separator])
将单个值 value 添加到列表尾部。separator 是分隔符,默认会自动侦测,或者指定为逗号或空格。
append((a b c), d) // a b c d
append((a b c), (d), comma) // a, b, c, d
index(list, value)
返回元素 value 在列表中的索引位置。
index(a b c, b) // 2
index(a b c, f) // null
is-bracketed(list)
判断列表中是否有中括号
is-bracketed([a b c]) // true
is-bracketed(a b c) // false
list-separator(list)
返回一列表的分隔符类型。可以是空格或逗号。
list-separator(a b c) // "space"
list-separator(a, b, c) // "comma"
join(list1, list2, [separator, bracketed])
合并两列表,将列表 list2 添加到列表 list1 的末尾。
separator 是分隔符,默认会自动侦测,或者指定为逗号或空格。
bracketed 默认会自动侦测是否有中括号,可以设置为 true 或 false。
join(a b c, d e f) // a b c d e f
join((a b c), (d e f), comma) // a, b, c, d, e, f
join(a b c, d e f, $bracketed: true) // [a b c d e f]
length(list)
返回列表的长度
length(a b c) // 3
set-nth(list, n, value)
设置列表第 n 项的值为 value。
set-nth(a b c, 2, x) // a x c
nth(list, n)
获取第 n 项的值。
nth(a b c, 3) // c
zip(lists)
将多个列表按照以相同索引值为一组,重新组成一个新的多维度列表。这个排列组合非常的人性,需要安排!
zip(1px 2px 3px, solid dashed dotted, red green blue)
// 1px solid red, 2px dashed green, 3px dotted blue
Map(映射)函数
Sass Map 是不可变的,因此在处理 Map 对象时,返回的是一个新的 Map 对象,而不是在原有的 Map 对象上进行修改。
Map(映射)对象是以一对或多对的 key/value 来表示。
瞧!key/value这不就来了吗
map-get(map, key)
返回 Map 中 key 所对应的 value(值)。如没有对应的 key,则返回 null 值。
$font-sizes: ("small": 12px, "normal": 18px, "large": 24px)
map-get($font-sizes, "small") // 12px
map-has-key(map, key)
判断 map 是否有对应的 key,存在返回 true,否则返回 false。
$font-sizes: ("small": 12px, "normal": 18px, "large": 24px)
map-has-key($font-sizes, "big") // false
map-keys(map)
返回 map 中所有的 key 组成的队列。
$font-sizes: ("small": 12px, "normal": 18px, "large": 24px)
map-keys($font-sizes) // "small", "normal, "large"
map-values(map)
返回 map 中所有的 value 并生成一个队列。
$font-sizes: ("small": 12px, "normal": 18px, "large": 24px)
map-values($font-sizes) // 12px, 18px, 24px
map-merge(map1, map2)
合并两个 map 形成一个新的 map 类型,即将 map2 添加到 map1的尾部
$font-sizes: ("small": 12px, "normal": 18px, "large": 24px)
$font-sizes2: ("x-large": 30px, "xx-large": 36px)
map-merge($font-sizes, $font-sizes2)
//"small": 12px, "normal": 18px, "large": 24px, "x-large": 30px, "xx-large": 36px
map-remove(map, keys...)
移除 map 中的 keys,多个 key 使用逗号隔开。
$font-sizes: ("small": 12px, "normal": 18px, "large": 24px)
map-remove($font-sizes, "small") // ("normal": 18px, "large": 24px)
map-remove($font-sizes, "small", "large") // ("normal": 18px)
选择器函数
这个可算得上是高级操作了,没有见过其他大神怎么去使用。
is-superselector(super, sub)
比较两个选择器匹配的范围,即判断 super 选择器是否包含了 sub 选择器所匹配的范围,是的话返回 true,否则返回 false。
is-superselector("div", "div.myInput") // true
is-superselector("div.myInput", "div") // false
is-superselector("div", "div") // true
selector-append(selectors)
将第二个 (也可以有多个) 添加到第一个选择器的后面。 selector.
selector-append("div", ".myInput") // div.myInput
selector-append(".warning", "__a") 结果: .warning__a
selector-nest(selectors)
返回一个新的选择器,该选择器通过提供的列表选择器生成一个嵌套的列表。
selector-nest("ul", "li") // ul li
selector-nest(".warning", "alert", "div") // .warning div, alert div
selector-parse(selector)
将字符串的选择符 selector 转换成选择器队列。
selector-parse("h1 .myInput .warning") // ('h1' '.myInput' '.warning')
selector-replace(selector, original, replacement)
给定一个选择器,用replacement 替换 original 后返回一个新的选择器队列。
selector-replace("p.warning", "p", "div") // div.warning
selector-unify(selector1, selector2)
将两组选择器合成一个复合选择器。如两个选择器无法合成,则返回 null 值。
selector-unify("myInput", ".disabled") // myInput.disabled
selector-unify("p", "h1") // null
simple-selectors(selectors)
将合成选择器拆为单个选择器。
simple-selectors("div.myInput") // div, .myInput
simple-selectors("div.myInput:before") // div, .myInput, :before
颜色函数(一)颜色设置
对颜色的设置和编辑永远是前端设计的首要一步。
rgb(red, green, blue)
创建一个 Red-Green-Blue (RGB) 色。其中 R 是 "red" 表示红色,而 G 是 "green" 绿色,B 是 "blue" 蓝色。
rgb(0, 255, 255);
rgba(red, green, blue, alpha)
根据红、绿、蓝和透明度值创建一个颜色。
rgba(0, 255, 255, 0.3);
hsl(hue, saturation, lightness)
通过色相(hue)、饱和度(saturation)和亮度(lightness)的值创建一个颜色。
hsl(120, 100%, 50%); // 绿色
hsl(120, 100%, 75%); // 浅绿色
hsl(120, 100%, 25%); // dark green
hsl(120, 60%, 70%); // 柔和的绿色
hsla(hue, saturation, lightness, alpha)
通过色相(hue)、饱和度(saturation)、亮度(lightness)和透明(alpha)的值创建一个颜色。
hsl(120, 100%, 50%, 0.3); // 绿色带有透明度
hsl(120, 100%, 75%, 0.3); // 浅绿色带有透明度
grayscale(color)
将一个颜色变成灰色,相当于 desaturate( color,100%)。
grayscale(#7fffd4); // #c6c6c6
complement(color)
返回一个补充色,相当于adjust-hue($color,180deg)。
complement(#7fffd4); // #ff7faa
invert(color, weight)
返回一个反相色,红、绿、蓝色值倒过来,而透明度不变。
invert(white); // black
颜色函数(二)颜色获取
看到下面这些参数,你会发现,这不是我美颜的常用设置吗,这我熟呀。
red(color)
从一个颜色中获取其中红色值(0-255),可用于取出某个hex颜色中的红色值。
red(#7fffd4); // 127
red(red); // 255
green(color)
从一个颜色中获取其中绿色值(0-255)。
green(#7fffd4); // 255
green(blue); // 0
blue(color)
从一个颜色中获取其中蓝色值(0-255)。
blue(#7fffd4); // 212
blue(blue); // 255
hue(color)
返回颜色在 HSL 色值中的角度值 (0deg - 255deg)。
hue(#7fffd4); // 160deg
saturation(color)
获取一个颜色的饱和度值(0% - 100%)。
saturation(#7fffd4); // 100%
lightness(color)
获取一个颜色的亮度值(0% - 100%)。
lightness(#7fffd4); // 74.9%
alpha(color)
返回颜色的alpha,返回值为0 或1。
alpha(#7fffd4); // 1
opacity(color)
获取颜色透明度值(0-1)。
opacity(rgba(127, 255, 212, 0.5); // 0.5
颜色函数(三)颜色操作
mix(color1, color2, weight)
把两种颜色混合起来。
weight 参数必须是 0% 到 100%。默认 weight 为 50%,表明新颜色各取 50% color1 和 color2 的色值相加。如果 weight 为 25%,那表明新颜色为 25% color1 和 75% color2 的色值相加。
adjust-hue(color, degrees)
通过改变一个颜色的色相值(-360deg - 360deg),创建一个新的颜色。
adjust-hue(#7fffd4, 80deg); // #8080ff
rgba(color, alpha)
根据红、绿、蓝和透明度值创建一个颜色。
rgba(#7fffd4, 30%); // rgba(127, 255, 212, 0.3)
lighten(color, amount)
通过改变颜色的亮度值(0% - 100%),让颜色变亮,创建一个新的颜色。
darken(color, amount)
通过改变颜色的亮度值(0% - 100%),让颜色变暗,创建一个新的颜色。
saturate(color, amount)
提高传入颜色的色彩饱和度。等同于 adjust-color( color, saturation: amount)
desaturate(color, amount)
调低一个颜色的饱和度后产生一个新的色值。同样,饱和度的取值区间在 0% ~ 100%。等同于 adjust-color(color, saturation: -amount)
opacify(color, amount)
降低颜色的透明度,取值在 0-1 之。等价于 adjust-color(color, alpha: amount)
fade-in(color, amount)
降低颜色的透明度,取值在 0-1 之。等价于 adjust-color(color, alpha: amount)
transparentize(color, amount)
提升颜色的透明度,取值在 0-1 之间。等价于 adjust-color(color, alpha: -amount)
fade-out(color, amount)
提升颜色的透明度,取值在 0-1 之间。等价于 adjust-color(color, alpha: -amount)
总结
函数那么多,记肯定是记不住的,只有是实际开发过程中使用到,当然也可以尽可能的去使用,对scss的函数的熟悉感才会有比较明显的进步。总结了一遍,有许多用过的,有部分看到别人用过的,有部分没有看到过的,慢慢明白是怎样一回事了,这可能就是这篇文章的收获吧。
感谢
万能的网络
公众号-归子莫,小程序-小归博客
【Sass/SCSS】我花4小时整理了的Sass的函数的更多相关文章
- 「Vue」vue-cli 3.0集成sass/scss到vue项目
vue-cli 3提供了两种方式集成sass/scss: 创建项目是选择预处理器sass手动安装sass-loader创建项目选择预处理器sass$ vue create vuedemo? Pleas ...
- 【Sass/SCSS】预加载器中的“轩辕剑”
[Sass/SCSS]预加载器中的"轩辕剑" 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 说明 随着前端 ...
- vue2.0以上版本安装sass(scss)
一.首先说明sass和scss的区别. 1.异同:1)简言之可以理解scss是sass的一个升级版本,完全兼容sass之前的功能,又有了些新增能力.语法形式上有些许不同,最主要的就是sass是靠缩进表 ...
- vue项目安装sass/scss
vue 添加scss 安装好之后使用: 注意scss和sass的语法区别,scss是用传统花括号,sass是缩进控制,看个人习惯选择语言 sass语法看这里==>sass基本语法 vue项目编译 ...
- Sass(SCSS)中文手册——入门
简书原文 https://www.jianshu.com/p/e82c27aa05c7 前言 该中文手册是我在Sass中文文档的基础上编辑的,或者也可以理解为就是Sass中文文档的翻版.之所以有这篇文 ...
- Sass&Scss入门 选择器 混合器 导入 条件判断 迭代
Sass 基于ruby的一种将脚本解析成CSS的脚本语言.也可以说是一种预处理语言. Sass在css的语法基础上增加了变量.嵌套.混合.继承.导入等高级功能. 使用Sass与Sass样式库(如com ...
- sass/scss 和 less的区别
一. Sass/Scss.Less是什么? Sass (Syntactically Awesome Stylesheets)是一种动态样式语言,Sass语法属于缩排语法,比css比多出好些功能(如变量 ...
- 前端编码规范(4)—— CSS 和 Sass (SCSS) 规范
CSS and Sass (SCSS) style rules ID and class naming ID和class(类)名总是使用可以反应元素目的和用途的名称,或其他通用名称.代替表象和晦涩难懂 ...
- CSS预处理器Sass(Scss)、Less、Stylus
CSS 预处理编译器能让我成程序化其的方式编写CSS代码,可以引入CSS中没有的变量.条件.函数等特性,从而让代码更简单易维护,但一般按预处理器语法编写的代码无法直接在浏览器中运行,需用通过工具比如g ...
随机推荐
- Java秘诀!Java赋值运算符介绍
运算符丰富是 Java 语言的主要特点之一,它提供的运算符数量之多,在高级语言中是少见的. Java 语言中的运算符除了具有优先级之外,还有结合性的特点.当一个表达式中出现多种运算符时,执行的先后顺序 ...
- JavaScript常用的Hook脚本
JavaScript常用的Hook脚本 本文Hook脚本 来自 包子 页面最早加载代码Hook时机 在source里 用dom事件断点的script断点 然后刷新网页,就会断在第一个js标签,这时候就 ...
- Bug概述、状态、类型、级别、优先级提交和Bug生命周期管理
缺陷概述: 1)缺陷(Defect):是指存在于软件之中偏差,可被激活,以静态形式存在于软件内部,相当于Bug. 2)故障(Fault):当缺陷被激活后,软件运⾏中出现的状态,可引起意外情况,若不加处 ...
- 巧用 CSS3 filter(滤镜) 属性
原文链接:CSS3 filter(滤镜) 属性 效果预览 filter: grayscale(100%); 定义和使用 filter 属性定义了元素(通常是<img>)的可视效果(例如:模 ...
- 代码混淆保安全「GitHub 热点速览 v.21.43」
作者:HelloGitHub-小鱼干 虽然让代码难以阅读看似是件难以理解的事情,但是混淆后的代码起到了类似加密的作用,而且经过混淆的代码依旧能实现原代码的功能.javascript-obfuscato ...
- Elasticsearch 中为什么选择倒排索引而不选择 B 树索引
目录 前言 为什么全文索引不使用 B+ 树进行存储 全文检索 正排索引 倒排索引 倒排索引如何存储数据 FOR 压缩 RBM 压缩 倒排索引如何存储 字典树(Tria Tree) FST FSM 构建 ...
- LeetCode:回溯算法
回溯算法 这部分主要是学习了 labuladong 公众号中对于回溯算法的讲解 刷了些 leetcode 题,在此做一些记录,不然没几天就忘光光了 总结 概述 回溯是 DFS 中的一种技巧.回溯法采用 ...
- 大厂面试题系列:重载(Overload)和重写(Override)的区别。重载的方法能否根据返回类型进行区分
面试题:重载(Overload)和重写(Override)的区别.重载的方法能否根据返回类型进行区分 面试官考察点猜想 这道题纯粹只是考查基础理论知识,对实际开发工作中没有太多的指导意义,毕竟编辑器都 ...
- objdump--反汇编查看
转载:objdump命令_Linux objdump 命令用法详解:显示二进制文件信息 (linuxde.net) objdump命令 编程开发 objdump命令是用查看目标文件或者可执行的目标文件 ...
- cf17B Hierarchy(额,,,水)
题意: Nick's company employed n people. Now Nick needs to build a tree hierarchy of «supervisor-surbod ...