官网:https://sass-lang.com/guide

  1. # 安装
  2. yarn global add sass

一、Preprocessing

Sass 工具可以把预处理的 Sass 文件转换成普通的 CSS 文件,然后在网站中使用,有下面 3 种用法

手动将 input.scss 编译输出成 output.css

  1. sass input.scss output.css

监听 input.scss 文件变动,并在变化时自动编译输出成 output.css

  1. sass --watch input.scss output.css

使用 app/sass 文件夹路径作为输入,public/stylesheets 作为 输出,中间用冒号分割,监听文件并输出到目录

  1. sass --watch app/sass:public/stylesheets

二、Variables

可以在变量中存储颜色、字体或其他任何 CSS 值,并在将来重复利用,Sass 使用 $ 富豪作为变量的标志

  1. $font-stack: Helvetica, sans-serif;
  2. $primary-color: #333;
  3. body {
  4. font: 100% $font-stack;
  5. color: $primary-color;
  6. }

三、Nesting

Sass 允许嵌套 CSS 选择器,但是不要过度嵌套,过度嵌套会导致 CSS 可能很难维护。下面是一个典型的网站导航的样式

  1. nav {
  2. ul {
  3. margin: 0;
  4. padding: 0;
  5. list-style: none;
  6. }
  7. li {
  8. display: inline-block;
  9. }
  10. a {
  11. display: block;
  12. padding: 6px 12px;
  13. text-decoration: none;
  14. }
  15. }

ul、li 和 a 选择器嵌套在 nav 选择器中。这是组织 CSS 并使其更具可读性的好方法

四、Partials

可以创建部分 Sass 文件来模块化 CSS 使其更容易维护。什么意思呢?创建一个 _ 开头的 Sass 文件让 Sass 知道它是部分 Sass 文件,它不会生成 CSS 文件,然后别的正常的 Sass 文件对其进行引入。

  1. _partial.scss

五、Modules

不必在一个文件中写所有的 Sass 文件,可以使用 @use 规则进行分割,这个规则可以将其他 Sass 作为一个模块加载进来,可以使用它的 variab✕les、mixins 和 functions,并且其中的 CSS 也引入进来了。

  1. // _base.scss
  2. $font-stack: Helvetica, sans-serif;
  3. $primary-color: #333;
  4. body {
  5. font: 100% $font-stack;
  6. color: $primary-color;
  7. }
  1. // styles.scss
  2. @use 'base';
  3. .inverse {
  4. background-colr: base.$primary-color;
  5. color: white;
  6. }

我们注意到使用 @use 引入其他 Sass 文件时,不需要加 .scss 后缀,_ 前缀也可以省略,Sass 会很聪明地处理它们。

六、Mixins

Mixins 的用法如下,可以感受感受

  1. @mixin transform($property) {
  2. -webkit-transform: $property;
  3. -ms-transform: $property;
  4. transform: $property;
  5. }
  6. .box { @include transform(rotate(30deg)); }

七、Extend/Inheritance

使用 @extend 可以将一组 CSS 继承下来,用法如下,感受感受

  1. %message-shared {
  2. border: 1px solid #ccc;
  3. padding: 10px;
  4. color: #333;
  5. }
  6. // This CSS won't print because %equal-heights is never extended.
  7. %equal-heights {
  8. display: flex;
  9. flex-wrap: wrap;
  10. }
  11. .message {
  12. @extend %message-shared;
  13. }
  14. .success {
  15. @extend %message-shared;
  16. border-color: green;
  17. }
  18. .error {
  19. @extend %message-shared;
  20. border-color: red;
  21. }
  22. .warning {
  23. @extend %message-shared;
  24. border-color: yellow;
  25. }

八、Operators

Sass 支持一些标准的数学运算符,例如 +-*/%,用法如下,感受感受

  1. .container {
  2. width: 100%;
  3. }
  4. article[role="main"] {
  5. float: left;
  6. width: 600px / 960px * 100%;
  7. }
  8. aside[role="complementary"] {
  9. float: right;
  10. width: 300px / 960px * 100%;
  11. }

「@浪里淘沙的小法师」