美文网首页猿人旅程sassSASS
Sass 入门(语法格式及编译调试篇)

Sass 入门(语法格式及编译调试篇)

作者: Junting | 来源:发表于2016-09-06 17:15 被阅读1419次

    Sass 语法格式


    这里说的 Sass 语法是 Sass 的最初语法格式,他是通过 tab 键控制缩进的一种语法规则,而且这种缩进要求非常严格。另外其不带有任何的分号和大括号。常常把这种格式称为 Sass 老版本,其文件名以“.sass”为扩展名。来看一个 Sass 语法格式的简单示例。假设我们有一段这样的 CSS 代码:

    body {
      font: 100% Helvetica, sans-serif;
      color: #333;
    }
    

    现在用 Sass 的语法格式来编写:

    $font-stack: Helvetica, sans-serif
    $primary-color: #333
    
    body
      font: 100% $font-stack
      color: $primary-color
    

    在整个 Sass 代码中,我们没看到类似 CSS 中的大括号和分号。
    注:这种语法格式对于前端人员都不太容易接受,而且容易出错。

    Scss 语法格式


    我们使用 SCSS 语法格式将按下面这样来书写:

    $font-stack: Helvetica, sans-serif;
    $primary-color: #333;
    
    body {
      font: 100% $font-stack;
      color: $primary-color;
    }
    

    不管是 Sass 的语法格式还是 SCSS 的语法格式,他们的功能都是一样的,不同的是其书写格式和文件扩展名不同

    正因为如此,有不少同学使用 Sass 新的语法规则(scss),而文件扩展名依旧使用的是“.sass”,这也就造成血案了,编译时说编译不出来。在此特别提醒新同学:“.sass”只能使用 Sass 老语法规则(缩进规则),“.scss”使用的是 Sass 的新语法规则,也就是 SCSS 语法规则(类似 CSS 语法格式)。

    Sass 编译


    常常有人会问,使用 Sass 进行开发,那么是不是直接通过“<link>”引用“.scss”或“.sass”文件呢?

    那么这里告诉大家,在项目中还是引用“.css”文件,Sass 只不过是做为一个预处理工具,提前帮你做事情,只有你需要时候,他才有攻效。

    这样一来,也就有了这章需要介绍的内容—— Sass 的编译。因为 Sass 开发之后,要让 Web 页面能调用 Sass 写好的东西,就得有这么一个过程,这个过程就称之为 Sass 编译过程。Sass 的编译有多种方法:

    命令编译
    GUI工具编译
    自动化编译
    

    命令编译


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

    单文件编译:

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

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

    多文件编译:

    sass sass/:css/
    

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

    缺点及解决方法:


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

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

    当然,使用 sass 命令编译时,可以带很多的参数:


    参数

    watch 举例:

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

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

    一旦我的 bootstrap.scss 文件有任何修改,只要我重新保存了修改的文件,命令终端就能监测,并重新编译出文件:


    实时

    常见的编译错误


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

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

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

    不同样式风格的输出方法


    众所周知,每个人编写的 CSS 样式风格都不一样,有的喜欢将所有样式代码都写在同一行,而有的喜欢将样式分行书写。在 Sass 中编译出来的样式风格也可以按不同的样式风格显示。其主要包括以下几种样式风格:

    • 嵌套输出方式 nested
    • 展开输出方式 expanded
    • **紧凑输出方式 compact **
    • 压缩输出方式 compressed

    嵌套输出方式 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; }
    

    效果图:


    对比图

    展开输出方式 expanded


    2、展开输出方式 expanded
    在编译的时候带上参数“ --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;
    }
    

    效果图:

    ![对比图](http:https://img.haomeiwen.com/i735083/f0f1f926a6b1f079.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    

    紧凑输出方式 compact


    3、紧凑输出方式 compact

    在编译的时候带上参数“ --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; }
    

    效果:


    对比图

    压缩输出方式 compressed


    4、压缩输出方式 compressed

    在编译的时候带上参数“ --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}
    

    效果图:

    对比图

    Sass 的调试


    演示图:


    调试

    Sass 调试一直以来都是一件头痛的事情,使用 Sass 的同学都希望能在浏览器中直接调试 Sass 文件,能找到对应的行数。值得庆幸的是,现在实现并不是一件难事,只要你的浏览器支持“sourcemap”功能即可。早一点的版本,需要在编译的时候添加“--sourcemap” 参数:

    sass --watch --scss --sourcemap style.scss:style.css
    

    在 Sass3.3 版本之上(我测试使用的版本是 3.4.7),不需要添加这个参数也可以:

    sass --watch style.scss:style.css   
    

    在命令终端,你将看到一个信息:

    >>> Change detected to: style.scss  write style.css  write style.css.map
    

    这时你就可以像前面展示的 gif 图一样,调试你的 Sass 代码。

    相关文章

      网友评论

      • de8ef3d53389:全抄慕课网 zz
        Junting:@星点丶 有认真看完过吗?
      • 大桔子123:你好,请问 编译后的风格能不能针对一个目录操作,不然如果只针对单个文件操作,实在是太麻烦了
        Junting:@大橘子小锦 sass 是提供这样的命令的,你可以查看下命令手册!具体命令我也忘记了,很久没有玩这个了!

      本文标题:Sass 入门(语法格式及编译调试篇)

      本文链接:https://www.haomeiwen.com/subject/rnbdettx.html