Sass学习

1.1下载地址:

  http://rubyinstaller.org/downloads

2.1 安装

SASS是Ruby语言写的,但是两者的语法没有关系。不懂Ruby,照样使用。只是必须先安装Ruby,然后再安装SASS。

假定你已经安装好了Ruby,接着在命令行输入下面的命令:

  gem install sass

然后,就可以使用了。

2.2 使用

SASS文件就是普通的文本文件,里面可以直接使用CSS语法。文件后缀名是.scss,意思为Sassy CSS。

下面的命令,可以在屏幕上显示.scss文件转化的css代码。(假设文件名为test。)

  sass test.scss

如果要将显示结果保存成文件,后面再跟一个.css文件名。

  sass test.scss test.css

SASS提供四个编译风格的选项:

  * nested:嵌套缩进的css代码,它是默认值。

  * expanded:没有缩进的、扩展的css代码。

  * compact:简洁格式的css代码。

  * compressed:压缩后的css代码。

生产环境当中,一般使用最后一个选项。

  sass --style compressed test.sass test.css

你也可以让SASS监听某个文件或目录,一旦源文件有变动,就自动生成编译后的版本。

  // watch a file

  sass --watch input.scss:output.css

  // watch a directory

  sass --watch app/sass:public/stylesheets

SASS的官方网站,提供了一个在线转换器。你可以在那里,试运行下面的各种例子。

三、基本用法

 变量

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

Sass源代码:

$blue:#1875e7;
div{
  color:$blue;
  }
  
  $side:left;
  /*asassdf*/
  .rounded{
    .round{
      border-#{$side}-radius:5px;
    }
    
  }
  
  /*计算能力*/
  $var:2;
  body{
    margin: (14px/2);
    top:50px + 100px;
    right:$var * 20%;
  }
  
  /*嵌套*/
  div h1{
    color:red;
  }
  
  /*也可以写成这样*/
  /*属性的嵌套必须要在属性后成加上冒号*/
  p{
    border:{
      color:red;
      
    }
  }
  /*关于注释:
    又斜杠是在css文件中是不显示的;
    C++方式注释的方法会留在CSS文件中;
  */
  
  /*继承*/
  .class1{
    margin:0 auto;
    border:1px solid #000;
  }
  .class2{
    @extend .class1;
    font-size:120%;
  }


/*Mixin 宏的使用*/
@mixin left{  //定义mixin宏
  float:left;
  margin-left:10px;
}

div{
  @include left;  //@include 用于引用minxin宏;
  
}

/*带参数的minxin宏*/
@mixin left($value:20px){
  float:left;
  margin-right:$value;
}
  
//使用带参数的mixin宏;
div{
  @include left(40px);
  
}
  
  
/*Sass高级语法*/
//@if 语句的使用;
p{
  @if 1 + 1 == 2{
    border:1px solid #000;
  }
  
  @if 3 < 2{
    border:2px solid #fff;
    
  }
}
//@else 语句的使用;
/*
@function linghtness($value){
  @return $value;
}
$color:20%;
@if linghtness($color) > 30%{
  background-color:#000;
}@else{
  background-color:#fff;
}*/

//for 语句的使用;
 @for $i from 1 to 5  {
   .itme-#{$i} {width:100px; height:100px; }
 }
 
 //while语句
 
 $i:6;
 
 @while $i > 0 {
   .itme-#{$i} {width: 2em * $i;}
   $i:$i - 2;
   
 }
 
 //each命令
 @each $member in a, b, c, d, f{
 
 .#{$member}{
    background-image:url("../images/#{$member}.jpg");
 }
 }

对应生成的CSS文件:

@charset "UTF-8";
div {
  color: #1875e7;
}

/*asassdf*/
.rounded .round {
  border-left-radius: 5px;
}

/*计算能力*/
body {
  margin: 7px;
  top: 150px;
  right: 40%;
}

/*嵌套*/
div h1 {
  color: red;
}

/*也可以写成这样*/
/*属性的嵌套必须要在属性后成加上冒号*/
p {
  border-color: red;
}

/*关于注释:
  又斜杠是在css文件中是不显示的;
  C++方式注释的方法会留在CSS文件中;
*/
/*继承*/
.class1, .class2 {
  margin: 0 auto;
  border: 1px solid #000;
}

.class2 {
  font-size: 120%;
}

/*Mixin 宏的使用*/
div {
  float: left;
  margin-left: 10px;
}

/*带参数的minxin宏*/
div {
  float: left;
  margin-right: 40px;
}

/*Sass高级语法*/
p {
  border: 1px solid #000;
}

/*
@function linghtness($value){
  @return $value;
}
$color:20%;
@if linghtness($color) > 30%{
  background-color:#000;
}@else{
  background-color:#fff;
}*/
.itme-1 {
  width: 100px;
  height: 100px;
}

.itme-2 {
  width: 100px;
  height: 100px;
}

.itme-3 {
  width: 100px;
  height: 100px;
}

.itme-4 {
  width: 100px;
  height: 100px;
}

.itme-6 {
  width: 12em;
}

.itme-4 {
  width: 8em;
}

.itme-2 {
  width: 4em;
}

.a {
  background-image: url("../images/a.jpg");
}

.b {
  background-image: url("../images/b.jpg");
}

.c {
  background-image: url("../images/c.jpg");
}

.d {
  background-image: url("../images/d.jpg");
}

.f {
  background-image: url("../images/f.jpg");
}
原文地址:https://www.cnblogs.com/flay/p/3867476.html