scss当前支持七种主要数据类型

  (1).数字,1, 2, 13, 10px。

  (2).字符串,有引号字符串与无引号字符串,"foo", 'bar', baz。

  (3).颜色,blue, #04a3f9, rgba(255,0,0,0.5)。

  (4).布尔型,true, false。

  (5).空值,null。

  (6).数组 (list),用空格或逗号作分隔符。

  (7).maps, 相当于 JavaScript对象直接量。

  SCSS也支持其他 CSS 属性值,比如Unicode 字符集,或!important声明。然而SCSS不会特殊对待这些属性值,一律视为无引号字符串。

  一、Number类型

  SCSS中的Number类型与其他编程语言是类似的,但是不同点也很突出。

  如下数据在SCSS都是Number类型:

1, 2, 13, 10px。

  但是在其他编程语言中,10px基本不可能是Number类型;

  在SCSS中,很多时候数字结合CSS单位依然是一个Number类型。

  看如下代码实例:

$size: 5;
$px-unit: $size * 1px;
$px-string: $size + px;
$px-number: $px-unit / 1px;

  声明一个变量,并赋值为5,自然它是一个Number类型。

  (1).$px-unit:Number类型,1px可以认为是一个数字,是一个数字之间的乘法运算。

  (2).$px-string:String类型,px单独出现会被看做一个字符串,使用+号,那么就是字符串连接操作。

  (3).$px-number:Number类型,SCSS中允许带有相同单位的除法操作,结果是5。

  二、String类型

  在CSS中字符串常常用于字体样式或其他的属性的样式。SCSS中的字符串和CSS一样,在SCSS中,使用单引号('')或双引号("")包裹的都是字符串,就是他们包裹的是一个空

格,那也是字符串。

$name: 'i' + ' babyli';           // 'i babyli'
$date: 'Month/Year : ' + 10/2018;     // 'Month/Year : 10/2018'
$date: 'Month/Year : ' + (10/2018);   // 'Month/Year : 0.00496'
$variable: 10/2018;            // 0.00496
$just-string: '10/2018';         // '10/2018'

  像$name存储了一个字符串,有趣的是,在第二次声明中,10/2018并没有计算,而是当作一个字符串。这也就是说,字符串也可以和其他数据类型连接在一起。但是,字符串依旧

不能和null连接。

  在第三次声明中,$variable直接计算了10/2018,而不是字符串,主要是因为没有别的字符串和他连接在一起。如果你希望让变量$variable存储类似10/2018作为字符串,就必须

像后面声明的变量$just-string一样,需要用引号(单引号或双引号)括起来。

  如果你想在一个字符串是使用一个变量,而你又不想让这个变量直接变成了字符串,那就得使用到一个被称为变量插值,简单点说,就是使用#{}来包裹这个变量。来看一个简单

的示例:

$name: 'Gajendar';
$author: 'Author : $name';       // 'Author : $name' $author: 'Author :
#{$name}';                // 'Author : Gajendar'

  

  三、Color类型

  CSS颜色表达式属于颜色数据类型,比如颜色十六进制符号、rgb、rgba、hsl、hsla和使用关键词(如red等)。

  SCSS主要提供一些额外的功能,这样就可以更有效的使用颜色。代码实例如下:

$color: yellowgreen;         // #9ACD32
$color: lighten($color, 15%);   // #b8dc70
$color: darken($color, 15%);   // #6c9023
$color: saturate($color, 15%); // #a1e01f
$color: desaturate($color, 15%); // #93ba45
$color: (green + red);     // #ff8000

  

  四、布尔类型

  SCSS中的布尔类型和其他语言的布尔类型类似,只有两个值:

  (1).true。

  (2).false。

  在SCSS中,只有自身是false和null才会返回false,其他一切都将返回true。

$i-am-true: true;
$a-number: 2; body {
@if not $i-am-true {
background: rgba(255, 0, 0, 0.6);
} @else {
background: rgba(0, 0, 255, 0.6); // expected
}
}
.warn {
@if not $a-number {
color: white;
font-weight: bold;
font-size: 1.5em;
} @else {
display: none; // expected
}
}

  上面的代码编译如下:

body {
background: rgba(0, 0, 255, 0.6);
}
.warn {
display: none;
}

  

  五、Null类型

  SCSS中也具有Null类型,与JavaScript类似,它代表空。

  如果将其转换为布尔值,结果是false。由于它代表空,所以不能够使用它来进行字符串连接:

null+"ibabyli"

  上面类似的操作会报错。

  六、List列表

  列表(lists) 是指 SCSS 如何表示在CSS声明的,类似margin: 10px 15px 0 0 或 font-face: Helvetica, Arial, sans-serif 这样的值,列表只是一串其他值,无论是用空格还是用逗号隔

开。事实上,独立的值也被视为列表:只包含一个值的列表。

  列表本身没有太多的功能,但 SCSS list functions 赋予了数组更多新功能:nth 函数可以直接访问数组中的某一项;join 函数可以将多个数组连接在一起;append 函数可以在数组

中添加新值;而 @each 指令能够遍历数组中的每一项。

  除了包含简单的值,列表可包含其他列表。例如,1px 2px, 5px 6px包含1px 2px列表和5px 6px列表两个项。如果内外两层列表使用相同的分隔符号,你需要使用括号将内层列表

括起来,以明确内层类别的开始和结束位置。

  例如,(1px 2px) (5px 6px) 同样是包含1px 2px列表和5px 6px列表两个项的列表。不同的是,该列表外层用空格分隔,之前列表外层是用逗号分隔。

当列表被编译为 CSS 时,SCSS不会添加任何圆括号,因为CSS不能识别他们。这意味着, (1px 2px) (5px 6px) 和1px 2px 5px 6px 在编译后的 CSS 文件中看起来是完全一样的。然

而,它们在 SCSS 中却是不同的:第一个是含两个列表的列表,而第二个是含有四个成员的列表。

  列表也可以没有任何项。这些列表可以用 () 表示(也是一个空的 map)。空数组不可以直接编译成 CSS,比如编译 font-family: () Sass 将会报错。如果数组中包含空数组或空

值,编译时将被清除,比如 1px 2px () 3px 或 1px 2px null 3px。

  逗号分隔的列表可以保留结尾的逗号。这是特别有用,因为它可以表示一个 单个元素的列表。

  例如,(1,)表示为只包含1的列表,而(1 2 3,)这个表示包含一个列表,这个列表又包含以空格分隔的1, 2 和 3的列表。

// 定义一个列表
$px: 5px 10px 15px 20px;
#main {
margin-top:nth($px, 1);
margin-right: nth($px, 2);
margin-bottom: nth($px, 3);
margin-left: nth($px, 4);
} // 编译后的 CSS 文件
#main {
margin-top: 5px;
margin-right: 10px;
margin-bottom: 15px;
margin-left: 20px;
}

  列表合并

$px1: 5px 10px 15px;
$px2: 1px 2px 3px; $px: join($px1, $px2); // 5px 10px 15px 1px 2px 3px

  添加新值

$px: 5px 10px 15px 20px;
$px: append($px, 11px); // 将 11px 添加到 $px 中

  七、Map对象

  如果说scss的list对应于JavaScript数组,那么scss的map就对应这个JavaScript对象直接量。

  它是一种映射任何类型键值对(可以是任何类型,包括内嵌maps,不过不推荐这种内嵌方式)的数据结构。

  代码实例:

$map: (
$key1: value1,
$key2: value2,
$key3: value3
)

  上面是scss中map的一个简单代码实例,再来看一下JavaScript对象直接量的结构:

let object= {
webName:"babyli",
age:19,
address:"湖北省武汉市"
}

  scss中的map语法结构

  (1).map名称前要有一个$。

  (2).名称后面是一个冒号。

  (3).冒号后面是小括号。

  (4).小括号中的数据是以key:value键值对的形式存在的。

  (5).键值对之间使用逗号分隔,最后一个后面无需逗号。

  map中可以嵌套map,代码实例如下:

$map: (
key1: value1,
key2: (
key-1: value-1,
key-2: value-2,
),
key3: value3
);

  map在很多应用中是非常便利的,比如网站的皮肤管理,就可以将皮肤的样式存储在嵌套的map中。

  代码实例如下:

$theme-color: (
default: (
bgcolor: #fff,
text-color: #444,
link-color: #39f
), primary:(
bgcolor: #000,
text-color:#fff,
link-color: #93f
), negative: (
bgcolor: #f36,
text-color: #fefefe,
link-color: #d4e
)
)

  scss内置了七个用来专门操作map的函数:

  (1).map-get($map,$key):根据给定key,返回map中对应的value。

  (2).map-merge($map1,$map2):将两个map合并成一个新的map。

  (3).map-remove($map,$key):从map中删除一个key,返回一个新map。

  (4).map-keys($map):返回map中所有的key。

  (5).map-values($map):返回map中所有的value。

  (6).map-has-key($map,$key):根据给定key判断map是否有对应value,有返回true,否则false。

  (7).keywords($args):返回一个函数的参数,这个参数可以动态的设置key和value。

scss-数据类型的更多相关文章

  1. sass基础篇

    scss的语法非常简单: $color: red; div{ color: $color; } 这就是一个简单的scss代码. 但是,使用 Sass 进行开发,那么是不是直接通过“<link&g ...

  2. scss 学习笔记

    由于没有办法在网络上找到适合顾客的模板,同时之前自己写css也没有很好的管理方式,最终选择了scss. Nested #main p { color: #00ff00; width: 97%; .re ...

  3. sass.scss简单入门

    最近研究了一下sass和scss,清晰结构化,在某些地方的确强大,所以写了一篇入门教程,大概15分钟左右就能明白基本原理 什么是sass(css预处理器) Sass官网上是这样描述sass的,sass ...

  4. java基础数据类型包装类

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

  5. css预编译语言 sass scss(变量$var, css嵌套规则,@import规则,@extend,@mixin)

    什么是sass Sass 是对 CSS 的扩展,让 CSS 语言更强大.优雅. 它允许你使用变量.嵌套规则. mixins.导入等众多功能, 并且完全兼容 CSS 语法. Sass 有助于保持大型样式 ...

  6. scss学习笔记

    1.引用父选择符: & #main { color: black; a { font-weight: bold; &:hover { color: red; } } } 2.font: ...

  7. ES01 数据类型、正则表达式、身份证校验

    1 基本数据类型 参见W3C的教程即可 2 正则表达式 参考博文:点击前往 3 身份证校验 参考博文:点击前往 <div class="panel panel-primary" ...

  8. sass05 数据类型,数据运算

    /*! 数字类型 */ $n1: 1.2; $n2: 12; $n3: 14px; p{ font-size: $n3; } /*! 字符串类型*/ $s1: container; $s2: 'con ...

  9. scss 常用语法

    点击查看 sass 官方文档 1.编译 初学可以在atom 中编译 安装命令 gem install sass atom中安装atom-sass ,mac 中"control+option+ ...

  10. Sass/Scss 基础篇

    Sass/Scss 基础篇 总结Sass学习到的内容 应用Sass/Scss前,环境配置 首先下载Ruby (http://rubyinstaller.org/downloads) 通过命令下载sas ...

随机推荐

  1. Python3之os模块

    一:简介 os模块主要用于提供系统高级别的操作. 二:常用方法 os.access(path, mode) # 检验权限模式 os.chdir(path) # 改变当前工作目录 os.chflags( ...

  2. linux的发行版

    Linux的不同版本以及应用领域 1.Linux内核及发行版介绍 <1>Linux内核版本 内核(kernel)是系统的心脏,是运行程序和管理像磁盘和打印机等硬件设备的核心程序,它提供了一 ...

  3. SDUT OJ 数据结构实验之链表八:Farey序列

    数据结构实验之链表八:Farey序列 Time Limit: 10 ms Memory Limit: 600 KiB Submit Statistic Discuss Problem Descript ...

  4. js 简单数据类型和复杂数据类型的区别

    原始数据类型: number,string,boolean,undefined, null,object 基本类型(简单类型),值类型: number,string,boolean 复杂类型(引用类型 ...

  5. Android 绑定Service并与之通信

    1.绑定service 2.实现方法 3.在Androidmanifest.xml文件中配置service <service android:name=".Myservice" ...

  6. Spring Eureka的使用入门--服务端与客户端

    接上篇: Eureka作为注册中心,连接服务端与客户端: 服务端: 依赖包: apply plugin: 'org.springframework.boot' apply plugin: 'io.sp ...

  7. 1001 害死人不偿命的(3n+1)猜想 (15 分)

    #include <iostream> using namespace std; int main(){ ; cin >> n; ){ != ) n = ( * n + ) / ...

  8. 洛谷 P2486 [SDOI2011]染色(树链剖分+线段树)

    题目链接 题解 比较裸的树链剖分 好像树链剖分的题都很裸 线段树中维护一个区间最左和最右的颜色,和答案 合并判断一下中间一段就可以了 比较考验代码能力 Code #include<bits/st ...

  9. PIE SDK矢量数据的投影转换

    1. 功能简介 目前在地理信息领域中数据包括矢量和栅格两种数据组织形式 ,每一种数据都可以对投影进行转换,目前PIE SDK支持矢量和栅格数据的投影转换功能,下面对矢量数据的投影转换功能进行介绍. 2 ...

  10. 转 .net数据类型

    .net 数据类型   short s=0; s = s + 1; 和short s=0; s += 1; 这两个表达式有什么区别,会报什么错误? 有区别吗??大家要想想呢还是要测试一下啊,我选择测试 ...