LESS, Sass 和其他 CSS 前處理器是一種超棒的方法用來擴充套件 CSS 功能,使之更適合程式設計師。你可以使用變數、函式、混合、繼承等多種程式設計常用方法來編寫 CSS,以更少的程式碼完成更多的樣式。
學習這些工具最好的方法是通過各種例項快速入門,今天我們向你介紹 10 個非常有用的使用 Less CSS 的例項。
使用 LESS
如果你還沒接觸過 LESS CSS ,可以閱讀下面兩篇文章:
我該如何使用這些例項
我建議是你直接可以把本文中的程式碼複製貼上到你的 .less 檔案。
可以讓你這些檔案獨立於你的專案,通過 “@import “starter.less” 來引入。
你還可以使用類似 Less.app, CodeKit 這樣的工具來將 LESS 編譯成 CSS 。
如果我使用的是 Sass
如果你更喜歡的是 Sass 而不是 LESS,沒問題,這兩個工具都很棒,它們的語法有一點不同,請看上圖。
好了,不廢話了,我們開始本文的主題!
圓角
CSS3 一個非常基本的新屬性可以快速的生產圓角效果,如上圖所示。要使用 CSS3 的圓角效果我們必須針對不同的瀏覽器定義各自的字首,而如果使用了 LESS 就可以不用那麼麻煩。
1. 簡單的圓角半徑
我的第一個 LESS 程式碼是我最簡單的 LESS 程式碼之一,我需要設定圓角的半徑,而且我希望使用一個變數來調整這個半徑大小。
下面程式碼使用 mixin 技術,通過定義 .border-radius 並接收一個 radius 引數,該引數預設值是 5px,你可以在多個地方重複使用該 mixin 方法:
02 |
.border-radius (@radius: 5px ) {
|
03 |
-webkit-border-radius: @radius;
|
04 |
-moz-border-radius: @radius;
|
05 |
border-radius: @radius;
|
將這個 less 編譯成 css 後的結果是:
3 |
-webkit-border-radius:
20px ;
|
4 |
-moz-border-radius:
20px ;
|
2. 四角的半徑定製
如果你希望使用者可自由定製四個角的半徑,那麼我們需要對上面程式碼做下改進。
使用4個變數分別代表四個邊角的半徑大小:
02 |
.border-radius-custom (@topleft: 5px , @topright:
5px , @bottomleft: 5px , @bottomright:
5px ) {
|
03 |
-webkit-border-radius: @topleft @topright @bottomright @bottomleft;
|
04 |
-moz-border-radius: @topleft @topright @bottomright @bottomleft;
|
05 |
border-radius: @topleft @topright @bottomright @bottomleft;
|
10 |
.border-radius-custom( 20px ,
20px , 0px ,
0px );
|
編譯後的 CSS
3 |
-webkit-border-radius:
20px 20px
0px 0px ;
|
4 |
-moz-border-radius:
20px 20px
0px 0px ;
|
5 |
border-radius:
20px 20px
0px 0px ;
|
3. 方塊陰影 Box Shadow
另外一個 CSS3 經常用到的屬性是 box-shadow,該屬性也有不同瀏覽器的字首要求,而使用 LESS 的話可以這樣:
02 |
.box-shadow (@x: 0px , @y:
3px , @blur: 5px , @alpha:
0.5 ) {
|
03 |
-webkit-box-shadow: @x @y @blur rgba( 0 ,
0 , 0 , @alpha);
|
04 |
-moz-box-shadow: @x @y @blur rgba( 0 ,
0 , 0 , @alpha);
|
05 |
box-shadow: @x @y @blur rgba( 0 ,
0 , 0 , @alpha);
|
10 |
.box-shadow( 5px ,
5px , 6px ,
0.3 );
|
生成的 CSS:
3 |
-webkit-box-shadow:
5px 5px
6px rgba( 0 ,
0 , 0 ,
0.3 );
|
4 |
-moz-box-shadow:
5px 5px
6px rgba( 0 ,
0 , 0 ,
0.3 );
|
5 |
box-shadow:
5px 5px
6px rgba( 0 ,
0 , 0 ,
0.3 );
|
4. 元素過渡效果 Transition
CSS3 的過渡使用起來更加麻煩,你必須最大化的支援各種瀏覽器,因此你需要定義 5 個字首:
02 |
.transition (@prop: all , @time:
1 s, @ease: linear) {
|
03 |
-webkit-transition: @prop @time @ease;
|
04 |
-moz-transition: @prop @time @ease;
|
05 |
-o-transition: @prop @time @ease;
|
06 |
-ms-transition: @prop @time @ease;
|
07 |
transition: @prop @time @ease;
|
12 |
.transition( all ,
0.5 s, ease-in);
|
轉換後的 CSS 程式碼:
03 |
-webkit-transition:
all 0.5 s ease-in;
|
04 |
-moz-transition:
all 0.5 s ease-in;
|
05 |
-o-transition:
all 0.5 s ease-in;
|
06 |
-ms-transition:
all 0.5 s ease-in;
|
07 |
transition:
all 0.5 s ease-in;
|
5. 轉換/旋轉 Transform
你可以使用 CSS3 來對元素進行角度旋轉、縮放和傾斜等效果:
02 |
.transform (@rotate: 90 deg, @scale:
1 , @skew: 1 deg, @translate:
10px ) {
|
03 |
-webkit-transform: rotate(@rotate) scale(@scale) skew(@skew) translate(@translate);
|
04 |
-moz-transform: rotate(@rotate) scale(@scale) skew(@skew) translate(@translate);
|
05 |
-o-transform: rotate(@rotate) scale(@scale) skew(@skew) translate(@translate);
|
06 |
-ms-transform: rotate(@rotate) scale(@scale) skew(@skew) translate(@translate);
|
07 |
transform: rotate(@rotate) scale(@scale) skew(@skew) translate(@translate);
|
12 |
.transform( 5 deg,
0.5 , 1 deg,
0px );
|
生成的 CSS:
3 |
-webkit-transform: rotate( 5 deg) scale( 0.5 ) skew( 1 deg)
translate( 0px );
|
4 |
-moz-transform: rotate( 5 deg) scale( 0.5 ) skew( 1 deg)
translate( 0px );
|
5 |
-o-transform: rotate( 5 deg) scale( 0.5 ) skew( 1 deg)
translate( 0px );
|
6 |
-ms-transform: rotate( 5 deg) scale( 0.5 ) skew( 1 deg)
translate( 0px );
|
7 |
transform: rotate( 5 deg) scale( 0.5 ) skew( 1 deg)
translate( 0px );
|
顏色漸變 Gradients
漸變是 CSS3 最複雜的屬性之一,有上百萬中不同的設定組合,但我們常用的無非幾種。
6. 線性漸變 Linear Gradient
我們還是從最簡單的開始,實現兩個不同顏色之間的漸變,你可以定義開始顏色和最終顏色,這裡我們使用最新的漸變語法,瀏覽器的支援情況請看這裡。
02 |
.gradient (@origin: left , @start:
#ffffff , @ stop :
#000000 ) {
|
03 |
background-color : @start;
|
04 |
background-image : -webkit-linear-gradient(@origin, @start, @stop);
|
05 |
background-image : -moz-linear-gradient(@origin, @start, @stop);
|
06 |
background-image : -o-linear-gradient(@origin, @start, @stop);
|
07 |
background-image : -ms-linear-gradient(@origin, @start, @stop);
|
08 |
background-image : linear-gradient(@origin, @start, @stop);
|
13 |
.gradient( left ,
#663333 , #333333 );
|
生成的 CSS
3 |
background-color :
#663333 ;
|
4 |
background-image : -webkit-linear-gradient( left ,
#663333 , #333333 );
|
5 |
background-image : -moz-linear-gradient( left ,
#663333 , #333333 );
|
6 |
background-image : -o-linear-gradient( left ,
#663333 , #333333 );
|
7 |
background-image : -ms-linear-gradient( left ,
#663333 , #333333 );
|
8 |
background-image : linear-gradient( left ,
#663333 , #333333 );
|
7. 快速漸變 Quick Gradient
建立漸變最討厭的事情之一就是找出你的顏色。有時你只是想快速在現有顏色上做一些漸變效果。
這裡我們使用從透明開始到全黑的漸變效果,你需要設定的就是最初顏色已經透明度 alpha 值:
02 |
.quick-gradient (@origin: left , @alpha:
0.2 ) {
|
03 |
background-image : -webkit-linear-gradient(@origin, rgba( 0 , 0 , 0 , 0.0 ),
rgba( 0 , 0 , 0 ,@alpha));
|
04 |
background-image : -moz-linear-gradient(@origin, rgba( 0 , 0 , 0 , 0.0 ),
rgba( 0 , 0 , 0 ,@alpha));
|
05 |
background-image : -o-linear-gradient(@origin, rgba( 0 , 0 , 0 , 0.0 ),
rgba( 0 , 0 , 0 ,@alpha));
|
06 |
background-image : -ms-linear-gradient(@origin, rgba( 0 , 0 , 0 , 0.0 ),
rgba( 0 , 0 , 0 ,@alpha));
|
07 |
background-image : linear-gradient(@origin, rgba( 0 , 0 , 0 , 0.0 ),
rgba( 0 , 0 , 0 ,@alpha));
|
12 |
background-color : BADA 55 ;
|
13 |
.quick-gradient( top ,
0.2 );
|
生成的 CSS:
3 |
background-image : -webkit-linear-gradient( top , rgba( 0 ,
0 , 0 ,
0 ), rgba( 0 ,
0 , 0 ,
0.2 ));
|
4 |
background-image : -moz-linear-gradient( top , rgba( 0 ,
0 , 0 ,
0 ), rgba( 0 ,
0 , 0 ,
0.2 ));
|
5 |
background-image : -o-linear-gradient( top , rgba( 0 ,
0 , 0 ,
0 ), rgba( 0 ,
0 , 0 ,
0.2 ));
|
6 |
background-image : -ms-linear-gradient( top , rgba( 0 ,
0 , 0 ,
0 ), rgba( 0 ,
0 , 0 ,
0.2 ));
|
7 |
background-image : linear-gradient( top , rgba( 0 ,
0 , 0 ,
0 ), rgba( 0 ,
0 , 0 ,
0.2 ));
|
8. 映象效果 Webkit Reflection
CSS3 中的映象效果在瀏覽器都是普遍支援的。你需要做的就是設定長度和不透明度這兩個引數,很簡單:
02 |
.reflect (@length: 50% , @opacity:
0.2 ){
|
03 |
-webkit-box-reflect:
below 0px
-webkit-gradient(linear,
left
top
,
|
04 |
left
bottom , from( transparent ),
|
05 |
color-stop(@length,
transparent ), to(rgba( 255 , 255 , 255 ,@opacity)));
|
生成的 CSS:
4 |
-webkit-box-reflect:
below 0px
-webkit-gradient(linear,
left
top
, left
bottom
, from( transparent ), color-stop( 20% ,
transparent ), to(rgba( 255 ,
255 , 255 ,
0.2 )));
|
顏色計算 Color Math
LESS 和 Sass 最獨特的功能就是顏色計算函式,你可以輕鬆使用 LESS 來建立各種調色盤,下面是兩個簡單的例子。
9. 互補色方案 Complementary Color Scheme
這裡我們使用一個基本色,然後通過彩色旋轉以及加亮和變暗方法擴充套件到5個不同色板。為了生成互補色,我們使用 spin 將顏色旋轉 180 度:
03 |
@complement 1:
spin(@base, 180 );
|
04 |
@complement 2:
darken(spin(@base, 180 ),
5% );
|
05 |
@lighten 1:
lighten(@base, 15% );
|
06 |
@lighten 2:
lighten(@base, 30% );
|
10 |
.two { color : @complement 1 ;}
|
11 |
.three { color : @complement 2 ;}
|
12 |
.four { color : @lighten 1 ;}
|
13 |
.five { color : @lighten 2 ;}
|
生成的 CSS:
4 |
.three { color :
#2b5555 ;}
|
5 |
.four { color :
#994d4d ;}
|
6 |
.five { color :
#bb7777 ;}
|
10. 顏色微調 Subtle Color Scheme
互補色很有用,但在網頁設計中另外一個更有用的就是顏色微調:
03 |
@lighter 1:
lighten(spin(@base, 5 ),
10% );
|
04 |
@lighter 2:
lighten(spin(@base, 10 ),
20% );
|
05 |
@darker 1:
darken(spin(@base, -5 ),
10% );
|
06 |
@darker 2:
darken(spin(@base, -10 ),
20% );
|
10 |
.two { color : @lighter 1 ;}
|
11 |
.three { color : @lighter 2 ;}
|
12 |
.four { color : @darker 1 ;}
|
13 |
.five { color : @darker 2 ;}
|
生成的 CSS:
4 |
.three { color :
#aa6355 ;}
|
5 |
.four { color :
#442225 ;}
|
6 |
.five { color :
#442225 ;}
|
結論
到這裡我們這篇文章就結束了,主要的目的是講述使用 LESS 處理一些常用的 CSS3 處理效果。