Sass(Scss)的使用

本文深入解析Sass与SCSS的区别与联系,探讨其文件扩展名、语法书写方式的不同,以及如何通过命令行编译Sass代码。同时,文章提供了编译过程中的常见错误及其解决方案,介绍了Sass的嵌套输出、展开输出、紧凑输出和压缩输出四种CSS样式风格。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Sass 和 SCSS 其实是同一种东西,我们平时都称之为 Sass,两者之间不同之处有以下两点:

文件扩展名不同,Sass 是以“.sass”后缀为扩展名,而 SCSS 是以“.scss”后缀为扩展名
语法书写方式不同,Sass 是以严格的缩进式语法规则来书写,不带大括号({})和分号(;),而 SCSS 的语法书写和我们的 CSS 语法书写方式非常类似。

[Sass]命令编译
命令编译是指使用你电脑中的命令终端,通过输入 Sass 指令来编译 Sass。这种编译方式是最直接也是最简单的一种方式。因为只需要在你的命令终端输入:

1.单文件编译:

--sass <要编译的Sass文件路径>/style.scss:<要输出CSS文件路径>/style.css

2.多文件编译:

如果想对整个项目所有 Sass 文件编译成 CSS 文件,可以这样操作:

--sass sass/:css/

上面的命令表示将项目中“sass”文件夹中所有“.scss”(“.sass”)文件编译成“.css”文件,并且将这些 CSS 文件都放在项目中“css”文件夹中。


缺点及解决方法:

在实际编译过程中,你会发现上面的命令,只能一次性编译。每次个性保存“.scss”文件之后,都得重新执行一次这样的命令。如此操作太麻烦,其实还有一种方法,就是在编译 Sass 时,开启“watch”功能,这样只要你的代码进行任保修改,都能自动监测到代码的变化,并且给你直接编译出来:

--sass --watch <要编译的Sass文件路径>/style.scss:<要输出CSS文件路径>/style.css

watch 举例:

来看一个简单的示例,假设我本地有一个项目,我要把项目中“bootstrap.scss”编译出“bootstrap.css”文件,并且将编译出来的文件放在“css”文件夹中,我就可以在我的命令终端中执行:

--sass --watch sass/bootstrap.scss:css/bootstrap.css


在编译 Sass 代码时常常会碰到一些错误,让编译失败。这样的错误有系统造成的也有人为造成的,但大部分都是人为过失引起编译失败。

而最为常见的一个错误就是字符编译引起的。在Sass的编译的过程中,是不是支持“GBK”编码的。所以在创建 Sass 文件时,就需要将文件编码设置为“utf-8”。

另外一个错误就是路径中的中文字符引起的。建议在项目中文件命名或者文件目录命名不要使用中文字符。而至于人为失误造成的编译失败,在编译过程中都会有具体的说明,大家可以根据编译器提供的错误信息进行对应的修改。

嵌套( nested)

1、嵌套输出方式 nested

Sass 提供了一种嵌套显示 CSS 文件的方式。例如

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

  li { display: inline-block; }

  a {
    display: block;
    padding: 6px 12px;
    text-decoration: none;
  }
}

在编译的时候带上参数“ --style nested”:

sass --watch test.scss:test.css --style nested

编译出来的 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; }

[Sass]展开输出方式 expanded

2、嵌套输出方式 expanded

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

  li { display: inline-block; }

  a {
    display: block;
    padding: 6px 12px;
    text-decoration: none;
  }
}

在编译的时候带上参数“ --style expanded”:

sass --watch test.scss:test.css --style expanded

这个输出的 CSS 样式风格和 nested 类似,只是大括号在另起一行,同样上面的代码,编译出来:

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

 

[Sass]紧凑输出方式 compact

2、嵌套输出方式 compact

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

  li { display: inline-block; }

  a {
    display: block;
    padding: 6px 12px;
    text-decoration: none;
  }
}

在编译的时候带上参数“ --style compact”:

sass --watch test.scss:test.css --style compact

该方式适合那些喜欢单行 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; }

 

[Sass]压缩输出方式 compressed

2、压缩输出方式 compressed

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

  li { display: inline-block; }

  a {
    display: block;
    padding: 6px 12px;
    text-decoration: none;
  }
}

在编译的时候带上参数“ --style compressed”:

sass --watch test.scss:test.css --style compressed

压缩输出方式会去掉标准的 Sass 和 CSS 注释及空格。也就是压缩好的 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}

总结:

编译出来的CSS样式风格的选择完全是个人喜好问题,可以根据自己喜欢的风格选择参数。

一段时间之后,你实际上就不再需要写 CSS 代码了,只用写 Sass 代码。在这种情况下,你只需要设定输出格式为压缩格式,知道输出的 CSS 代码可以直接使用即可。

 

Sass(Syntactically Awesome Style Sheets)和SCSSSassy CSS,即 Sass 的语法扩展版本)都是预处理器语言,它们是在原生CSS基础上添加了一些高级功能,使得样式表编写更加灵活、易维护。以下是两者的主要区别: 1. **语法兼容性**: - SCSSSass 的一种写法,它是从 Sass 2.0 版本开始引入的,保持了与 CSS 相似的语法结构,更易于上手。 - Sass 初始版本的语法有自己的特色,但自 3.0 版本以后也向 SCSS 靠拢,支持更多的 CSS-like 写法。 2. **编译过程**: - SCSS 可以直接作为 CSS 文件被浏览器解析,因为它本身就是标准的 CSS,但在实际开发中通常会经过编译器转换为纯 CSS- Sass 则需要编译器(如 LibSass, Ruby Sass 或 Dart Sass)先将其编译成 CSS 才能在浏览器运行。 3. **混入(Mixin)** 和 **嵌套规则**: - SCSS 支持这两种功能,它们使代码组织更加清晰,提高了重用性和可读性。 - Sass 在早期版本中也有类似的功能,但在 SCSS 中更为普遍和强大。 4. **变量(Vars)** 和 **作用域**: - SCSSSass 都支持变量定义和作用域控制,这让开发者能够统一管理和修改颜色、尺寸等全局值。 5. **导入(Include)** 和 **继承(Inheritance)**: - SCSSSass 都支持文件的导入,方便管理大型项目中的样式;继承则用于复用样式,两者都提供。 6. **性能**: - SCSS 本身语法较简洁,对新手来说更友好,且因为是纯 CSS,编译速度相对较快。 - Sass,特别是 Ruby Sass,在处理大量复杂的 Mixins 和嵌套时可能会消耗更多资源,尤其是对于大型项目。 相关问题: 1. Sass 是否可以直接在浏览器中使用? 2. SCSS 提供了哪些额外的特性来优化CSS编写? 3. 如何决定在项目中使用 Sass 还是 SCSS
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值