Sass之二(进阶篇)

源码链接:http://pan.baidu.com/s/1o8M51hC
1. 数据类型
1.1 Number
- 数字类型,小数类型,带有像素单位的数字类型,全部都属于Number类型
- Number类型详情请点击这里,下面是小例子
 
1.$n1: 1.2;
2.$n2: 12;
3.$n3: 14px;
4.$n4: 1em;
1.2 String
- 不加双引号的,加双引号的,加单引号的全部都属于String类型
- String类型详细内容请点击这里, 下面是小demo
 
1.$s1: container;
2.$s2: 'container';
3.$s3: "container";
1.3 List
- List类型的取值,语法nth(list, index),第一个参数表示要取谁的,也就是list类型的变量的名称,第二个表示索引,这里的索引和JavaScript略有不同,JavaScript索引基本上都是从零开始,而这里是从1开始的.
- List类型的方法的详情请点击这里, 下面是小demo
 
- List类型的取值,语法
1.$padding: 1px 5px 10px 15px;
2..container {
3.    padding: nth($padding,2) nth($padding,4);
4.}
5.
6.// out css
7..container { padding: 5px 15px; }
1.4 Map
- Map类型取值,语法map-get(map, key),第一个参数表示要取谁的,也就是map类型的变量的名称,第二个参数表示要取的key
- Map类型的方法的详情请点击这里, 下面是小demo
 
- Map类型取值,语法
1.$map: (color: red, outline: none !important; line-height: 1.6; color: rgb(174, 129, 255);">#f00);
2.
3.body {
4.    color: map-get($map, color);
5.}
6.
7.// out css
8.body { color: red; }
1.5 Color
1./*! 颜色类型*/
2.$c1: blue;
3.$c2: #fff;
4.$c3: rgba(255,255,0,0.5);
5.body {
6.    color: $c3;
7.}
8.
9.// out css
10.body { color: rgba(255, 255, 0, 0.5); }
1.6 Boolean
- 布尔类型分为两种true和false
- $bt: true;
- $bf: false;
 
- 布尔类型分为两种
1.7 Null
- null的应用场景如下
 
1.$null: null;
2.body {
3.    @if $null == null{
4.        color: red;
5.    }
6.}
7.
8.// out css
9.body { color: red; }
2. 变量的操作
2.1 ==, !=
- 支持所有的类型
 
2.2 <,>,<=,>=
- 只支持Number类型
 
2.3 +,-,*,/,%
- 进行计算的时候最好用空格进行隔开,例如减号如果不隔开,会把两个变量当成一个变量来处理.
- 下面是一些小例子
 
1.// scss 
2.$width1: 100px;
3.$width2: 125px;
4.span {
5.    width: $width1 + $width2;
6.}
7.
8.a:hover {
9.    cursor: e + -resize;
10.}
11.a::before {
12.    content: A + 'bc';
13.}
14.a::before {
15.    content: "A" + bc;
16.}
17.p {
18.    padding: 3px + 4px auto;
19.}
20.$version: 3;
21.p::before {
22.    content: "hello,Sass #{$version}"; /*! 这里如果加上大括号就会输出3,不加的话,会直接输出$version */
23.}
24.
25.p {
26.    font: (20px/10px);
27.    width: $width2 / 2;
28.    width: round($width2 / 2);
29.    height: (100px / 2); /*! 这里如果想让100px/2 起作用的话需要加上一个小括号,告诉Sass这是一个表达式,让它进行计算*/
30.}
31.
32.// out css
33.span { width: 225px; }
34.a:hover { cursor: e-resize; }
35.a::before { content: Abc; }
36.a::before { content: "Abc"; }
37.p { padding: 7px auto; }
38.p::before { content: "hello,Sass 3"; /*! 这里如果加上大括号就会输出3,不加的话,会直接输出$version */ }
39.p { font: 2; width: 62.5px; width: 63px; height: 50px; /*! 这里如果想让100px/2 起作用的话需要加上一个小括号,告诉Sass这是一个表达式,让它进行计算*/ }
40.
41.
3.Mixin
3.1简单实例
- 学过JavaScript的都对方法耳熟能详,那么Scss中的mixin就类似于JavaScript中的方法
 
1.// 没有参数的mixin
2.@mixin test1 {
3.    color: red;
4.}
5.
6.body {
7.    @include test1;
8.}
9.
10.// 一个参数
11.@mixin test2($color: red) {
12.    color: $color;
13.}
14.body {
15.    @include test2(#fff);
16.}
17.
18.// 多个参数
19.@mixin test3($color: red, $fontSize: 12px) {
20.    color: $color;
21.    font-size: $fontSize;
22.}
23.
24.body {
25.    // 直接传值, 不可以打乱顺序
26.    // @include test(blue, 18px);
27.
28.    // 通过键值对的方式,可以打乱传值的顺序
29.    @include test3($fontSize: 18px, $color: blue);
30.}
31.
32.// out css
33./* line 6, test1 */
34.body { color: red; }
35.
36./* line 14, test2*/
37.body { color: #fff; }
38.
39./* line 24, test3*/
40.body { color: blue; font-size: 18px; }
3.2 传递多值参数
- 传递多值参数的时候,需要在参数后面加上三个点...表示这个参数可能含有多条属性,告诉sass不要区分逗号了,把传递的参数当做一个参数来解析.
 
- 传递多值参数的时候,需要在参数后面加上三个点
1.// scss
2.// 多值传递
3.@mixin test4($shadow...) {
4.    text-shadow: $shadow;
5.    -webkit-text-shadow: $shadow;
6.    -moz-text-shadow: $shadow;
7.}
8..text {
9.    @include test4(1px 1px 10px red, 0 0 5px blue);
10.}
11.
12.// out css
13..text { text-shadow: 1px 1px 10px red, 0 0 5px blue; -webkit-text-shadow: 1px 1px 10px red, 0 0 5px blue; -moz-text-shadow: 1px 1px 10px red, 0 0 5px blue; }
3.3 传递内容
- 传递内容就好比在方法中弄了个占位符, 当你调用的时候,所写的内容会直接放在占位符那里;
- `@content`用在`mixin`里面的,当定义一个`mixin`后,并且设置了`@content`;
 `@include`的时候可以传入相应的内容到`mixin`里面
 
1.// scss
2.@mixin style-for-iphone {
3.    @media only screen and (min-width:320px) and (max-width:568px){
4.       @content;
5.    }
6.}
7.@include style-for-iphone {
8.    height: 100px;
9.    font-size: 12px;
10.}
11.
12.// out  css
13.@media only screen and (min-width: 320px) and (max-width: 568px) { height: 100px; font-size: 12px; }
4. 函数
4.1 内置函数
- 内置函数是系统给我们定义好了的一些函数,详情请点击这里
 
4.2 自定义函数
- 提到函数我们不有自主的想到JavaScript中的函数,Sass需要在function和return前面加一个@符号,例如:
 
- 提到函数我们不有自主的想到JavaScript中的函数,Sass需要在
1.// scss
2.@function double($width){
3.    @return $width * 2;
4.}
5.
6.body {
7.    $color: rgba(255,0,0, .3);
8.    color: $color;
9.    width: 100%;
10.    height: 100%;
11.    p {
12.        // 内置函数
13.        color: darken($color, 0.5); // 加深
14.        background-color: lighten($color, 0.9);// 变浅
15.        z-index: str-length('aaaa'); // 字符串的长度
16.        z-index: str-index('aaabddd','b');// 指定字符的索引的位置
17.        width: double(5px);
18.    }
19.}
20.
21.// out css
22.body { color: rgba(255, 0, 0, 0.3); width: 100%; height: 100%; }
23.body p { color: rgba(252, 0, 0, 0.3); background-color: rgba(255, 5, 5, 0.3); z-index: 4; z-index: 4; width: 10px; }
5. 编译输出
5.1 debug
- @debug "这里的内容会在控制台输出"
 
5.2 warn
- @warn "这里的内容会在控制台输出"
 
5.3 error
6. 条件语句及循环语句
6.1 条件语句
- if的几种用法,如下
 
1.// scss
2./*!if 的用法*/
3.$width: 800;
4.body {
5.    // 跟三目运算符类似 if(条件,true, false)
6.    color: if($width > 800, blue, red);
7.}
8.@if $width > 800 {
9.    body {
10.        color: red;
11.    }
12.} 
13.@else if $width == 800 {
14.    p {
15.        color: blue;
16.    }
17.}
18.@else {
19.    body{ 
20.        color: blue;
21.    }
22.}
23.
24./// out css
25.body { color: red; }
26.p { color: blue; }
6.2 循环语句
- 语法1for $i from 1 to 10- 此语句表示从1 到10,但是不包括10
 
- 语法2for $i from 1 through 10
 下面代码是through的用法,to的用法在这里就不演示了- 此语句表示从1到10,包括10
 
 
- 语法1
1.// scss
2.@for $i from 1 through 5 {
3.    .span#{$i} {
4.        width: 20% * $i; 
5.    }
6.}
7.
8.// out css
9..span1 { width: 20%; }
10..span2 { width: 40%; }
11..span3 { width: 60%; }
12..span4 { width: 80%; }
13..span5 { width: 100%; }
6.3 while
- 使用while 需要注意一下几点,
- 第一: 变量要提前声明
- 第二: while里面可以设置步长
 
 
- 使用while 需要注意一下几点,
1.// scss
2.$j: 6;
3.@while $j > 0 {
4.    .p#{$j} {
5.        width: 20% * $j;
6.    }
7.    $j: $j - 3;//设置步长
8.}
9.
10.// out css
11..p6 { width: 120%; }
12..p3 { width: 60%; }
7. each
7.1 常规遍历
1.// each 普通的用法
2.$k: 1;
3.$color: red, green, blue;
4.@each $c in $color {
5.    .div#{$k} {
6.        color: $c;
7.    }
8.    $k: $k + 1;
9.}
10.
11.// out css
12.
13..div1 { color: red; }
14..div2 { color: green; }
15..div3 { color: blue; }
16.
7.2 遍历list
- 这里出现的方式是以一个键一个值的形式出现的,如果是数据的变量,那么可以在外边顶一个索引,内部执行加1 操作,也可以得到相应的效果.
- $key表示键值,- $color表示值
 
1.@each $key, $color in (default, green), (dange,blue), (error, red) {
2.    .aler-#{$key} {
3.        color: $color;
4.    }
5.}
6.
7.// out css
8..aler-default { color: green; }
9..aler-dange { color: blue; }
10..aler-error { color: red; }
7.3 遍历map
- 遍历map $key表示键值,$val表示值
 
- 遍历map 
1.//scss
2.@each $key, $val in (default: green, dange: blue, error: red) {
3.    .alert-#{key} {
4.        color: $val;
5.    }
6.}
7.
8.// out css
9..alert-key { color: green; }
10..alert-key { color: blue; }
11..alert-key { color: red; }
12.
8. 小实例
- 这里写了个小实例, 有兴趣的朋友可以看看,其实我也是抄的别人的实例,等会去写个小项目
 
1.// scss
2.@function buildContainer($num: 5) {
3.    $map: (defaultValue: 0);
4.    $rate: percentage(1 / $num); // percentage 求出百分比
5.    @for $i from 1 through 5 {
6.        $tempMap: (col#{$i} : $rate * $i);
7.        $map: map-merge($map, $tempMap);
8.    }
9.    $map: map-remove($map, defaultValue);
10.
11.    @return $map;
12.
13.}
14.@mixin buildContainer($num: 5) {
15.    $map: buildContainer($num);
16.    @each $key, $val in $map {
17.        .#{$key} {
18.            width: $val;
19.        }
20.    }
21.}
22.
23.@include buildContainer();
24.
25.// out css
26..col1 { width: 20%; }
27..col2 { width: 40%; }
28..col3 { width: 60%; }
29..col4 { width: 80%; }
30..col5 { width: 100%; }原文链接:http://www.cnblogs.com/songyaqi/p/5196919.html (有修改)
Sass之二(进阶篇)的更多相关文章
- Sass进阶之路,之二(进阶篇)
		Sass之二(进阶篇) 1. 数据类型 1.1 Number 数字类型,小数类型,带有像素单位的数字类型,全部都属于Number类型 Number类型详情请点击这里,下面是小例子 1.$n1: 1.2 ... 
- Dagger2 (二) 进阶篇
		一.作用域Scope 之前了解RoboGuice的时候,我们知道它默认给我们提供了几个注解,ContextSingleton和Singleton,但是Dagger2更为灵活,只有javax包中提供的S ... 
- CocoaPods详解之(二)----进阶篇
		CocoaPods详解之----进阶篇 作者:wangzz 原文地址:http://blog.csdn.net/wzzvictory/article/details/19178709 转载请注明出处 ... 
- WPF 4 DataGrid 控件(进阶篇二)
		原文:WPF 4 DataGrid 控件(进阶篇二) 上一篇<WPF 4 DataGrid 控件(进阶篇一)>中我们通过DataGridTemplateColumn 类自定义编辑 ... 
- css预编译--sass进阶篇
		基础篇中主要介绍了一些sass的基本特性,进阶篇中,主要是写一些我们常用的sass控制命令,函数和规则. 控制命令 可能看过基础篇的朋友会发现在有些代码中出现@if @else @each等,熟悉JS ... 
- Sass-学习笔记【进阶篇】
		特别说明: 没有sass基础请移步:[Sass-学习笔记[基础篇]]http://www.cnblogs.com/padding1015/articles/7056323.html 最底部附结构图(实 ... 
- idea 插件的使用 进阶篇
		CSDN 2016博客之星评选结果公布 [系列直播]零基础学习微信小程序! "我的2016"主题征文活动 博客的神秘功能 idea 插件的使用 进阶篇(个人收集 ... 
- 2. web前端开发分享-css,js进阶篇
		一,css进阶篇: 等css哪些事儿看了两三遍之后,需要对看过的知识综合应用,这时候需要大量的实践经验, 简单的想法:把qq首页全屏另存为jpg然后通过ps工具切图结合css转换成html,有无从下手 ... 
- windows系统快捷操作の进阶篇
		上次介绍了windows系统上一些自带的常用快捷键,有些确实很方便,也满足了我们的一部分需求.但是我们追求效率的步伐怎会止步于此?这一次我将会进一步介绍windows上提升效率的方法. 一:运行 打开 ... 
随机推荐
- 【BLE】CC2541之主机端读取特征值
			本篇博文最后改动时间:2017年01月06日,11:06. 一.简单介绍 本文介绍怎样在SimpleBLECentralproject中,读取SimpleBLEPeripheralproject中的特 ... 
- ECN
			ECN是工程变更管理,主要用来管理BOM的生效日期,及记录BOM的更改内容:在SAP系统中,需先创建ECN更改号码,凭ECN号码去更改管理BOM 
- Away3D引擎学习笔记(三)模型拾取(翻译)
			原文详见http://away3d.com/tutorials/Introduction_to_Mouse_Picking.本文若有翻译不对的地方,敬请指出. 本教程详细介绍了Away3D 4.x中鼠 ... 
- love2d--glsl03噪声
			由于一些glsl的教程都是3d的,而love是2d的,所以之后以示例为主,我会收集 一些love的shader,分类讲解. 此文简译自love2d社区博客,这里略去作者的自我介绍. 像素着色器入门 示 ... 
- Psql 安装问题
			在openerp安装过程中报错: psql: could not connect to server: No such file or directory Is the server running ... 
- [基础]关于extern指针和数组的用法
			之前有在外面面试,遇到一题如下: filea.c char *p = "abcdefg"; fileb.c extern char p[]; printf(]); result=? ... 
- SQL简明教程系列15 创建索引
			CREATE INDEX用于在表中创建索引. 索引使数据库应用程序可以更快地查找数据. 注:更新一个包含索引的表比更新一个没有索引的表更多的时间,这是由于索引本身也需要更新.因此,理想的做法是仅仅在常 ... 
- Insubstantial 6.2 Release
			http://shemnon.com/speling/2011/04/insubstantial-62-release.html 
- 2015 Multi-University Training Contest 3 1001 Magician
			Magician Problem's Link: http://acm.hdu.edu.cn/showproblem.php?pid=5316 Mean: n个数,2种操作,1是单点更新,2是询问区间 ... 
- 利用CSS生成精美细线Table表格
			精美的表格是前端开发用到的一个组件,很多时候我们利用复杂的页面style代码,来生成这样的表格,造成了页面的修改性和可读性都非常差.这里推荐直接使用css来产生一个细线表格. 使用方法也很简单: 第一 ... 
