由於sass依賴於ruby環境,因此裝sass以前先確認裝了ruby。先導官網下載個rubycss
在安裝的時候,請勾選Add Ruby executables to your PATH這個選項,添加環境變量,否則之後使用編譯軟件的時候會提示找不到ruby環境html
而後直接在命令行中輸入git
gem install sass
按回車鍵確認,等待一段時間就會提示你sass安裝成功。最近由於牆的比較厲害,若是你沒有安裝成功,那麼請參考下面的淘寶的RubyGems鏡像安裝sass,若是成功則忽略。github
若是要安裝beta版本的,能夠在命令行中輸入web
gem install sass --pre
你還能夠從sass的Git repository來安裝,git的命令行爲gulp
git clone git://github.com/nex3/sass.git cd sass rake install
升級sass版本的命令行爲數組
gem update sass
查看sass版本的命令行爲瀏覽器
sass -v
你也能夠運行幫助命令行來查看你須要的命令sass
sass -h
gem sources
命令來配置源,先移除默認的
https://rubygems.org
源,而後添加淘寶的源
https://ruby.taobao.org/
,而後查看下當前使用的源是哪一個,若是是淘寶的,則表示能夠輸入sass安裝命令
gem install sass
了,關於經常使用gem source命令可參看:
經常使用的gem source
$ gem sources --remove https://rubygems.org/ $ gem sources -a https://ruby.taobao.org/ $ gem sources -l *** CURRENT SOURCES ***
https://ruby.taobao.org # 請確保只有 ruby.taobao.org $ gem install sass
gem sources --remove https://rubygems.org/ gem sources -a http://gems.ruby-china.org/ gem sources -l
sass test.scss
sass --watch test.scss:test.css
sass --watch sassFileDirectory:cssFileDirectory
$blue:#1875e7; div{color:$blue;}
$left:left; .rounded {border-#{$left}-radius:5px;}
!default
便可。 sass的默認變量通常是用來設置默認值,而後根據需求來覆蓋的,覆蓋的方式也很簡單,只須要在默認變量以前從新聲明下變量便可
nth($var,$index)
取值
$px: 5px 6px 8px 10px;//一維數組 $pxT: 10px 20px , 30px 40px;//二維數組 $trpx:(1px solid #eee ) (16px solid #aaa);//二維數組 .class8 { font-size: nth($px,3); } .class9 { border: nth($trpx,1); } .class10 { margin: nth($pxT,2); }
$map: (key1: value1, key2: value2, key3: value3);
。可經過map-get($map,$key)
取值。
$headings:(h1:2em,h2:1.5em,h3:1em); .class11 { font-size: map-get($headings,h2); } @each $heade , $size in $headings { #{$heade} { font-size: $size; } }
$var:10; body{margin:(14px/2);top:50px+100px;right:$var*10%;}
div{ color:$blue; h1 { color:red; } }
p { border:{ color:red; } } }
a { &:hover {color:red;} } #content aside { color: red;body.ie & { color: green }}
.container { h1, h2, h3 {margin-bottom: .8em} } nav, aside { a {color: blue} }
require 'sass/supports'
這一行,在下面一行添加Encoding.default_external = Encoding.find('utf-8')
標準的CSS註釋 /* comment */ ,會保留到編譯後的文件。ruby
單行註釋 // comment,只保留在SASS源文件中,編譯後被省略。
在/*後面加一個感嘆號,表示這是"重要註釋"。即便是壓縮模式編譯,也會保留這行註釋,一般能夠用於聲明版權信息。
/*! 重要註釋! */
.class1 { border: 1px solid #ddd; } .calss2 { @extend .class1; font-size: 20px; }
@mixin left { float: left; margin-left: 10px; }
.class3 { @include left; }
@mixin right($value:10px) { float: right; margin-right: $value; }
.class5 { @include right() }
.class4 { @include right(40px) }
@mixin rounded ($vert,$horz,$radius:10px) { border-#{$vert}-#{$horz}-radius:$radius; -moz-border-#{$vert}-#{$horz}-radius:$radius; -webkit-border-#{$vert}-#{$horz}-radius:$radius; } .nav { @include rounded(top,left) } .footer { @include rounded(top,left,5px) }
多組值參數mixin
$variables...
。
@mixin box-shadow ($shadow...) { -webkit-box-shadow:$shadow; box-shadow: $shadow; }
@mixin max-screen ($res) { @media only screen and (max-width: $res) { @content; } } @include max-screen(480px) { body {color:red;} }
lighten(#cc3, 10%) // #d6d65c darken(#cc3, 10%) // #a3a329 grayscale(#cc3) // #808080 complement(#cc3) // #33c
.class6 { @if 1+1 == 2 {color:red} @if 5 < 3 {color:blue}@else { background-color: #FFF } }
@for $var from <start> through <end>
和@for $var from <start> to <end>
。$i表示變量,start表示起始值,end表示結束值,這兩個的區別是關鍵字through表示包括end這個數,而to則不包括end這個數。
@for $i from 1 to 10 { .border-#{$i} { border: #{$i}px solid red; } }
$i:6; @while $i > 0 { .item-#{$i} {width:20px;} $i:$i - 2; }
@each $member in a,b,c,d { .#{$member} { background-image: url("/image/#{$member}.jpg"); } }
@function double($n) { @return $n * 2; } .class7 { width: double(5px); }
//單個選擇器跳出 .parent { color:red; @at-root .child { width: 100px; } } //多個選擇器跳出 .parent2 { color:blue; @at-root { .child1 {width: 100px;} .child2 {width: 200px;} } }
@at-root
只會跳出選擇器嵌套,而不能跳出@media
或@support
,若是要跳出這兩種,則需使用@at-root (without: media)
,@at-root (without: support)
//跳出父級元素嵌套 @media print { .parent2 { color: red; @at-root .child3 { color: blue; } } } //跳出media嵌套 父級有效 @media print4 { .parent4 { color: red; @at-root (without: media) { .child4 { width: 200px; } } } } //跳出media和父級 @media print5 { .parent5 { color:red; @at-root (without:all) { .child5{height: 200px;} } } }
.child6 { @at-root .parent6 & { height: 300px; } }
%
%
。這種選擇器的優點在於:若是不調用則不會有任何多餘的css文件,避免了之前在一些基礎的文件中預約義了不少基礎的樣式,而後實際應用中不論是否使用了
@extend
去繼承相應的樣式,都會解析出來全部的樣式。佔位選擇器以
%
標識定義,經過
@extend
調用。
%ir { color:transparent; text-shadow:none; background-color: transparent; border:0; } %clearfix { @if $ie7 { *zoom :1; } &:before, &:after { content: ""; display: table; font: 0/0; } &:after { clear: both; } } #header { width: 2100px; @extend %ir; } .ir { @extend %ir; }