【前端】Sass 基本语法速览 | 来自freeCodeCamp

141 阅读2分钟

Sass

Sass 是一种 CSS 预处理器,它增加了变量、嵌套、混合(mixins)、函数等功能,使得 CSS 的编写更加灵活和可维护。Sass 有两种语法:SCSS(Sassy CSS)和缩进语法(Sass)。SCSS 是 Sass 的一种语法,它与 CSS 的语法非常接近,因此对于熟悉 CSS 的开发者来说,学习和使用起来相对容易。

  • 用Sass变量存储数据
  • 用Sass嵌套CSS
  • Create Reusable CSS with Mixins
  • Use @if and @else to Add Logic To Your Styles
  • Use @for to Create a Sass Loop
  • Use @each to Map Over Items in a List
  • 使用@while循环创建样式
  • 用Partials将样式分成小块
  • 将一组CSS样式扩展到另一个元素
<style type='text/scss'>
  // 使用$定义变量,并使用
  $text-color: red;
  
  p {
    text-color: $text-color;
  }
------------------
  // 如下写法
  article p {}
  article h1 {}
  ...
  // 相当于
  article {
    p {}
    h1 {}
  }

------------------
  // 函数化:函数声明关键字 @mixin cssName($parame: default, $parame, ...) {}	
  @mixin shape($w, $h, $bg-color) {
    color: $w;
    ...
  }
  // 调用函数:@include cssName();
  p {
    @include shape(black, ...);
  }
------------------
  // if-else  使用@声明,无括号
  @mixin text-effect($val) {
  @if $val == danger {
    color: red;
  }
  @else if $val == alert {
    color: yellow;
  }
  @else if $val == success {
    color: green;
  }
  @else {
    color: black;
  }
}
------------------
  // @for 循环 分 A to B 和 A through B 两钟用法,开闭区间
  // @while 同理 $x: $x + 1; 避免死循环即可
  @for $i from 1 through 12 {
    .col-#{$i} { width: 100%/12 * $i; }
    // #{$i} 将i准换为字符串, 注意css元素前的 . 符号         
    // => .col-1 {width: 8.33%;} ...  .col-12 {width: 100%;}
  }
------------------  
  // for-each循环
  @each $color in blue, red, green {
    .#{$color}-text {color: $color;}
  }
  // 映射 请注意,需要$key变量来引用映射中的键。
  // 否则,编译后的CSS会有color 1,color 2...
  $colors: (color1: blue, color2: red, color3: green);
  @each $key, $color in $colors {
    .#{$color}-text {color: $color;}
  } 
</style>

使用Partials将css分成小块,分为类似main.scss_partialsName.scss的结构,与main.c model.c model.h的关系类似.

// 导入scss文件: _scssName.scss
// 忽略文件前的_符号与.scss扩展名,_为scss子文件的标识符
@import 'scssName'  
---------------------
// 继承
.panel { ... }
.big-panel {
  @extend .panel; // 继承panel的参数
}

学习 Sass 仍然是有必要的,尤其是在现代前端开发中。以下是几个原因:

  1. 提高工作效率:Sass 提供了变量、嵌套规则、混合(Mixins)、继承等特性,这些功能使得编写和维护 CSS 代码变得更加模块化和可维护。
  2. 更好的可扩展性:通过 Sass 的继承和包含功能,可以轻松重用现有的样式代码,并在需要时进行修改,有助于保持代码的整洁和一致性。
  3. 易于维护:Sass 的注释和文档功能可以帮助你为样式代码添加必要的说明和文档,这对于团队成员理解和维护代码非常有帮助。
  4. 支持多种平台:Sass 不仅适用于 Web 开发,还可以用于其他平台和框架,如 React Native 和 Vue.js,这意味着你可以在多个项目中应用所学知识。
  5. 社区支持:Sass 拥有庞大的开发者社区,当你遇到问题时,可以轻松找到解决方案或寻求帮助。
  6. 减少冗余代码:CSS 预处理器提供了 CSS 层缺失的样式层复用机制,减少冗余代码,提高样式代码的可维护性。
  7. 适应复杂项目:Sass 的功能比 Less 强大,适用于复杂或大型项目,而 Less 相对而言更适合小型项目。
  8. 多种输出选项:Sass 提供多种输出选项,如 nested/compact/compressed/expanded,输出样式的风格可以有多种选择,默认为 nested。