scss-数据类型
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-数据类型的更多相关文章
- sass基础篇
scss的语法非常简单: $color: red; div{ color: $color; } 这就是一个简单的scss代码. 但是,使用 Sass 进行开发,那么是不是直接通过“<link&g ...
- scss 学习笔记
由于没有办法在网络上找到适合顾客的模板,同时之前自己写css也没有很好的管理方式,最终选择了scss. Nested #main p { color: #00ff00; width: 97%; .re ...
- sass.scss简单入门
最近研究了一下sass和scss,清晰结构化,在某些地方的确强大,所以写了一篇入门教程,大概15分钟左右就能明白基本原理 什么是sass(css预处理器) Sass官网上是这样描述sass的,sass ...
- java基础数据类型包装类
*/ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...
- css预编译语言 sass scss(变量$var, css嵌套规则,@import规则,@extend,@mixin)
什么是sass Sass 是对 CSS 的扩展,让 CSS 语言更强大.优雅. 它允许你使用变量.嵌套规则. mixins.导入等众多功能, 并且完全兼容 CSS 语法. Sass 有助于保持大型样式 ...
- scss学习笔记
1.引用父选择符: & #main { color: black; a { font-weight: bold; &:hover { color: red; } } } 2.font: ...
- ES01 数据类型、正则表达式、身份证校验
1 基本数据类型 参见W3C的教程即可 2 正则表达式 参考博文:点击前往 3 身份证校验 参考博文:点击前往 <div class="panel panel-primary" ...
- sass05 数据类型,数据运算
/*! 数字类型 */ $n1: 1.2; $n2: 12; $n3: 14px; p{ font-size: $n3; } /*! 字符串类型*/ $s1: container; $s2: 'con ...
- scss 常用语法
点击查看 sass 官方文档 1.编译 初学可以在atom 中编译 安装命令 gem install sass atom中安装atom-sass ,mac 中"control+option+ ...
- Sass/Scss 基础篇
Sass/Scss 基础篇 总结Sass学习到的内容 应用Sass/Scss前,环境配置 首先下载Ruby (http://rubyinstaller.org/downloads) 通过命令下载sas ...
随机推荐
- django部署ubuntu数据库MYSQL时区问题
SELECT * FROM mysql.time_zone; SELECT * FROM mysql.time_zone_name; mysql_tzinfo_to_sql /usr/share/zo ...
- C# 委托的三种调用示例(同步调用、异步调用、异步回调)
首先,通过代码定义一个委托和下面三个示例将要调用的方法: 代码如下: public delegate int AddHandler(int a,int b); public class 加法类 { p ...
- CentOS7更换yum源为阿里云镜像源
1. 备份原来的yum源 cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak 2.设置aliyun的y ...
- REST模式中HTTP请求方法(GET,POST,PUT,DELETE)
一直在测试REST模式的WEB SERVICE接口,客户端的HTTP的请求方式一般分为四种:GET.POST.PUT.DELETE,这四种请求方式有什么不同呢.简单的说,GET就是获取资源,POST就 ...
- Python web前端 07 函数及作用域
Python web前端 07 函数及作用域 一.函数 1.有名函数和匿名函数 #函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块 #函数就是包裹在花括号里面的代码块,前面使用了关键字fun ...
- JavaScript 中this 初步理解笔记
Javascript中函数中的this通常指向的是函数的拥有者,这个拥有者就是上下文执行对象:另外一点需要注意,this只能在javascript函数内部使用.
- 洛谷 [TJOI2010]中位数
题目链接 题解 比较水.. 常见套路,维护两个堆 Code #include<bits/stdc++.h> #define LL long long #define RG register ...
- BZOJ 2935/ Poi 1999 原始生物
[bzoj2935][Poi1999]原始生物 2935: [Poi1999]原始生物 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 145 So ...
- pyquery的简单操作
一.初始化 1.html初始化 html = ''' <div> <ul> <li class="item-0">first item</ ...
- 中间件使用之(UA,IP,selenium)的使用
一.UA池:User-Agent池 - 作用:尽可能多的将scrapy工程中的请求伪装成不同类型的浏览器身份. - 操作流程: 1.在下载中间件中拦截请求 2.将拦截到的请求的请求头信息中的UA进行篡 ...