#Preprocessing
Sass 这一预处理工具,能够帮助我写作更具健壮性、可维护的 CSS。
可通过 yarn global add sass
全局安装。之后可以在 Terminal 执行:
# compile one file
sass input.scss output.css
# watch individual files or directories
sass --watch input.scss output.css
# watch input folder and ouput folder
sass --watch app/sass:public/stylesheets
#Variables
变量(Variables)可以存储需要重复使用的信息。
$font-stack: Helvetica, sans-serif;
$primary-color: #333;
body {
font: 100% $font-stack;
color: $primary-color;
}
body {
font: 100% Helvetica, sans-serif;
color: #333;
}
#Nesting
Sass 能够处理和 HTML 一样,写出嵌套的 CSS。但注意不要滥用。
nav {
ul {
margin: 0;
padding: 0;
list-style: none;
}
li { display: inline-block; }
a {
display: block;
padding: 6px 12px;
text-decoration: none;
}
}
nav ul {
margin: 0;
padding: 0;
list-style: none;
}
nav li {
display: inline-block;
}
nav a {
display: block;
padding: 6px 12px;
text-decoration: none;
}
#Partials
还可以创建一些小的代码片段,包含在一个主 Sass 文件中。代码片段可视为模块化的组件。代码片段文件的命名: _filename.scss
,有了 _
在编译时 不会生成 *.css 文件。在主 Sass 文件中,使用 @use
调用 partial 文件。
#Modules
目前只有 Dart Sass 支持使用 @use
导入模块,其他分支(LibSass,Ruby Sass)需使用 @import rule
,后者已经不鼓励使用。
// _base.scss
$font-stack: Helvetica, sans-serif;
$primary-color: #333;
body {
font: 100% $font-stack;
color: $primary-color;
}
// styles.scss
@use 'base';
.inverse {
background-color: base.$primary-color;
color: white;
}
body {
font: 100% Helvetica, sans-serif;
color: #333;
}
.inverse {
background-color: #333;
color: white;
}
Mixins Extend/Inheritance Operators