SASS

sass

安装

  • install ruby
  • sudo gem install sass

    申明变量

    1
    2
    $value = 100px;
    $color = #fafafa;

编译

sass style.scss style.css

编译风格

1
2
3
4
5
* nested:嵌套缩进的css代码,它是默认值。
* expanded:没有缩进的、扩展的css代码。
* compact:简洁格式的css代码。
* compressed:压缩后的css代码。
sass --style compressed style.scss build.css

监听文件

1
2
3
4
// watch a file
sass --watch input.scss:output.css
// watch a directory
sass --watch app/sass:public/stylesheets

基本用法

直接使用变量

1
2
3
4
$color:#fafafa;
.div{
background:$color;
}

变量嵌套在字符串中,需要写在#{}

1
2
3
4
$side:left,
.border{
border-#{$side}-color:$color;
}

计算功能

1
2
3
4
//除法需要加括号
margin:(14px/2); //7px
left:15px + 14; //29px
width:$var * (1/3) * 1%; //33.3%

嵌套

  • 选择器嵌套
    1
    2
    3
    4
    5
    6
    7
    8
    .container{
    header{
    height:30px;
    }
    footer{
    display:block;
    }
    }
  • 属性嵌套
    1
    2
    3
    4
    5
    6
    7
    p{
    border:{//border后需加冒号
    width:2px;
    style:solid;
    color:$var;
    }
    }

代码复用

  • 继承
    1
    2
    3
    4
    5
    6
    7
    8
    .div1{
    width:20px;
    height:30px;
    }
    .div2{
    @extend .div1;
    background:#fafafa;
    }
  • Mixin
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    @mixin border{
    border-left:1px solid #233;
    }
    #box{
    @include border;
    }

    传递参数
    @mixin size($height:30px){
    display:inline-block;
    height:$height;
    width:100px;
    }
    #box{
    @include size(50px);
    }

导入外部文件

1
2
@import "path/style.scss"
@import "path/main.css"

条件语句

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
div{
@if 1<2 {
width:100%;
}
@if 1>5 {
width:50%;
}
}
main{
@if $width>100{
height:50px;
}@else{
height:20px;
}
}

循环语句

  • for
    1
    2
    3
    4
    5
    @for $i from 1 to 10{
    .box-#{ $i }{
    border:#{$i}px solid blue;
    }
    }
  • while
    1
    2
    3
    4
    5
    $i: 6;
    @while $i > 0 {
    .item-#{$i} { width: 2em * $i; }
    $i: $i - 1;
    }
  • each
    1
    2
    3
    4
    5
    @each $item in left,right,top,bottom{
    .box{
    border-#{$item}:1px solid #333;
    }
    }

自定义函数

1
2
3
4
5
6
@function setWidth($width:100px){
@return $width*2
}
.box{
width:setWidth(20px);
}
Author

Ludis

Posted on

2017-03-20

Updated on

2017-03-20

Licensed under

Comments