特点
- 引入变量
- $ 用来标识变量
1.声明变量
$highlight-color: #F90;
- 任何可以用作css属性值的赋值都 可以用作sass的变量值,甚至是以空格分割的多个属性值,如$basic-border: 1px solid black;,或以逗号分割的多个属性值,如$plain-font: “Myriad Pro”、Myriad、”Helvetica Neue”、Helvetica、”Liberation Sans”、Arial和sans-serif; sans-serif
- 变量可以在css规则块定义之外存在。当变量定义在css规则块内,那么该变量只能在此规则块内使用
- 凡是css属性的标准值(比如说1px或者bold)可存在的地方,变量就可以使用
$highlight-color: #F90;
.selected {
border: 1px solid $highlight-color;
}
- 在声明变量时,变量值也可以引用其他变量
$highlight-color: #F90;
$highlight-border: 1px solid $highlight-color;
.selected {
border: $highlight-border;
}
- 在sass的大 多数地方,中划线命名的内容和下划线命名的内容是互通的,除了变量,也包括对混合器和Sass函数的命名。但是在sass中纯css部分不互通,比如类名、ID或属性名。
$link-color: blue;
a {
color: $link_color;
}
//在上例中,$link-color和$link_color其实指向的是同一个变量
2.嵌套规则
- 父选择器 &
- 群组选择器嵌套
- 同层组合器
- 同层相邻组合选择器+
- 同层全体组合选择器~
- 嵌套属性
nav {
border: {
style: solid;
width: 1px;
color: #ccc;
}
}
nav {
border-style: solid;
border-width: 1px;
border-color: #ccc;
}
nav {
border: 1px solid #ccc {
left: 0px;
right: 0px;
}
}
nav {
border: 1px solid #ccc;
border-left: 0px;
border-right: 0px;
}
3.导入
@import规则,它允许在一个css文件中导入其他css文件。然而,后果是只有执行到@import时,浏览器才会去下载其他css文件,这导致页面加载起来特别慢
sass也有一个@import规则,但不同的是,sass的@import规则在生成css文件时就把相关文件导入进来。这意味着所有相关的样式被归纳到了同一个css文件中,而无需发起额外的下载请求。另外,所有在被导入文件中定义的变量和混合器(参见2.5节)均可在导入文件中使用
- 使用sass的@import规则并不需要指明被导入文件的全名。你可以省略.sass或.scss文件后缀
- sass局部文件的文件名以下划线开头。这样,sass就不会在编译时单独编译这个文件输出css,而只把这个文件用作导入。当你@import一个局部文件时,还可以不写文件的全名,即省略文件名开头的下划线
- 默认值 !default
- 导入嵌套
//_blue-theme.scss的局部文件
aside {
background: blue;
color: white;
}
---------------------------
导入
.blue-theme {@import "blue-theme"}
//生成的结果跟你直接在.blue-theme选择器内写_blue-theme.scss文件的内容完全一样。
.blue-theme {
aside {
background: blue;
color: #fff;
}
}
- 静默注释 //
4.混合器@mixin
```css @mixin rounded-corners { -moz-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; }
notice { background-color: green; border: 2px solid #00aa00; @include rounded-corners;
}
.notice { background-color: green; border: 2px solid #00aa00; -moz-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; }
- 混合器传值
```css
@mixin link-colors($normal, $hover, $visited) {
color: $normal;
&:hover { color: $hover; }
&:visited { color: $visited; }
}
a {
@include link-colors(blue, red, green);
}
//或者
a {
@include link-colors(
$normal: blue,
$visited: green,
$hover: red
);
}
- 默认参数值
@mixin link-colors(
$normal,
$hover: $normal,
$visited: $normal
)
{
color: $normal;
&:hover { color: $hover; }
&:visited { color: $visited; }
}
6.精简
- @extend
//通过选择器继承继承样式
.error {
border: 1px solid red;
background-color: #fdd;
}
.seriousError {
@extend .error;
border-width: 3px;
}
- 继承html元素
7.运算和函数
todo