声明变量 用符号 $
=============================
输出方式
嵌套输出方式 nested
展开输出方式 expanded
紧凑输出方式 compact
压缩输出方式 compressed
=============================
符号 & 代表父级元素名
=============================
混合声明使用 @mixin
调用混合声明 @include
【无参数】
编译前:
@mixin border-radius{
-webkit-border-radius: 10px;
border-radius: 10px;
}
button {
@include border-radius;
}
编译后:
button {
-webkit-border-radius: 10px;
border-radius: 10px;
}
—————————————————
【有参数,多参数】
编译前:
@mixin opacity($opacity:50,$padding:10px) {
opacity: $opacity / 100;
filter: alpha(opacity=$opacity);
padding:$padding;
}
.opacity{
@include opacity; //参数使用默认值
}
编译后:
.opacity{
opacity: 50 / 100;
filter: alpha(opacity=50);
padding:10px;
}
—————————————————
可以随机给混合宏传值,如:
@mixin opacity($opacity:50) {
opacity: $opacity / 100;
filter: alpha(opacity=$opacity);
}
.opacity-80{
@include opacity(80); //传递参数
}
编译出来的 CSS:
.opacity-80{
opacity: 80 / 100;
filter: alpha(opacity=80);
}
=============================
box-shadow可以有多组值,所以在变量参数后面添加“…”。
@mixin box-shadow($shadow...) {
-webkit-box-shadow:$shadow;
box-shadow:$shadow;
}
在实际调用中:
.box{
border:1px solid #ccc;
@include box-shadow(0 2px 2px rgba(0,0,0,.3),0 3px 3px rgba(0,0,0,.3),0 4px 4px rgba(0,0,0,.3));
}
编译出来的CSS:
.box{
border:1px solid #ccc;
-webkit-box-shadow:0 2px 2px rgba(0,0,0,.3),0 3px 3px rgba(0,0,0,.3),0 4px 4px rgba(0,0,0,.3);
box-shadow:0 2px 2px rgba(0,0,0,.3),0 3px 3px rgba(0,0,0,.3),0 4px 4px rgba(0,0,0,.3);
}
=============================
继承@extend
//通过选择器继承继承样式
.error {
border: 1px red;
background-color: #fdd;
}
.seriousError {
@extend .error;
border-width: 3px;
}
//被编译为:
.error, .seriousError {
border: 1px red;
background-color: #fdd; }
.seriousError {
border-width: 3px; }
=============================
选择器占位符%
//编译前的CSS
%mar {
margin: 5px;
}
%pad{
padding: 5px;
}
.btn {
@extend %mar;
@extend %pad;
}
.block {
@extend %mar;
span {
@extend %pad;
}
}
编译出来的CSS:
.btn, .block {
margin-top: 5px;
}
.btn, .block span {
padding-top: 5px;
}
从编译出来的 CSS 代码可以看出,通过 @extend 调用的占位符,编译出来的代码会将相同的代码合并在一起。
=============================
SassScript 支持六种主要的数据类型:
数字(例如 1.2、13、10px)
文本字符串,无论是否有引号(例如 "foo"、‘bar‘、baz)
颜色(例如 blue、#04a3f9、rgba(255, 0, 0, 0.5))
布尔值(例如 true、false)
空值(例如 null)
值列表,用空格或逗号分隔(例如 1.5em 1em 0 2em、Helvetica, Arial, sans-serif)
=============================
编译 CSS 文件时不会改变其类型。只有一种情况例外,使用 #{ }插值语句 (interpolation) 时,有引号字符串将被编译为无引号字符串,这样方便了在混合指令 (mixin) 中引用选择器名。
@mixin firefox-message($selector) {
body.firefox #{$selector}:before {
content: "Hi, hubwiz users!";
}
}
@include firefox-message(".header");
被编译为:
body.firefox .header:before {
content: "Hi, hubwiz users!"; }
注意:当 deprecated = property syntax 时,所有的字符串都将被编译为无引号字符串,不论是否使用了引号。
=============================
除法运算
p {
font: 10px/8px; // 纯 CSS,不是除法运算
$width: 1000px;
width: $width/2; // 使用了变量,是除法运算
width: round(1.5)/2; // 使用了函数,是除法运算
height: (500px/2); // 使用了圆括号,是除法运算
margin-left: 5px + 8px/2px; // 使用了加(+)号,是除法运算
}
被编译为:
p {
font: 10px/8px;
width: 500px;
height: 250px;
margin-left: 9px; }
———————————————
如果你希望在纯 CSS 中使用变量和 /, 你可以用 #{} 包住变量。
p {
$font-size: 12px;
$line-height: 30px;
font: #{$font-size}/#{$line-height};
}
被编译为:
p {
font: 12px/30px; }
=============================
颜色运算
所有算数运算都支持颜色值, 并且是分段运算的。 也就是说,红、绿、蓝各颜色分量会单独进行运算。 例如:
p {
color: #010203 + #040506;
}
计算公式为 01 + 04 = 05、02 + 05 = 07 和 03 + 06 = 09, 并且被合成为:
p {
color: #050709; }
——————————————————
一般 {Sass::Script::Functions color functions} 比颜色运算更有用,并且能达到相同的效果。
算数运算也能将数字和颜色值一起运算,同样也是分段运算的。 例如:
p {
color: #010203 * 2;
}
计算公式为 01 * 2 = 02、02 * 2 = 04 和 03 * 2 = 06, 并且被合成为:
p {
color: #020406; }
=============================
三目运算符的语法为:
@if($condition, $condition_true, $condition_false),
三个参数分别表示:条件,条件为真的值,条件为假的值。
例如:
$fontBold: true;
p {
font-weight: if($fontBold, bold, normal);
}
编译生成:
p {
font-weight: bold;}
=============================
在 Sass 中,可以使用 @for 循环来完成。在 Sass 的 @for 循环中有两种方式:
@for $i from through
@for $i from to
$i 表示变量 start 表示起始值 end 表示结束值
这两个的区别是关键字 through 表示包括 end 这个数,而 to 则不包括 end 这个数
=============================
@each 循环就是去遍历一个列表,然后从列表中取出对应的值。
@each 循环指令的形式: @each $var in < list >
=============================
@while 指令也需要 SassScript 表达式(像其他指令一样),并且会生成不同的样式块,直到表达式值为 false 时停止循环。这个和 @for 指令很相似,只要 @while 后面的条件为 true 就会执行。
这里有一个 @while 指令的简单用例:
//SCSS
$i: 6;
@while $i > 0 {
.item-#{$i} { width: 2em * $i; }
$i: $i - 2;
}
被编译为:
.item-6 {
width: 12em; }
.item-4 {
width: 8em; }
.item-2 {
width: 4em; }
原文:http://www.cnblogs.com/raines/p/5154177.html