SASS常用语法

原文地址:这里

@charset "UTF-8";

/**
 * 自定义变量
 */
$blue: #1875e7;
div {
	color: $blue;
}

/**
 * 变量要嵌在字符串中间
 */
$side: left;
.rounded{
	border-#{$side}-radius: 5px;
}

/**
 * 计算
 */
$unit: .05rem;

.box{
	height: $unit / 2;
	 10 * $unit;
}

/**
 * 标签嵌套
 */
.parent{
	background: #fff;
	.child{
		font-size: 12px;
	}
}

/**
 * 属性嵌套
 */
p{
	border: {
		color: red;
		 1px;
	}
}

/**
 * 伪类
 */
a{
	&:hover {
		color: red;
	}
}

/**
 * 注释
 *
 * // 单行注释编译后删除
 * ** 多行注释编译后保留
 */

/**
 * 继承
 */
.class1{
	border: 1px solid #ddd;
}
.class2{
	@extend .class1;
	font-size: 12px;
}
.class3{
	@extend .class1;
	border-color: red;
}

/**
 * mixin 复用代码块
 * 如果不需要传参数,可以不带括号
 */
@mixin left{
	float: left;
	margin-left: 10px;
}
.someclass{
	@include left;
}

/**
 * mixin 可以指定参数和缺省值,就像函数了
 */
@mixin left($value: 10px){
	float: left;
	margin-left: $value;
}
.someclass2{
	@include left(20px);
}

/**
 * 颜色函数
 */
.color1{
	color: lighten(#cc3, 10%);
	/**
	 * 浅 10%
	 * #d6d65c
	 */
}
.color2{
	color: darken(#cc3, 10%);
	/**
	 * 深 10%
	 * #a3a329
	 */
}
.color3{
	color: grayscale(#cc3);
	/**
	 * 将颜色转化为灰度
	 * #808080
	 *
	 * 怎么计算的?
	 * (cc + 33) / 2 = 80
	 */
	background: grayscale(#c03);
	/**
	 * 这个算出来是 #666666
	 * 那就是。。
	 * (cc + 00) / 2 = 66
	 */
	border-color: grayscale(#c30);
	/**
	 * 那来看看这个,会有区别吗?
	 * #666666
	 */
	background-color: grayscale(#03c);
	/**
	 * #666666
	 * 好吧。。
	 *
	 * 查了文档,等同于 desaturate($color, 100%),将色彩饱和度调至0
	 * #cc3 	-> hsl(60, 60%, 50%);
	 * #c03 	-> hsl(345, 100%, 40%);
	 * #c30 	-> hsl(15, 100%, 40%);
	 * #03c 	-> hsl(225, 100%, 40%);
	 *
	 * H(色上) S(饱和度) L(明度)
	 * S 为 0 时,RGB 都为 L
	 * 256 * 50% = 128 		-> 80
	 * 256 * 40% = 102 		-> 66
	 */
}
.color4{
	color: complement(#cc3);
	/**
	 * 反象
	 * #33c
	 */
}

/**
 * 插入文件
 * 注:会插到本文件头部
 */
@import "reset.css";

/**
 * 再试一下,如果出现两个相同的选择器,会合并到一起吗?
 * 不会合并,定义几处,翻译后还是几处
 */
div{
	background: #fff;
}
.color4{
	background: #fff;
}

/**
 * 高级用法
 */

/**
 * 条件语句
 */
p {
	@if 1 + 1 == 2 { border: 1px solid; }
	@if 5 < 3 { border: 2px dotted; }
}
p {
	@if 1 + 1 == 2 {
		background-color: #000;
	} @else {
		background-color: #fff;
	}
}

/**
 * 循环语句
 */
@for $i from 1 to 10 {
	.border-#{$i} {
		border: #{$i}px solid blue;
	}
}

$i: 6;
@while $i > 0{
	.item-#{$i} {
		 2em * $i;
	}
	$i: $i - 2;
}

@each $member in a, b, c, d{
	.#{$member}{
		background-image: url("/images/#{$member}.jpg");
	}
}

/**
 * 自定义函数
 */
@function double($n){
	@return $n * 2;
}
#sidebar {
	 double(5px);
}

$unit: .05rem;
@function unit($value){
	@return $unit * $value;
}
#sidebar {
	 unit(720);
}

/**
 * 修改单位,只影响后面的 css
 */
$unit: 1px;
#sidebar {
	 unit(720);
}

  

原文地址:https://www.cnblogs.com/frostbelt/p/5391383.html