sass 学习

搭建环境

一、安装ruby

http://rubyinstaller.org/downloads(官网)

二、安装sass

1)打开命令终端,输入:gem install sass

2)http://rubygems.org/gems/sass 下载sass安装包,然后在终端输入: “gem install <把下载的安装包拖到这里>” 然后直接额回车即可安装成功。

三、编译

单文件编译:sass sass/demo.scss css/index.css
多文件编译: sass sass/*.scss css/*.css 在线编译 

开启监听命令sass --watch sass/*.scss css/*.css

编译不生成map文件:--sourcemap=none(sass sass/demo.scss css/index.css --sourcemap=none)

不生成.sass-cache文件:--no-cache(sass sass/demo.scss css/index.css --no-cache

命令行其他配置选项:
  1)--watch表示监听文件、文件夹的修改自动编译,源与目录之间用:隔开
 2)--style表示解析后的css是什么格式,有四种取值分别为:nested(默认),expanded,compact,compressed。
 3)--sourcemap表示开启sourcemap调试。开启sourcemap调试后,会生成一个后缀名为.css.map文件。

 4)--debug-info表示开启debug信息,升级到3.3.0之后因为sourcemap更高级,这个debug-info就不太用了。

编译风格:

使用:sass --style compressed test.sass test.css

* nested:嵌套缩进的css代码,它是默认值。
* expanded:没有缩进的、扩展的css代码。
* compact:简洁格式的css代码。

* compressed:压缩后的css代码。(生成环境)

Sass编译中文件报名的问题:
找到ruby的安装目录,里面也有sass模块,如这个路径:C:\Ruby\lib\ruby\gems\1.9.1\gems\sass-3.3.14\lib\sass,在这个文件里面engine.rb,添加一行代码:
Encoding.default_external = Encoding.find('utf-8')

放在所有的require XXXX 之后即可。

gulp-sass插件编译
//参数
outputStyle:nested(默认),expanded,compact,compressed。
gulp.task('sass',function () {
returngulp.src('./sass/**/*.scss')
.pipe(sass({outputStyle: 'compressed'}).on('error', sass.logError))
.pipe(gulp.dest('./css'));
});
//文件监听(文件有修改自动编译)
gulp.task('sassWatch',function(){
gulp.watch('./src/sass/*.scss',['sass']);

});

在线工具与可视化工具
koala
PS:
1)编译时,如果不想编译某些文件,只需要在文件名前加下划线“_”

2)编译时报错,往往是sass代码编写不规范引起的

反编译
1、css文件转成sass/scss文件
格式:sass-convert ccs文件名 sass源文件名
sass-convert style.css style.sass
sass-convert style.css style.scss
2、在线转换工具css2sass

http://css2sass.herokuapp.com/

三、基本用法

变量:

1)SASS允许使用变量,所有变量以$开头

$blue : #1875e7;

div {color : $blue;}

2)如果变量需要镶嵌在字符串之中,就必须需要写在#{}之中

$side : left;

.rounded {

border-#{$side}-radius: 5px;

}

计算功能

SASS允许在代码中使用算式:

body {

margin: (14px/2);

top: 50px + 100px;

right: $var * 10%;

}

嵌套

1)选择器嵌套

div {
 hi {
  color:red;
}
}

2)属性也可以嵌套

p {
  border: {
   color: red;
  }
}

注意,属性后面必须加上冒号

3)在嵌套的代码块内,可以使用&引用父元素。比如a:hover伪类

a {
 &:hover { color: #ffb3ff; }
}

注释

SASS共有两种注释风格。

标准的CSS注释 /* comment */ ,会保留到编译后的文件。

单行注释 // comment,只保留在SASS源文件中,编译后被省略。

在/*后面加一个感叹号,表示这是"重要注释"。即使是压缩模式编译,也会保留这行注释,通常可以用于声明版权信息。

/*! 

重要注释!

*/

四、代码重用

继承

SASS允许一个选择器,继承另一个选择器

.class1 {

border: 1px solid #ddd;

}

class2要继承class1,就要使用@extend命令

.class2 {

  @extend .class1;

  font-size:120%;

}

mixin

使用@mixin命令,定义一个代码块

 @mixin left {
    float: left;
    margin-left: 10px;
  }

使用@include命令,调用这个mixin。

div {
    @include left;
  }

mixin的强大之处,在于可以指定参数和缺省值

@mixin left($value: 10px) {
    float: left;
    margin-right: $value;
  }

使用的时候,根据需要加入参数:

div {
    @include left(20px);
  }

下面是一个mixin的实例,用来生成浏览器前缀。

@mixin rounded($vert, $horz, $radius: 10px) {
    border-#{$vert}-#{$horz}-radius: $radius;
    -moz-border-radius-#{$vert}#{$horz}: $radius;
    -webkit-border-#{$vert}-#{$horz}-radius: $radius;
  }

使用的时候,可以像下面这样调用:

#navbar li { @include rounded(top, left); }

#footer { @include rounded(top, left, 5px); }

颜色函数

SASS提供了一些内置的颜色函数,以便生成系列颜色。

lighten(#cc3, 10%) // #d6d65c
darken(#cc3, 10%) // #a3a329
grayscale(#cc3) // #808080
complement(#cc3) // #33c

插入文件

@import命令,用来插入外部文件。

@import "path/filename.scss";

如果插入的是.css文件,则等同于css的import命令。

@import "foo.css";

五、高级用法

条件语句

@if可以用来判断:

p {
    @if 1 + 1 == 2 { border: 1px solid; }
    @if 5 < 3 { border: 2px dotted; }
  }

配套的还有@else命令:

@if lightness($color) > 30% {
    background-color: #000;
  } @else {
    background-color: #fff;
  }

循环语句

SASS支持for循环:

@for $i from 1 to 10 {

    .border-#{$i} {

      border: #{$i}px solid blue;

    }

  }

也支持while循环:

$i: 6;

@while $i > 0 {

.item-#{$i} { width: 2em * $i; }

$i: $i - 2;

}

each命令,作用与for类似:

@each $member in a, b, c, d {

    .#{$member} {

      background-image: url("/image/#{$member}.jpg");

    }

  }

自定义函数

@function double($n) {

@return $n * 2;

}

#sidebar {

width: double(5px);

}

占位符%

用占位符声明的代码,如果不被@extend调用就不会被编译

使用@extend调用:










猜你喜欢

转载自blog.csdn.net/qq_35792483/article/details/78317618