SASS是一种CSS的开发工具,提供了许多便利的写法,大大节省了设计者的时间,使得CSS的开发,变得简单和可维护。
你可以用它开发网页样式,但是没法用它编程。也就是说,CSS基本上是设计师的工具,不是程序员的工具。在程序员眼里,CSS是一件很麻烦的东西。它没有变量,也没有条件语句,只是一行行单纯的描述,写起来相当费事。
基础
变量与选择器
变量
变量的定义一般以$开头,某个变量的作用域仅限于他们定义的层级以及子层级。如果变量是定义在所有嵌套选择器之外的,那么他们可以在各处被调用。
1 | $color1: #aeaeae; |
1 | .div1 { |
变量的作用域
如果希望某个在子选择器中定义的变量能够成为全局变量,可以使用!global关键字:
1 | #main { |
嵌套引用
1 | $side: top; |
1 | .round-top { |
变量计算
1 | $left: 20px; |
计算的类型
1 | p { |
选择器
嵌套
1 | .div1{ |
1 | p{ |
注意: border后面必须加上冒号
父元素引用
允许使用&引用父元素
1 | .div1{ |
代码重用
继承
SASS允许一个选择器,继承另一个选择器。
1 | .class1{ |
1 | .class1, .class2 { |
注意:如果在class2后面有设置了class1的属性,那么也会影响class2
1 | .class1{ |
占位符
1 | %class1{ |
1 | .class2{ |
引用外部
1 | @import "_test1.scss"; |
Mixin&Include
Mixin是SASS中非常强大的特性之一。定义mixin时,需要在前面加@mixin,使用时需要添加@include来引用该mixin。
1 | @mixin left { |
1 | div { |
边距设置
1 | @mixin common($value1,$value2,$defaultValue:12px) { |
浏览器前缀设置
1 | @mixin rounded($vert, $horz, $radius: 10px) { |
编程式方法
流程控制
条件语句
@if
1 | p { |
@else
1 | @if lightness($color) > 30% { |
循环语句
for循环
1 | @for $i from 1 to 5 { |
1 | /* line 149, ../sass/style.scss */ |
while循环
1 | $i: 1; |
1 | /* line 156, ../sass/style.scss */ |
each命令,作用与for类似
1 | @each $item in add, update, remove, share { |
1 | /* line 161, ../sass/style.scss */ |
函数
1 | @function double($n) { |
1 | #navbar { |
颜色函数
SASS提供了一些内置的颜色函数,以便生成系列颜色。
1 | lighten(#cc3, 10%) |
拓展
Sass 与 SCSS 是什么关系
- sass受Haml简洁启发,Ruby的语法,没有花括号,没有分号,具有严格的缩进
Sass 从来没有大写过,无论你指的是语法或者这个语言。同时, SCSS 一直是大写的。甚至有一个网站专门来提醒你这件事!
.sass
1 | $def-color: #333 |
.scss
1 | $def-color: #333 |
使用Sass之更高级的媒体查询
1 | / _config.scss |
1 | // _mixins.scss |
使用
1 | // _component.scss |
输出
1 | .element { |
巧用SASS之如何遍历n个子元素并为其设置属性
1 | <div id="main-container"> |
1 | // 将背景颜色值定义成变量 |
设置rem,控制width
1 | @function size($size) { |