Skip to content

Sass - 概览

Sass(Syntactically Awesome Stylesheets)是最成熟、稳定且强大的专业级 CSS 扩展语言(通常称为 CSS 预处理器)。它允许开发者使用标准 CSS 中不存在的变量、嵌套规则、混合(mixins)、函数、继承等特性。Sass 代码随后会被编译成标准的、浏览器兼容的 CSS。

本质上,Sass 帮助你以一种更有条理、更高效、更易维护的方式编写 CSS,特别适用于大型和复杂的项目。

Sass 最初由 Hampton Catlin 设计,并由 Natalie Weizenbaum 于 2006 年开始开发。最初的实现是用 Ruby 语言编写的(Ruby Sass)。尽管影响深远,Ruby Sass 已于 2019 年停止维护。

主要、官方的实现现在是 Dart Sass,也由 Natalie Weizenbaum 和 Sass 核心团队主导。Dart Sass 速度显著更快,优先获得最新的语言特性,并且可以作为独立可执行文件运行,或集成到 Node.js 项目中(通过 npm)。曾还有一个 LibSass(C/C++ 实现),因其在构建工具中的速度而受欢迎,但其特性支持落后于 Dart Sass,并正逐渐被 Dart Sass 集成所取代。

对于所有新项目,推荐选择 Dart Sass。

  • **可维护性:**通过模块化(@use、@forward)和可重用组件(混合、函数)使大型样式表更易管理。
  • **效率:**使用变量、混合和循环(@for、@each)减少重复,让你编写更少的代码。
  • **组织性:**鼓励将样式分解为更小、更集中的文件(partials),并提供清晰的依赖管理。
  • **可读性:**嵌套规则可以模仿 HTML 结构,使样式更容易理解。
  • **高级特性:**提供类似编程的能力,例如逻辑(@if)、循环、强大的颜色操作函数和数学运算。
  • **生态系统:**与现代前端构建工具(Webpack、Vite、Parcel 等)和框架良好集成。
  • **CSS 兼容性:**SCSS 语法与 CSS 完全兼容。
  • **变量($):**存储可重用值,如颜色、字体、尺寸。
  • **嵌套:**在选择器内部嵌套选择器。
  • **模块(@use、@forward):**现代方式导入文件、管理依赖并避免全局命名空间冲突。
  • **混合(@mixin、@include):**定义可重用样式块,可带参数。
  • **继承(@extend):**在选择器之间共享样式(请谨慎使用)。
  • **运算符:**数学运算符(+、-、*、/、%)、比较运算符(==、!=、<、>)、逻辑运算符(and、or、not)。
  • **内置函数:**丰富的库,用于颜色操作、数学计算、字符串、列表、映射等。
  • **自定义函数(@function):**定义你自己的可重用逻辑。
  • **控制流(@if、@for、@each、@while):**为你的样式添加逻辑和循环。
  • 编写更清晰、更有条理的 CSS。
  • 更快、更高效地开发样式。
  • 有助于创建设计系统和组件库。
  • 在样式表中实现复杂的逻辑和计算。
  • 对于大型项目具有高度可扩展性。
  • 强大的社区支持和丰富的文档。
  • **需要编译:**在你的开发工作流程中增加一个构建步骤(尽管这在现代 Web 开发中是标准做法)。
  • **学习曲线:**开发者需要学习 Sass 语法和超越标准 CSS 的概念。
  • **调试:**可能略不如调试纯 CSS 直接,尽管 Source Maps 通过将编译后的代码链接回原始 Sass 源文件,极大地缓解了这个问题。
  • **过度抽象的可能性:**如果使用不当,Sass 特性的强大功能有时可能导致代码过于复杂或难以理解。