Sass入门篇

作者: 亭止 | 来源:发表于2016-07-07 21:39 被阅读58次

    卸载 Sass
    gem uninstall sass

    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 是 Sass 的新语法格式,从外形上来判断他和 CSS 长得几乎是一模一样,代码都包裹在一对大括号里,并且末尾结束处都有一个分号。其文件名格式常常以“.scss”为扩展名。

    同样的这段 CSS 代码:

    body {
    font: 100% Helvetica, sans-serif;
    color: #333;
    }
    我们使用 SCSS 语法格式将按下面这样来书写:

    $font-stack: Helvetica, sans-serif;
    $primary-color: #333;

    body {
    font: 100% $font-stack;
    color: $primary-color;
    }

    这样的语法格式对于从事前端工作的同学来说更易于接受,这也是 SCSS 为什么更被前端人员青眯的原因。

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

    Sass 的编译有多种方法:

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

    GUI 界面工具编译
    对于 GUI 界面编译工具,目前较为流行的主要有:

    Koala (http://koala-app.com/)
    Compass.app(http://compass.kkbox.com/
    Scout(http://mhs.github.io/scout-app/
    CodeKit(https://incident57.com/codekit/index.html
    Prepros(https://prepros.io/
    相比之下,我比较推荐使用以下两个:

    Koala (http://www.w3cplus.com/preprocessor/sass-gui-tool-koala.html)
    CodeKit (http://www.w3cplus.com/preprocessor/sass-gui-tool-codekit.html)

    自动化编译
    喜欢自动化研究的同学,应该都知道 Grunt 和 Gulp 这两个东东。如果您正在使用其中的任何一种,那么你也可以通过他们来配置 Sass 的编译。这里仅列出两个示例代码(具体情况要根据您的项目环境来做一定的修改,不建议生搬硬套,容易发生命案,呵呵。

    1、Grunt 配置 Sass 编译的示例代码

    module.exports = function(grunt) {
    grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    sass: {
    dist: {
    files: {
    'style/style.css' : 'sass/style.scss'
    }
    }
    },
    watch: {
    css: {
    files: '*/.scss',
    tasks: ['sass']
    }
    }
    });
    grunt.loadNpmTasks('grunt-contrib-sass');
    grunt.loadNpmTasks('grunt-contrib-watch');
    grunt.registerTask('default',['watch']);
    }
    想了解 Grunt 同学请单击这里学习《Grunt-beginner前端自动化工具》。

    2、Gulp 配置 Sass 编译的示例代码

    var gulp = require('gulp');
    var sass = require('gulp-sass');

    gulp.task('sass', function () {
    gulp.src('./scss/*.scss')
    .pipe(sass())
    .pipe(gulp.dest('./css'));
    });

    gulp.task('watch', function() {
    gulp.watch('scss/*.scss', ['sass']);
    });

    gulp.task('default', ['sass','watch']);

    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

    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入门篇

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