4.变量的定义
$符 $width: 5em;在嵌套 CSS 规则时,有时也需要直接使用嵌套外层的父选择器
$color:red; .box { //这里指.box &:hover { background-color: $color; } .son { width: 100px; height: 100px; background-color: burlywood; //这里指 .son &:hover { background-color: blueviolet; } p {color:$color; //这里指 p &:hover { background-color: blueviolet; } } } span {color: #000;} h3 {color: #c6c5c6;} }5. 属性嵌套 有些 CSS 属性遵循相同的命名空间 (namespace),比如 font-family, font-size, font-weight 都以 font 作为属性的命名空间。为了便于管理这样的属性,同时也为了避免了重复输入,Sass 允许将属性嵌套在命名空间中,例如:
.funky { font: { family: fantasy; size: 30em; weight: bold; } } //编译为 .funky { font-family: fantasy; font-size: 30em; font-weight: bold; }注释有 /**/ // 。 //是不会编译出来
除法需注意的地方
如果值,或值的一部分,是变量或者函数的返回值 如果值被圆括号包裹 如果值是算数表达式的一部分 p { font: 10px/8px; // Plain CSS, no division $width: 1000px; width: $width/2; // Uses a variable, does division width: round(1.5)/2; // Uses a function, does division height: (500px/2); // Uses parentheses, does division margin-left: 5px + 8px/2px; // Uses +, does division } //编译为 p { font: 10px/8px; width: 500px; height: 250px; margin-left: 9px; } 函数 SassScript 定义了多种函数,有些甚至可以通过普通的 CSS 语句调用: p { color: hsl(0, 100%, 50%); } p { color: #ff0000; }注意 1.但在以下情况下,@import 仅作为普通的 CSS 语句,不会导入任何 Sass 文件。 2. 不可以在混合指令 (mixin) 或控制指令 (control directives) 中嵌套 @import。
文件拓展名是 .css;文件名以 http:// 开头;文件名是 url();@import 包含 media queries。2.@media和在css中使用一样,如果 @media 嵌套在 CSS 规则内,编译时,@media 将被编译到文件的最外层,包含嵌套的父选择器。这个功能让 @media 用起来更方便,不需要重复使用选择器,也不会打乱 CSS 的书写流程。
.sidebar { width: 300px; @media screen and (orientation: landscape) { width: 500px; } } //编译为 .sidebar { width: 300px; } @media screen and (orientation: landscape) { .sidebar { width: 500px; } }3.@extend 继承样式
.error { border: 1px #f00; background-color: #fdd; } .seriousError { @extend .error; border-width: 3px; } 表示的是.error的样式被.seriousError继承了1. 定义 混合指令(Mixin)用于定义可重复使用的样式,避免了使用无语意的 class,比如 .float-left。混合指令可以包含所有的 CSS 规则,绝大部分 Sass 规则,甚至通过参数功能引入变量,输出多样化的样式。
简写 为便于书写,@mixin 可以用 = 表示,而 @include 可以用 + 表示,
//定义 @mixin large-text { font: { family: Arial; size: 20px; weight: bold; } color: #ff0000; }2.引用
1.定义之后,在父元素中引用编译 .page-title { @include large-text; padding: 4px; margin-top: 10px; } //编译后 .page-title { font-family: Arial; font-size: 20px; font-weight: bold; color: #ff0000; padding: 4px; margin-top: 10px; } 2.直接定义后编译(就像是函数的调用一样) @mixin silly-links { a { color: blue; background-color: red; } } @include silly-links; //编译后 a { color: blue; background-color: red; }定义函数@function name($n){} 调用 name(5)
$grid-width: 40px; $gutter-width: 10px; @function grid-width($n) { @return $n * $grid-width + ($n - 1) * $gutter-width; } #sidebar { width: grid-width(5); } 编译为 #sidebar { width: 240px; }