Sass函数--列表函数

列表函数简介

列表函数主要包括一些对列表参数的函数使用,主要包括以下几种:

  • length($list):返回一个列表的长度值;
  • nth($list, $n):返回一个列表中指定的某个标签值
  •  join($list1, $list2, [$separator]):将两个列给连接在一起,变成一个列表;
  • append($list1, $val, [$separator]):将某个值放在列表的最后;
  • zip($lists…):将几个列表结合成一个多维的列表;
  • index($list, $value):返回一个值在列表中的位置值。

列表函数中的每个函数都有其独特的作用与功能

length()函数
length()函数主要用来返回一个列表中有几个值,简单点说就是返回列表清单中有多少个值

1 >> length(10px)
2 1
3 >> length(10px 20px (border 1px solid) 2em)
4 4
5 >> length(border 1px solid)
6 3

length() 函数中的列表参数之间使用空格隔开,不能使用逗号,否则函数将会出错:

1 >> length(10px,20px,(border 1px solid),2em)
2 SyntaxError: wrong number of arguments (4 for 1) for `length‘
3 >> length(1,2px)
4 SyntaxError: wrong number of arguments (2 for 1) for `length‘

nth()函数
语法:

nth($list,$n)

nth()函数用来指定列表中某个位置的值。在Sass中,nth()函数和其他语言不同,1是指列表中的第一个标签值,2是指列表中的第二个标签值,依此类推。如:

1 >> nth(10px 20px 30px,1)
2 10px
3 >> nth((Helvetica,Arial,sans-serif),2)
4 "Arial"
5 >> nth((1px solid red) border-top green,1)
6 (1px "solid" #ff0000)

注:在 nth($list,$n) 函数中的 $n 必须是大于 0 的整数:

1 >> nth((1px solid red) border-top green 1 ,0)
2 SyntaxError: List index 0 must be a non-zero integer for `nth‘

join()函数
join()函数是将两个列表连接合并成一个列表。

1 >> join(10px 20px, 30px 40px)
2 10px 20px 30px 40px
3 >> join((blue,red),(#abc,#def))
4 #0000ff, #ff0000, #aabbcc, #ddeeff
5 >> join((blue,red),(#abc #def))
6 #0000ff, #ff0000, #aabbcc, #ddeeff

不过join()只能将两个列表连城一个列表,如果直接连接两个以上的列表将会报错。
但很多时候不只碰到两个列表连接成一个列表,这个时候就需要将多个 join() 函数合并在一起使用:

1 >> join((blue red), join((#abc #def),(#dee #eff)))
2 #0000ff #ff0000 #aabbcc #ddeeff #ddeeee #eeffff

但当第一个列表中只有一个列表项,那么 join() 函数合并的列表项目中每个列表项目之间使用的分隔符号会根据第二个列表项中使用的,如果第二列表项中使用是,分隔,则使用逗号分隔;如果第二列项之间使用的空格符,则使用空格分隔:

1 >> join(blue,(green, orange))
2 #0000ff, #008000, #ffa500
3 >> join(blue,(green orange))
4 #0000ff #008000 #ffa500

如果当两个列表中的列表项小于1时,将会以空格分隔:

1 >> join(blue,red)
2 #0000ff #ff0000

什么时候会是用逗号分隔合并的列表项,什么时候是使用空格分隔合并的列表项,建议使用 join() 函数合并列表项的时候就明确指定 $separator 参数,用来指定合并的列表中使用什么方式来分隔列表项:

 1 >> join(blue,red,comma)
 2 #0000ff, #ff0000
 3 >> join(blue,red,space)
 4 #0000ff #ff0000
 5 >> join((blue green),(red,orange),comma)
 6 #0000ff, #008000, #ff0000, #ffa500
 7 >> join((blue green),(red,orange),space)
 8 #0000ff #008000 #ff0000 #ffa500
 9 >> join((blue, green),(red,orange),comma)
10 #0000ff, #008000, #ff0000, #ffa500
11 >> join((blue, green),(red,orange),space)
12 #0000ff #008000 #ff0000 #ffa500
13 >> join(blue,(red,orange),comma)
14 #0000ff, #ff0000, #ffa500
15 >> join(blue,(red,orange),space)
16 #0000ff #ff0000 #ffa500
17 >> join(blue,(red orange),comma)
18 #0000ff, #ff0000, #ffa500
19 >> join(blue,(red orange),space)
20 #0000ff #ff0000 #ffa500

append()函数
append()函数是用来将某个值插入到列表中,并且处于最末位。

1 >> append(10px 20px ,30px)
2 10px 20px 30px
3 >> append((10px,20px),30px)
4 (10px, 20px, 30px)
5 >> append(green,red)
6 #008000 #ff0000
7 >> append(red,(green,blue))
8 #ff0000 #008000, #0000ff

如果没有明确的指定 $separator 参数值,其默认值是 auto。
如果列表只有一个列表项时,那么插入进来的值将和原来的值会以空格的方式分隔。
如果列表中列表项是以空格分隔列表项,那么插入进来的列表项也将以空格分隔;
如果列表中列表项是以逗号分隔列表项,那么插入进来的列表项也将以逗号分隔。
在 append() 函数中,可以显示的设置 $separator 参数,
如果取值为 comma 将会以逗号分隔列表项
如果取值为 space 将会以空格分隔列表项

 1 >> append((blue green),red,comma)
 2 #0000ff, #008000, #ff0000
 3 >> append((blue green),red,space)
 4 #0000ff #008000 #ff0000
 5 >> append((blue, green),red,comma)
 6 #0000ff, #008000, #ff0000
 7 >> append((blue, green),red,space)
 8 #0000ff #008000 #ff0000
 9 >> append(blue,red,comma)
10 #0000ff, #ff0000
11 >> append(blue,red,space)
12 #0000ff #ff0000

zip()函数
zip()函数将多个列表值转成一个多维的列表:

1 >> zip(1px 2px 3px,solid dashed dotted,green blue red)
2 1px "solid" #008000, 2px "dashed" #0000ff, 3px "dotted" #ff0000

在使用zip()函数时,每个单一的列表个数值必须是相同的:
|--- List ---|--- nth(1) ---|--- nth(2) ---|--- nth(3) ---|
|------------|--------------|--------------|--------------|
| List1 | 1px | 2px | 3px |
|------------|--------------|--------------|--------------|
| List2 | solid | dashed | dotted |
|------------|--------------|--------------|--------------|
| List3 | green | blue | red |
|------------|--------------|--------------|--------------|
zip()函数组合出来就成了:

1px solid green, 2px dashed blue, 3px dotted red

index()函数
index() 函数类似于索引一样,主要让你找到某个值在列表中所处的位置。在 Sass 中,第一个值就是1,第二个值就是 2,依此类推:

1 >> index(1px solid red, 1px)
2 1
3 >> index(1px solid red, solid)
4 2
5 >> index(1px solid red, red)
6 3

index() 函数中,如果指定的值不在列表中(没有找到相应的值),那么返回的值将是 false,相反就会返回对应的值在列表中所处的位置。

1 >> index(1px solid red,dotted) //列表中没有找到 dotted
2 false
3 >> index(1px solid red,solid) //列表中找到 solid 值,并且返回他的位置值 2
4 2

Introspection函数

Introspection函数包括了几个判断型函数:

  • type-of($value):返回一个值的类型
  • unit($number):返回一个值的单位;
  • unitless($number):判断一个值是否带有带位
  • comparable($number-1, $number-2):判断两个值是否可以做加、减和合并

Introspection 函数 -type-of()
type-of()函数主要用来判断一个值是属于什么类型:

返回值:

  • number 为数值型。
  • string 为字符串型。
  • bool 为布尔型。
  • color 为颜色型。
 1 >> type-of(100)
 2 "number"
 3 >> type-of(100px)
 4 "number"
 5 >> type-of("asdf")
 6 "string"
 7 >> type-of(asdf)
 8 "string"
 9 >> type-of(true)
10 "bool"
11 >> type-of(false)
12 "bool"
13 >> type-of(#fff)
14 "color"
15 >> type-of(blue)
16 "color"
17 >> type-of(1 / 2 = 1)
18 "string"

unit()函数
unit() 函数主要是用来获取一个值所使用的单位,碰到复杂的计算时,其能根据运算得到一个“多单位组合”的值,不过只充许乘、除运算:

 1 >> unit(100)
 2 ""
 3 >> unit(100px)
 4 "px"
 5 >> unit(20%)
 6 "%"
 7 >> unit(1em)
 8 "em"
 9 >> unit(10px * 3em)
10 "em*px"
11 >> unit(10px / 3em)
12 "px/em"
13 >> unit(10px * 2em / 3cm / 1rem)
14 "em/rem"

但加、减碰到不同单位时,unit() 函数将会报错,除 px 与 cm、mm 运算之外:

 1 >> unit(1px + 1cm)
 2 "px"
 3 >> unit(1px - 1cm)
 4 "px"
 5 >> unit(1px + 1mm)
 6 "px"
 7 >> unit(10px * 2em - 3cm / 1rem)
 8 SyntaxError: Incompatible units: ‘cm‘ and ‘px*em‘.
 9 >> unit(10px * 2em - 1px / 1rem)
10 SyntaxError: Incompatible units: ‘‘ and ‘em‘.
11 >> unit(1px - 1em)
12 SyntaxError: Incompatible units: ‘em‘ and ‘px‘.
13 >> unit(1px - 1rem)
14 SyntaxError: Incompatible units: ‘rem‘ and ‘px‘.
15 >> unit(1px - 1%)
16 SyntaxError: Incompatible units: ‘%‘ and ‘px‘.
17 >> unit(1cm + 1em)
18 SyntaxError: Incompatible units: ‘em‘ and ‘cm‘.

unit() 函数对于单位运算相对来说也没有规律,而且有些单位也无法整合成一个单位,对于我们在 CSS 中运用中并不适合,比如:

1 >> unit(10px * 3em)
2 "em*px"
3 >> unit(10px / 3em)
4 "px/em"
5 >> unit(10px * 2em / 3cm / 1rem)
6 "em/rem"

上面运算出来的单位,对于在 CSS 中使用将是没有任何意义的。

unitless()函数
unitless() 函数相对来说简单明了些,只是用来判断一个值是否带有单位,如果不带单位返回的值为 true,带单位返回的值为 false

 1 >> unitless(100)
 2 true
 3 >> unitless(100px)
 4 false
 5 >> unitless(100em)
 6 false
 7 >> unitless(100%)
 8 false
 9 >> unitless(1 /2 )
10 true
11 >> unitless(1 /2 + 2 )
12 true
13 >> unitless(1px /2 + 2 )
14 false

代码实现:用户在调用混合宏时,如果用户没有给参数值加上单位,程序会自动加入单位。

 1 @mixin adjust-location($x, $y) {
 2     @if unitless($x) {
 3         $x: 1px * $x;
 4     }
 5     @if unitless($y) {
 6         $y: 1px * $y;
 7     }
 8     position: relative;
 9     left: $x;
10     top: $y;
11 }
12 .botton{
13     @include adjust-location(20px, 30);
14 }

编译过来的CSS:

1 .botton {
2     position: relative;
3     left: 20px;
4     top: 30px;
5 }

comparable()函数
comparable()函数主要是用来判断连个数是否可以进行“加,减”以及“合并”。如果可以返回的值为true,如果不可以返回的值是false:

 1 >> comparable(2px,1px)
 2 true
 3 >> comparable(2px,1%)
 4 false
 5 >> comparable(2px,1em)
 6 false
 7 >> comparable(2rem,1em)
 8 false
 9 >> comparable(2px,1cm)
10 true
11 >> comparable(2px,1mm)
12 true
13 >> comparable(2px,1rem)
14 false
15 >> comparable(2cm,1mm)
16 true

Miscellaneous函数
在这里吧Miscellaneous函数称为三元条件函数,主要因为他和JavaScript中的三元判断非常的相似。他有两个值,当条件成立返回一种值,当条件不成立时返回另一种值:

if($condition,$if-true,$if-false)

上面表达式的意思是当$condition条件成立时,返回的值为 $if-true,否则返回的是 $if-false 值。

1 >> if(true,1px,2px)
2 1px
3 >> if(false,1px,2px)
4 2px
时间: 2024-10-14 19:27:25

Sass函数--列表函数的相关文章

10天精通Sass 之 Sass列表函数

列表函数主要有: length($list):返回一个列表的长度值: nth(list,n):返回一个列表中指定的某个标签值 join(list1,list2, [$separator]):将两个列给连接在一起,变成一个列表: append(list1,val, [$separator]):将某个值放在列表的最后: zip($lists-):将几个列表结合成一个多维的列表: index(list,value):返回一个值在列表中的位置值. length($list)返回一个列表的长度值 .spa

Sass Maps的函数

Sass Maps的函数 前面介绍了使用 map 来管理变量,但要在 Sass 中获取变量,或者对 map 做更多有意义的操作,我们必须借助于 map 的函数功能.在 Sass 中 map 自身带了七个函数: map-get($map,$key):根据给定的 key 值,返回 map 中相关的值. map-merge($map1,$map2):将两个 map 合并成一个新的 map. map-remove($map,$key):从 map 中删除一个 key,返回一个新 map. map-key

虚函数列表: 取出方法 // 虚函数工作原理和(虚)继承类的内存占用大小计算 32位机器上 sizeof(void *) // 4byte

#include <iostream> using namespace std; class A { public: A(){} virtual void geta(){ cout << "A:A" <<endl; } virtual void getb(){ cout << "A:B" <<endl; } }; class B :public A{ public: B(){} virtual void g

“虐心”的获取C++函数列表

今天在这里和大家分享一下如何获取c++文件中的函数列表,问题和灵感来自于同事小W自开发的C++代码覆盖率工具,原理是通过给现有的代码进行打桩,在运行到该函数的时候对该函数进行标记,最终统计得到代码的函数覆盖度. 如图:程序的源代码 经过打桩后的代码 原理大致如下,这里就不给大家详细介绍了. 那么问题的重点来了,如何解析并且获取cpp文件中的函数呢? 首先想到的方法是的利用编译原理的思想通过添加规则的方法去获取函数,如:对"{","}","(",&

untra edit 显示文件函数列表

UltraEdit的函数列表竟然不显示函数,那这功能要它何用,应该如何才能让函数显示出来呢? 1:先查看一下UE的菜单:视图-->查看方式(语法高亮类型)-->选择相应的语言(我们用的是C,嗯嗯这个步骤有快捷键哦) 2:如果显示是上面的情况,则需要修改配置:高级-->配置(导航)-->编辑器显示-->语法高亮-->文档的完整路径名称.选择你安装的文件UE根目录下的WORDFILE.UEW文件或者 wordfile 目录. 3:视图-->环境,选择“Power Us

ida idc函数列表全集

下面是函数描述信息中的约定: 'ea' 线性地址 'success' 0表示函数失败:反之为1 'void'表示函数返回的是没有意义的值(总是0) AddBptEx AddBpt AddCodeXref AddConstEx AddEntryPoint AddEnum AddHotkey AddSourceFile AddStrucEx AddStrucMember AltOp Analysis AnalyzeArea AppendFchunk ApplySig AskAddr AskFile

《zw版&#183;delphi与halcon系列原创教程》zw版_THImagex控件函数列表

<zw版·delphi与halcon系列原创教程>zw版_THImagex控件函数列表 Halcon虽然庞大,光HALCONXLib_TLB.pas文件,源码就要7w多行,但核心控件就是两个: THImagex,图像数据控件,v11版,包括488个函数和子程序 THOperatorSetX,操作主接口控件,v11版,包括1929个子程序 以上两大核心控件,已经删除个别delphi内部属性函数,不影响日常使用. 其他控件,基本上,都是为配合两个控件,提供数据类型支持.辅助功能.已经一些特殊应用(

python列表函数和方法

Python列表函数和方法 python列表中主要有以下函数: cmp(list1,list2)    比较两个列表的元素 len(list)           列表元素的个数 max(list)           返回列表元素的最大值 min(list)           返回列表元素的最小值 list(seq)           将元组转换成列表 ---------------------------------我是华丽的分割线----------------------------

10.迭代器/生成器/协程函数/列表生成器

迭代器为什么要用迭代器?小结:生成器为什么要使用生成器,什么是生成器?如何创建一个生成器举个栗子:斐波拉契数列用yield返回结果的执行流程作业代码以及注释:协程函数面向过程编程作业以及代码注解:典型范例以及代码解析:列表生成式生成器表达式作业和练习 迭代器 为什么要用迭代器? 提供了一种不依赖索引的取值方式,使一些不具有索引属性的对象也能遍历输出 相比列表,迭代器的惰性计算更加节约内存. 但是它无法有针对性地指定取某个值,并且只能向后取值. >>> from collections i