身爲切圖界的一員,或者說在前端界打滾了一段日子的你。會慢慢地發現。現在的css編寫已經不能知足本身的效率。css
假設有更強大的框架,讓你的css更靈活和更easy複用和維護,那該多好啊。很是明顯,這個早已經不是什麼新奇事,sass和less就是這麼2個很是優秀的樣式預處理器。能讓你的效率高速提升。接下來就談談它們。前端
樣式預處理器,簡單地來歸納就是技術大牛經過一門新的語言,讓css的編寫具有各類變量和屬性,你依照它的語法寫好後,就能編譯,生成對應的css文件。編程
固然這些處理器可以讓你的css更簡潔,易懂,具有更強的可移植性和維護性。瀏覽器
前端界裏面,譬如Sass、LESS、Stylus、Turbine、Swithch CSS、CSS Cacheer、DT CSS等都是上面所說的樣式預處理器。這裏不一一介紹,我僅僅說一下比較優秀的sass和less。sass
LESS提供變量、嵌套、混合、操做符、函數等通常編程所需的抽象機制。框架
LESS和Sass的主要不一樣就是他們的實現方式。LESS是基於JavaScript,是在client處理的。然而。Sass是基於Ruby的,是在server端處理的。less
很是多開發人員不會選擇LESS因爲JavaScript引擎需要額外的時間來處理代碼而後輸出改動過的CSS到瀏覽器。函數
但是LESS環境較Sass簡單。這也使得很多的童鞋選擇LESS。post
Sass使用「.scss」擴展名,而LESS使用「.less」擴展名。spa
$a: 14px; $b: #000; $C: solid .btn{ width: $a; border: 1px $C $b; }
@a: 14px; @b: #000; @C: solid .btn{ width: @a; border: 1px @C @b; }
body { padding: 5px; .head{ height: 10px; a { color: #000; &:hover { text-decoration: underline; } } } }
@mixin aq($borderWidth: 1px) { border: $borderWidth solid #F00; } .btn { padding: 5px; @include aq(2px); }在LESS裏面。
.aq($borderWidth: 1px) { border: $borderWidth solid #F00; } .btn { padding: 5px; .aq(2px); }
.a { margin: 10px 5px; padding: 2px; } .b{ @extend .a; border: 1px solid #000; }
.a { margin: 10px 5px; padding: 2px; } .b{ .a; border: 1px solid #000; }
invert($color); /* 返回$color的反相色 */ lighten($color, 50%); /* 返回的顏色在$color基礎上變亮50% */ saturate($color, 50%); /* 返回的顏色在$color基礎上飽和度添加50% */ desaturate($color, 50%); /* 返回的顏色在$color基礎上飽和度下降50% */ grayscale($color); /* 返回$color的灰度色*/ darken($color, 50%); /* 返回的顏色在$color基礎上變暗50% */
invert(@color); /* 返回@color的反相色 */ lighten(@color, 50%); /* 返回的顏色在@color基礎上變亮50% */ saturate(@color, 50%); /* 返回的顏色在@color基礎上飽和度添加50% */ desaturate(@color, 50%); /* 返回的顏色在@color基礎上飽和度下降50% */ grayscale(@color); /* 返回@color的灰度色*/ darken(@color, 50%); /* 返回的顏色在@color基礎上變暗50% */
.a{ padding: (100px/2); top: 10px + 100px; left: 100px - 50px; top: 10 * 10; }