1.安裝:
GFW攔了,Ruby可能裝不了
先清除原Ruby源,而後切換到淘寶源
gem install sass (有可能權限不夠,那就sudo)
國際慣例 -v查版本,看是否安裝成功。
2.兩種後綴
.scss和.sass
二者的區別在於
.sass是一開始用的語法後綴,縮進式,靠縮進區分代碼塊,相似Python(比較老)
.scss是v3.0後的新語法後綴,Sassy CSS,更貼合css的語法,靠{}區分代碼塊(更經常使用,優選)
exp:
sass:/ * 多行註釋 只要縮進就表明繼續 直到不縮進了,註釋結束
// 單行註釋也是這樣 只要縮進就是繼續
@import reset=des color:
// 單行註釋也跟css同樣// 每行註釋都須要「//」
@iixin des { mport 「reset」;@mcolor: 複製代碼
3.編譯sass
sass 1.scss:1.css
4.自動編譯
sass —watch 1.scss:1.css
也能夠自動編譯整個目錄
sass —watch scss目錄:css目錄
5.編譯有四種格式
nested:嵌套(缺省值,編譯後的一樣按照嵌套縮進)
compact:緊湊(全部聲明變成單行模式)
expanded:擴展(變成易讀模式,美化後的規範格式,一個聲明一行)
compressed:壓縮(去掉沒必要要的空格和換行變成壓縮模式.min)
sass —watch scss:css —style 格式
exp:sass —watch scss:css —style compact
6.變量
$light-color: #fff;
$light-border: 1px solid $light-color;
-和_雖然能夠混合使用($light-color == $light_color),但最好仍是統一
7.嵌套
.nav {
margin: 0;
padding: 0;
ul {
list-style: none;
li {
font-size: 16px;
font-weight: bold;
color: #777;
}
}
}
8.嵌套時調用父選擇器用&
.nav {
margin: 0;
li {
list-style: none;
a {
font-size: 16px;
&:hover {
color: #fff;
}
}
}
& &-item {
border: 1px solid #ddd;
}
}
9.屬性嵌套
.des {
font-size: 15px;
font-weight: bold;
font-family: "Microsoft YaHei";
border: 1px solid #f60;
border-left: none;
border-right: 0;
}
.des {
font: {
size: 15px;
weight: bold;
family: "Microsoft YaHei」;
}
border: 1px solid #f60 {
left: none;
right: 0;
}
}
10.@mixin(混合:定義好的可帶參數的樣式模塊)
@mixin content {
font-size: 16px;
.title {
color: #777;
}
.des {
font-size: 12px;
}
}
.news-content {
@include content;
color: #f60;
}
@mixin content($des-size:16px, $title-color:#666) {
font-size: 16px;
.title {
color: $title-color;
}
.des {
font-size: $des-size;
}
}
.news-content {
@include content();
color: #f60;
}
.news-content {
@include content(14px, #ddd);
color: #f60;
}
.news-content {
@include content($title-color:#777,$des-size:12px );
color: #f60;
}
11.@extend (繼承 or 擴展)
.des {
font-size: 14px;
}
.des a {
color: blue;
}
.content {
@extend .des;
color: #ddd;
.title {
font-size: 20px;
}
}
12.@import Partials
_reset.scss (partials的文件名要以_下劃線開頭,這樣會認爲該文件爲partials,就不會單獨的去編譯它)
body {
margin: 0;
padding: 0;
}
1.scss
@import "reset"
……
13.註釋
/*
* 多行註釋
* 與css的同樣
* 會在編譯輸出的css裏出現
* 但不會出如今壓縮模式下編譯輸出的css裏
*/
// 單行註釋與css的也同樣,不會出如今編譯輸出的css裏
/*!
* 強制註釋
* 就是多行註釋內容第一個字符以 ! 開頭
* 會一直在編譯輸出的css裏出現
*/
14.數據類型
函數:type-of()
有數字類型、字符串類型、列表類型、顏色類型
15.數字類型
可進行數學運算
但注意:1.乘法若是每一個乘數都有單位,那結果將帶有多個單位,因此請保證只有一個乘數有單位。
2.除法符號 / 由於在css中衝突,因此用 ( ) 將除法運算包起來
3.除法若是被除數和除數帶有相同的單位,則結果的單位會被抵消。
16.數字函數
abs() 絕對值(有單位帶單位,無單位就是純數字)
round() 四捨五入
ceil() 進位取整 ceil(5.1) // return 6
floor() 退位取整 floor(6.9) // return 6
percentage() 變成百分數 percentage(65px / 100px) // return 65%(請把單位抵消,或者都不帶單位,不然報錯)
min(1,2,3,5) // return 1
max(2,10,5,6) // return 10
17.字符串
"字符串類型"
""+abc = "abc"
123 + "abc" = "123abc"
mao-123 = "mao-123"
123/mao = "123/mao"
mao*123(報錯,字符串相乘是沒有意義的)
18.字符串函數
$str : "Hello"
to-upper-case($str) // 所有大寫
to-lower-case($str) // 所有小寫
str-length($str) // 返回字符串長度
str-index($str, "H") // 返回指定字符串的索引,從1開始計算
str-insert($str, "要插入的字符串內容", 要插入的起始位置索引,從1開始算)
19.顏色
16進制:#ff0000,#f00
rgb(255, 0, 0)
hsl(0, 100%, 50%) //色相、飽和度、明度
20.rgb & rgba
red green blue
red green blue alpha(不透明度 0 - 1,0徹底透明,1徹底不透明)
21.hsl & hsla
hue 色相 0 - 360°
s 飽和度 0 - 100
l 明度 0 - 100%
alpha(不透明度 0 - 1,0徹底透明,1徹底不透明)
22.顏色函數 adjust-hue()
調整色相
$hex-color: #f00
$hsl-color: hsl(0, 100, 50%)
background-color: adjust-hue($hex-color, 120deg) // deg角度,可加可不加
background-color: adjust-hue($hsl-color, -120deg) // 能夠是負數角度
23.顏色函數 lighten() 和 darken()(更亮和更暗)
$color: #def
lighten($color, 30%) // 提升30%明度
darken($color, 20%) // 下降20%明度
24.顏色函數 saturate() 和 desaturated()
$color: #cde
saturate($color, 50%) // 增長50%飽和度
desaturated($color, 20%) // 減小20%飽和度
25.顏色函數 opacify() 和 transparentize()
$color: hsla(120, 100%, 50%, .5);
opacify($color, .3) // 增長0.3不透明度 更不透明
transparentize($color, .2) // 減小0.2不透明度 更透明
26.List類型 列表類型
1px solid #ddd
0 auto
5px 3px 6px 5px
27.列表函數
$list:5px 10px 4px 8px;
$list2: 111px 222px;
length() // return 列表項數 length($list) return 4
nth() // return 列表指定項 nth($list, 3) return 4px
index() // return 指定列表項的索引 index($list, 4px) return 3
append() // return 追加列表項 append($list, 6px, auto) return 5px 10px 4px 8px 6px
第三個參數可選comma space auto
join() // return列表合併 join($list, $list2, comma) return 5px,10px,4px,8px,111px,222px
第三個參數可選comma space auto
28.Map類型 鍵值對
$map:(key1: val1, key2: val2);
$map2:(key3: val3, key4: val4);
$map3:(key1: val1, key2: val2, key3: val3, key4: val4)
29.Map函數
length() // return Map的鍵值對數量 length($map) return 2
map-get($map, key2) // return Map中指定鍵的值 return val2
map-keys($map) // return Map中的全部鍵 return (「key1", 「key2")
map-values($map) // return Map中的全部值 return (val1, val2)
map-has-key($map, key1) // return Map中是否存在指定鍵 return true
map-merge($map, $map2) // return Map合併 return (key1: val1, key2: val2, key3: val3, key4: val4)
map-remove($map, key2, key1) // return 去掉了指定項的Map return (key3: val3, key4: val4)
29.boolean 布爾值
5px > 10px // return false;
8px > 2px // return true;
>, <, <=, >=, ==
and, or, not
(5px > 3px) and (3px < 6px) // return true
(5px < 3px) or (3px < 6px) // return true
not (3px < 6px) // return false
30.Interpolation
變量模板用法 #{變量}
$ver: "1.0.0";
/* 項目當前版本是 #{$ver} */
31.@if 判斷
@if 條件 {
……
}@else if 條件2 {
……
}@else {
……
}
32.@for 循環
@for $var from <開始值> through/to <結束值> {
} // through 包含結束值,to不包含結束值
$j: 5;
@for $i from 1 through $j {
.col-#{$i} {
width: 100% / $j * $i;
}
} // 到5結束
@for $i from 1 to $j {
.col-#{$i} {
width: 100% / $j * $i;
}
} // 到4結束
33.@each 遍歷
@each $var in $list {
……
}
$status: success error warning;
@each $i in $status {
.icon-#{$i} {
background-image: url(../images/status/#{$i}.png);
}
}
34.@while
@while 條件 {
……
}
$i: 10;
@while $i > 0 {
.menu-item#{$i} {
width: 2px * $i;
}
$i: $i - 2;
}
35.@function 函數
@function 名字 (參數1, 參數2) {
……
}
$fontsize: (big: 24px, small: 12px);
@function size($map, $key) {
@return map-get($map, $key);
}
size($fontsize, big);
36.警告信息 error warning
@function size($map, $key) {
@if map-has-key($map, $key) {
@return map-get($map, $key);
} @else {
@warn "在 $map 中沒有找到 #{$key} 這個key";
}
}
@function size($map, $key) {
@if map-has-key($map, $key) {
@return map-get($map, $key);
} @else {
@error "在 $map 中沒有找到 #{$key} 這個key";
}
}