Less與Sass是css的預處理技術
而CoffeeScript、TypeScript則是javascript的預處理技術。
一、Less
Less是一種動態樣式語言,是一門css預處理語言,擴充套件了css語言,增加了變數,運算,巢狀等一系列功能
1.1 變數
語法:@變數名:變數值;
存在作用域:區域性作用域>全域性作用域
以@開頭,後面輸入變數名.
例項:
@color:red;
@size:18px;
.div{
background-color:@color;
font-size:@size;
...
}
//翻譯後
.div{
background-color:red;
font-size:@size;
...
}
1.2 混入
定義一個函式,寫入引數值,可呼叫
內建變數@arguments代表所有引數(執行時)的值
相當於一個模板,將模板引入,再寫入引數即可使用
如:
.circle(@width:100px,@color:red,@height:100px){
width:@width;
color:red;
height:100px;
font-size:18px;
}
.c1{
.circle(); //不帶引數引入
.circle(200px,blue)//帶兩個引數
.circle
...
}
//翻譯後
.c1{
width:100px;
//帶引數為: width:200px;
color:red;
//帶引數為: color:blue;
height:100px;
font-size:18px;
}
1.3 巢狀
允許將多個選擇器巢狀在一起,
&表示當前選擇器的父選擇器
例:
.cor{
color:red;
.ten{font-size:12px;}
&#sub{width:100px;}
}
//翻譯後
.cor{
color:red;
}
.cor .ten{
font-size:12px;
}
.cor#sub{
width:100px;
}
1.4 運算
less擁有強大的運算能力,針對數字,顏色,變數的操作,支援加、減、乘、除或更復雜的綜合運算!
例:
@file:5%;
@base-color:lightblue;
.cor{
width:@file * 10; //50%
background-color: @base-color + #111;
}
1.5 繼承
讓一個樣式繼承另一個樣式
例:
.cor{
width:100px;
color:red;
}
.cor2{
&:extend(.cor);
font-size:15px;
}
.cor3{
&:extend(.cor);
}
//翻譯後
.cor,
.cor2,
.cor3{
width:100px;
color:red;
}
.cor2{
font-size:15px;
}
1.6 作用域
區域性作用域>全域性作用域
同一級變數,後者會覆蓋前者
例:
@name:30px;
.cor{
@name:20px;
font-size:@name; //20px
}
@name:18px
.cor2{
font-size:@name; //18px
}
1.7 迴圈
在Less中,可以呼叫本身
例:
.cor(@name) when (@name > 0){
.cor((@name - 1))
width:(@name * 10px);
}
.ten{
.cor(3);
}
//翻譯後
.ten{
width:10px;
width:20px;
width:30px;
}
二、Sass
2.1 變數
使用符號:$識別符號
<!--定義變數-->
$width:1000px;
$height:500px;
.box{
width:$width;
height:$height;
}
2.2 巢狀
略,與less相同
2.3 匯入
@import
reset.scss 檔案
$width:900px;
$color:blue;
*{
background-color:$color;
width:$width;
}
scss程式碼
@import "reset"
.box{
width:200px;
}
<!--翻譯後-->
*{
background-color:$color;
width:$width;
}
.box{
width:200px;
}
2.4 mixin 混入
sass中用mixin定義一些程式碼段,可傳引數,
定義時用@mixin
呼叫時用@include
例:
@mixin cir($size:100px,$color:red,$px:14px){
width:$size;
background-color:$color;
font-size:$px;
}
.cls{
@include cir();<!--呼叫-->
@include cir(150px);
@include cir(150px,blue,20px);
}
翻譯後
.cls{
width:100px;
background-color:red;
font-size:14px;
------------------------
width:150px;
background-color:red;
font-size:14px;
------------------------
width:150px;
background-color:blue;
font-size:20px;
}
2.5 繼承/擴充套件
通過@extend來實現程式碼組合
例:
.state{
background-color:red;
}
.state2{
@extend .state
background-color:blue;
font-size:12px;
}
翻譯後
.state,.state2{
background-color:red;
}
.state2{
background-color:blue;
font-size:12px;
}
2.6 sass運算
sass可以進行復雜的運算
2.7 函式
sass集成了大量的顏色函式,讓變換顏色更加簡單
例:
$pcolor:#999ccc;
.cls:hover{
darken:黑暗
background-color:darken($pcolor,15%);
<!--變暗15%-->
lighten:照亮
background-color:lighten($pcolor,15%);
<!--變亮15%-->
}
2.8 流程控制
sass中擁有流程控制語句,如:if,for,while,each等
例:
/*如果i是3的倍數,則下劃線*/
@if $i%3==0 {
text-decoration: underline;
}