Skip to content

Sass 基础

预处理

单靠 CSS 也能写出有趣的样式,但样式表变得越来越庞大、复杂,也更难维护。这时预处理器就能派上用场。Sass 拥有 CSS 目前还没有的功能,比如嵌套、混合宏、继承等各种实用功能,能帮助你编写健壮、易维护的 CSS。

一旦你开始使用 Sass,它会将你预处理的 Sass 文件保存为普通的 CSS 文件,供网站使用。

最直接的方式是在终端中操作。一旦 Sass 安装完成,你可以使用 sass 命令将 Sass 编译为 CSS。你需要告诉 Sass 要构建哪个文件,以及 CSS 输出到哪里。例如,在终端中运行:

sh
sass input.scss output.css

这会将一个 Sass 文件 input.scss 编译为 output.css

你也可以使用 --watch 标志来监听单个文件或整个目录。watch 标志会告诉 Sass 监听你的源文件的更改,并在每次保存 Sass 时重新编译 CSS。如果你想监听 input.scss 文件,而不是手动构建,只需在命令中添加 watch 标志,如下所示:

sh
sass --watch input.scss output.css

你还可以通过使用文件夹路径作为输入和输出,并用冒号分隔它们,来监听并输出到目录。例如:

sh
sass --watch app/sass:public/stylesheets

Sass 会监听 app/sass 文件夹中的所有文件变化,并将 CSS 编译到 public/stylesheets 文件夹中。

NOTE

Sass 有两种语法!.scss 语法最常用,它是 CSS 的超集,这意味着所有有效的 CSS 也是有效的 SCSS。而 .sass 缩进语法则较为少见:它使用缩进代替大括号来嵌套语句,使用换行而非分号来分隔语句。我们提供的所有示例都有这两种语法版本。

嵌套

在编写 HTML 时,你可能注意到它具有清晰的嵌套结构和视觉层级。而 CSS 本身则没有这种结构。

Sass 允许你以符合 HTML 视觉层级的方式嵌套 CSS 选择器。需要注意的是,过度嵌套的规则会导致选择器过于复杂,难以维护,通常被认为是糟糕的实践。

牢记这一点,下面是一个网站导航常见样式的示例:

scss
nav {
  ul {
    margin: 0;
    padding: 0;
    list-style: none;
  }

  li { display: inline-block; }

  a {
    display: block;
    padding: 6px 12px;
    text-decoration: none;
  }
}
css
nav ul {
  margin: 0;
  padding: 0;
  list-style: none;
}
nav li {
  display: inline-block;
}
nav a {
  display: block;
  padding: 6px 12px;
  text-decoration: none;
}

你会注意到,ullia 选择器是嵌套在 nav 选择器中的。这是一种很好的方式来组织你的 CSS,使其更具可读性。