变量

定义变量使用 $ 开头, 赋值与 css 逻辑一样

$fontsize : 10px;
$width : 100%;
$height : $width * 2; /* 可以直接进行运算 */

运算

$fontsize : 10px;
$path : "/path/img/";
.box{
	$font-size: $font-size * 2;
	width: 100%;
	height: 200px;
	background: url('#{$path}/1.png') no-repeat;
}

嵌套 与 &

选择器的嵌套, 表示层级关系, & 表示当前层级

$width : 100%;
ul{
	margin : 0 auto;
	display : block;
	width: $width;
	li{
		display: inline-block;
		width: $width / 4; /* $width = 100%, $width / 4 = 25% */
	}

	a{
		display: inline-block;
		color: #666;
		/* & 表示当前对象 */
		&:hover{
			color: #000;
		}
	}
}

mixin 混合

mixin 定义一段代码集合, 且可以选择传参, 可以理解为 javascript 中的 function

/*
	定义一个边框的 mixin
	设置了三个参数
*/
@mixin border($width,$style,$color){
	border : $width $style $color;
}

.box{
	/* 使用 border 这个 mixin */
	@include border(1px solid #000);
}


@mixin radius($radius: 15px){
	border-radius: $radius;
}

.box{
	/* 使用 radius 这个 mixin */
	@include radius;   /* 有默认值可以不用传入参数 */
	@include radius(); /* 与上同等 */
	
}

extend 扩展 / 组合 / 继承

extend 可以将其它选择器的属性继承过来, 使其自身元素也可以使用

.wrap{
	width: 900px;
	margin: 10px auto;
}

.box{
	@extend .wrap; /* 使用 extend 扩展自身元素属性, 扩展的对象时一个选择器 */
}

占位符 %

占位符与上面的 extend 一样,区别在于使用 % 声明的选择器编译时不会出现在 css 文件中

%wrap{
	width: 900px;
	margin: 10px auto;
}

.box{
	@extend %wrap; /* 使用 extend 扩展自身元素属性, 扩展的对象时一个选择器 */
}

if else

$width : 100px;
.box{
	@if $width == 100px {
		width : 200px;
	} @else {
		width : 300px;
	}
}

map 对象

使用 map 可以对一些逻辑相同, 但是内容又有些小差别的不同 定义 map 使用 () 符号, 里面的内容与 js 中的 json 格式一样

$hs: (h1: 14px, h2: 20px, h3: 32px);
@each $name, $size in $hs {
  #{$name} {
    font-size: $size;
  }
}
h1{
	font-size: 14px;
}
h2{
	font-size: 20px;
}
h3{
	font-size: 32px;
}

Array

$list: h1, h2, h3, h4, h5, h6;
@each $item in list {
  #{$item} {
    font-size : 100%;
  }
}
h1{
	font-size : 100%;
}
h2{
	font-size : 100%;
}
h3{
	font-size : 100%;
}