#app{
color:while;
.content{
color:red;
}
}
#app{
color:while;
&.chird{
background:#f0f0f0;
}
}
#app{
color:while;
&.chird{
font:{
family:test;
size:30px;
weight:bold;
}
}
}
/*
多行注释
*/
//单行注释
$var : 16px;
.fontSize {
font-size: $var;
}
abs():返回一个数值的绝对值
ceil():向上取整
floor():向下取整
comparable():返回一个布尔值,判断两个参数是否可以比较
max():返回最大值
min():返回最小值
percentage():将数字转化为百分比的表达形式
random():返回 0-1 区间内的小数
round():返回最接近该数的一个整数,四舍五入
quote(string):给字符串添加引号
unquote(string):移除字符串的引号
str-index(string, substring):返回 substring 子字符串第一次在 string 中出现的位置。如果没有匹配到子字符串,则返回 null。
str-insert(string, insert, index):在字符串 string 中 index 位置插入 insert
str-length(string):返回字符串的长度。
str-slice(string, start, end):从 string 中截取子字符串,通过 start-at 和 end-at 设置始末位置,未指定结束索引值则默认截取到字符串末尾
to-lower-case(string):将字符串转成小写
to-upper-case(string):将字符串转成大写
unique-id():返回一个无引号的随机字符串作为 id。不过也只能保证在单次的 Sass 编译中确保这个 id 的唯一性。
rgb($red, $green, $blue):创建一个rgb色
rgba($red, $green, $blue, $alpha):创建一个rgba色
hsl(hue, saturation, lightness): 通过色相(hue)、饱和度(saturation)和亮度(lightness)的值创建一个颜色。
hsla(hue, saturation, lightness, alpha):通过色相(hue)、饱和度(saturation)、亮度(lightness)和透明(alpha)的值创建一个颜色。
grayscale(color):将一个颜色变成灰色,desaturate( color,100%)
complement(color):返回一个补充色,adjust-hue($color,180deg)
invert(color, weight):返回一个反相色,红、绿、蓝色值倒过来,而透明度不变
red($color):从一个颜色中获取其中红色值(0-255)
green($color):从一个颜色中获取其中绿色值(0-255)
blue($color):从一个颜色中获取其中蓝色值(0-255)
hue(color):返回颜色在 HSL 色值中的角度值 (0deg - 255deg)
saturation(color):获取一个颜色的饱和度值(0% - 100%)
lightness(color):获取一个颜色的亮度值(0% - 100%)
alpha(color):获取一个颜色是否是透明
opacity(color):获取颜色透明度值(0-1)
mix($color1, $color2, [$weight]):把两种颜色混合起来。 weight 参数必须是 0% 到 100%。默认 weight 为 50%,表明新颜色各取 50% color1 和 color2 的色值相加。如果 weight 为 25%,那表明新颜色为 25% color1 和 75% color2 的色值相加。
adjust-hue(color, degrees):通过改变一个颜色的色相值(-360deg - 360deg),创建一个新的颜色。
adjust-color(color, red, green, blue, hue, saturation, lightness, alpha):这个函数能够调整给定色彩的一个或多个属性值,包括 RGB 和 HSL 色彩的各项色值参数,另外还有 alpha 通道的取值。这些属性值的调整依赖传入的关键值参数,通过这些参数再与给定颜色相应的色彩值做加减运算。
change-color(color, red, green, blue, hue, saturation, lightness, alpha):跟上面 adjust-color 类似,只是在该函数中传入的参数将直接替换原来的值,而不做任何的运算。
scale-color(color, red, green, blue, saturation, lightness, alpha):另一种实用的颜色调节函数。adjust-color 通过传入的参数简单的与本身的色值参数做加减,有时候可能会导致累加值溢出,当然,函数会把结果控制在有效的阈值内。而 scale-color 函数则避免了这种情况,可以不必担心溢出,让参数在阈值范围内进行有效的调节。
rgba(color, alpha):根据红、绿、蓝和透明度值创建一个颜色。
lighten(color, amount):通过改变颜色的亮度值(0% - 100%),让颜色变亮,创建一个新的颜色。
darken(color, amount):通过改变颜色的亮度值(0% - 100%),让颜色变暗,创建一个新的颜色。
saturate(color, amount):提高传入颜色的色彩饱和度。等同于 adjust-color( color, saturation: amount)
desaturate(color, amount):调低一个颜色的饱和度后产生一个新的色值。同样,饱和度的取值区间在 0% ~ 100%。等同于 adjust-color(color, saturation: -amount)
opacify(color, amount):降低颜色的透明度,取值在 0-1 之。等价于 adjust-color(color, alpha: amount)
fade-in(color, amount):降低颜色的透明度,取值在 0-1 之。等价于 adjust-color(color, alpha: amount)
transparentize(color, amount):提升颜色的透明度,取值在 0-1 之间。等价于 adjust-color(color, alpha: -amount)
fade-out(color, amount):提升颜色的透明度,取值在 0-1 之间。等价于 adjust-color(color, alpha: -amount)
$list: #fff 42 "awesome";
$list: #fff,42,"awesome";
$list:(#b4d455,42,"awesome");
$list: ( ("item-1.1", "item-1.2", "item-1.3"), ("item-2.1", "item-2.2", "item-2.3"), ("item-3.1", "item-3.2", "item-3.3"));
$list: "item-1.1" "item-1.2" "item-1.3","item-2.1" "item-2.2" "item-2.3", "item-3.1" "item-3.2" "item-3.3";
length($list):返回$list长度(如果不是list,返回1)
nth($list,$index):返回$list中第$index列表项值(如果索引值不在列表范围内,将会报错)
index($list,$value):返回$value在$list中的位置
append($list,$value[,$separator]):使用$separator分隔符将$value列表项添加到$list最后(如果没有显式指定$separator分隔符,会以当前分隔符分隔)
join($list-1,$list-2[,$separator]):使用$separator分隔符将$list-2附加到$list-1(如果没有显式指定分隔符,将对$list-1中的分隔符)
zip(*$lists):将多个$list组合在一起成为一个多维列表。如果列表源长度并不是所有都相同,结果列表长度将以最短的一个为准
reject($list,$value):这是Compass中的一个函数,将$value值从$list中删除
compact(*$args):Compass函数,返回一个删除非真值的新列表
list-separator($list):返回 $list 中的分隔符。
map-get($map,$key):根据给定的 key 值,返回 map 中相关的值。
map-merge($map1,$map2):将两个 map 合并成一个新的 map。
map-remove($map,$key):从 map 中删除一个 key,返回一个新 map。
map-keys($map):返回 map 中所有的 key。
map-values($map):返回 map 中所有的 value。
map-has-key($map,$key):根据给定的 key 值判断 map 是否有对应的 value 值,如果有返回 true,否则返回 false。
keywords($args):返回一个函数的参数,这个参数可以动态的设置 key 和 value。
$number : 12px;
p{
width: $number * 2 ;
}
p{
width: $number / 2 ;
}
p{
width: calc($number / 2);
}
.color1{
color: #010120 + #234234;
}
.color2{
color: #010120 * 2;
}
.color3{
color: rgba(250, 0, 0, 0.75) + rgba(5, 255, 0, 0.75);
}
.string1:before{
font-family: icon + font ;
content: "带引号字符串" + 不带引号字符串;
}
.string2:before{
font-family: icon + font ;
content: 不带引号字符串 + "带引号字符串";
}
.bool1:before{
content: $bool and false;
}
.bool2:before{
content: $bool or false;
}
.bool3:before{
content: not $bool;
}
p{
width:12px * (4 - 2);
}
unit($number):返回 $number 所使用的单位。
unitless($number):返回 $number 是否带有单位;如果不带单位返回值为 true,带单位返回值为 false。
type-of($list)://检测类型
$width : 400;
$multiple: 2;
@function app_width($width,$multiple){
@return $width * $multiple px;
}
#app{
width: app_width($width,$multiple);
}
p{
$num : 3;
@if $num == 1 {
color:red;
}
@else if $num == 2 {
background:red;
}
@else{
border:red;
}
}
if($condition, $if-true, $if-false) 三元运算符
//从开始循环,到结束
@for $var from through
//循环从开始,一直遍历循环到结束。这种形式的循环只要碰到就会停止循环
@for $var from to
@for $i from 1 through 3 {
.item-#{$i} {
width: 2em * $i;
}
}
$list : ['one','two','there','four'];
@each $i in $list {
.item-#{$i}:before {
content: $i;
}
}
$i : 4;
@while $i>0 {
.while_#{$i}{
width: 1em * $i;
$i: $i - 1;
}
}
通过 #{} 插值语句可以在选择器、属性名或属性值中使用变量
$selectName:'.foo';
$attrName:'width';
$content: "content内容";
#{$selectName}:before {
#{$attrName}:12px;
content: "#{$content}";
}
!default 给一个未通过 !default 声明赋值的变量赋值,此时,如果变量已经被赋值,不会再被重新赋值,但是如果变量还没有被赋值,则会被赋予新的值。
// !default
$content1:'初始赋值';
$content1: "!default 赋值" !default;
.content_value1:before{
content: $content1;
}
$content2:null;//null 将会被视为未赋值,从而!default为其赋值
$content2: "!default 赋值" !default;
.content_value2:before{
content: $content2;
}
//编译结果
.content_value1:before {
content: "初始赋值";
}
.content_value2:before {
content: "!default 赋值";
}
//@import 语法
@import "test2.scss";
// 导入多文件
@import "test2.scss", "test3.scss";
//导入文件也可以使用 #{ } 插值语句,但不是通过变量动态导入 Sass 文件,只能作用于 CSS 的 url() 导入方式:
$family: unquote("Droid+Sans");
@import url("http://fonts.googleapis.com/css?family=\#{$family}");
//如果需要导入 SCSS 或者 Sass 文件,但又不希望将其编译为 CSS,只需要在文件名前添加下划线,这样会告诉 Sass 不要编译这些文件,但导入语句中却不需要添加下划线。例如,将文件命名为 _colors.scss,便不会编译 _colours.css 文件。
@import "colors";
// 嵌套导入
#main {
@import "test2.scss";
}
.sidebar {
width: 300px;
@media screen and (orientation: landscape) {
width: 500px;
}
}
@media screen {
.sidebar {
@media (orientation: landscape) {
width: 500px;
}
}
}
.item{
width:100%;
background:#ffffff;
line-height:40px;
}
.light_item{
//继承上面.item的样式
@extend .item;
//其他样式
background:#f0f0f0;
}
// %占位符
#content a%extreme {//%占位符选择器将不会被编译,只接受 extend
color:bule;
font-size:16px;
}
.notice{
@extend %extreme;
}
//声明
@mixin big_text{
font:{
size:22px;
weight:bold;
}
&:hover{
color:red
}
}
//引用
@include big_text;
.block{
@include big_text;
}
//带参数
@mixin big_text2($size:20px,$weight){
font:{
size:$size;
weight:$weight;
}
color:#555;
}
.p_big_text2{
@include big_text2($size:24px,bold)
}
//不定长参数
@mixin big_text4($font...){
font: $font;
color:#555;
}
.p_big_text4{
@include big_text4(20px 400)
}
//向混合样式中导入内容
@mixin apply(){
#app{
color:red;
@content;
}
}
#page{
@include apply{
.container{
width:100%;
}
}
}
@debug 10em + 12em;
@mixin adjust-location($x, $y) {
@if unitless($x) {
@warn "Assuming #{$x} to be in pixels";
$x: 1px * $x;
}
@if unitless($y) {
@warn "Assuming #{$y} to be in pixels";
$y: 1px * $y;
}
position: relative;
left: $x;
top: $y;
}
@mixin adjust-location($x, $y) {
@if unitless($x) {
@error "$x may not be unitless, was #{$x}.";
}
@if unitless($y) {
@error "$y may not be unitless, was #{$y}.";
}
position: relative;
left: $x;
top: $y;
}
// at-root 指令
.parent:before{
content:"parent 内容";
@at-root .chird:before{
content:"chird 内容";
}
}
//编译后
.parent:before {
content: "parent 内容";
}
.chird:before {
content: "chird 内容";
}
@media print {
.page {
width: 8in;
@at-root (without: media) {
color: red;
}
}
}
//编译后
@media print {
.page {
width: 8in;
}
}
.page {
color: red;
}
:export {
colorPrimary: map_get($ant_them,'colorPrimary');
borderRadius: map_get($ant_them,'borderRadius')
}
说明:变量支持块级作用域,嵌套规则内定义的变量只能在嵌套规则内使用(局部变量),不在嵌套规则内定义的变量则可在任何地方使用(全局变量)。将局部变量转换为全局变量可以添加 !global 声明