值得參考的10個LESSCSS例項

白展糖發表於2012-10-30

值得參考的 10 個 LESS CSS 例項

LESS, Sass 和其他 CSS 前處理器是一種超棒的方法用來擴充套件 CSS 功能,使之更適合程式設計師。你可以使用變數、函式、混合、繼承等多種程式設計常用方法來編寫 CSS,以更少的程式碼完成更多的樣式。

學習這些工具最好的方法是通過各種例項快速入門,今天我們向你介紹 10 個非常有用的使用 Less CSS 的例項。

使用 LESS

如果你還沒接觸過 LESS CSS ,可以閱讀下面兩篇文章:

我該如何使用這些例項

我建議是你直接可以把本文中的程式碼複製貼上到你的 .less 檔案。

可以讓你這些檔案獨立於你的專案,通過 “@import “starter.less” 來引入。

你還可以使用類似 Less.app, CodeKit 這樣的工具來將 LESS 編譯成 CSS 。

如果我使用的是 Sass

值得參考的 10 個 LESS CSS 例項

如果你更喜歡的是 Sass 而不是 LESS,沒問題,這兩個工具都很棒,它們的語法有一點不同,請看上圖。 

好了,不廢話了,我們開始本文的主題!

圓角

值得參考的 10 個 LESS CSS 例項

CSS3 一個非常基本的新屬性可以快速的生產圓角效果,如上圖所示。要使用 CSS3 的圓角效果我們必須針對不同的瀏覽器定義各自的字首,而如果使用了 LESS 就可以不用那麼麻煩。

1. 簡單的圓角半徑

我的第一個 LESS 程式碼是我最簡單的 LESS 程式碼之一,我需要設定圓角的半徑,而且我希望使用一個變數來調整這個半徑大小。

下面程式碼使用 mixin 技術,通過定義 .border-radius 並接收一個 radius 引數,該引數預設值是 5px,你可以在多個地方重複使用該 mixin 方法:

01 /* Mixin */
02 .border-radius (@radius: 5px) {
03     -webkit-border-radius: @radius;
04     -moz-border-radius: @radius;
05     border-radius: @radius;
06 }
07   
08 /* Implementation */
09 #somediv {
10     .border-radius(20px);
11 }

將這個 less 編譯成 css 後的結果是:

1 /* Compiled CSS */
2 #somediv {
3   -webkit-border-radius:
20px;
4   -moz-border-radius:
20px;
5   border-radius:
20px;
6 }

2. 四角的半徑定製

如果你希望使用者可自由定製四個角的半徑,那麼我們需要對上面程式碼做下改進。

使用4個變數分別代表四個邊角的半徑大小:

01 /* Mixin */
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;
06 }
07   
08 /* Implementation */
09 #somediv {
10     .border-radius-custom(20px,
20px, 0px,
0px);
11 }

編譯後的 CSS

1 /* Compiled CSS */
2 #somediv {
3   -webkit-border-radius:
20px 20px
0px
0px;
4   -moz-border-radius:
20px 20px
0px
0px;
5   border-radius:
20px 20px
0px
0px;
6 }

3. 方塊陰影 Box Shadow

值得參考的 10 個 LESS CSS 例項

另外一個 CSS3 經常用到的屬性是 box-shadow,該屬性也有不同瀏覽器的字首要求,而使用 LESS 的話可以這樣:

01 /* Mixin */
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);
06 }
07   
08 /* Implementation */
09 #somediv {
10     .box-shadow(5px,
5px, 6px,
0.3);
11 }

生成的 CSS:

1 /* Compiled CSS */
2 #somediv {
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);
6 }

4. 元素過渡效果 Transition

值得參考的 10 個 LESS CSS 例項

CSS3 的過渡使用起來更加麻煩,你必須最大化的支援各種瀏覽器,因此你需要定義 5 個字首:

01 /* Mixin */
02 .transition (@prop: all, @time:
1s, @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;
08 }
09   
10 /* Implementation */
11 #somediv {
12     .transition(all,
0.5s, ease-in);
13 }
14   
15 #somediv:hover {
16     opacity:
0;
17 }

轉換後的 CSS 程式碼:

01 /* Compiled CSS*/
02 #somediv {
03   -webkit-transition:
all 0.5s ease-in;
04   -moz-transition:
all 0.5s ease-in;
05   -o-transition:
all 0.5s ease-in;
06   -ms-transition:
all 0.5s ease-in;
07   transition:
all 0.5s ease-in;
08 }
09   
10 #somediv:hover {
11   opacity:
0;
12 }

5. 轉換/旋轉 Transform

值得參考的 10 個 LESS CSS 例項

你可以使用 CSS3 來對元素進行角度旋轉、縮放和傾斜等效果:

01 /* Mixin */
02 .transform (@rotate: 90deg, @scale:
1, @skew: 1deg, @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);
08 }
09   
10 /* Implementation */
11 #someDiv {
12     .transform(5deg,
0.5, 1deg,
0px);
13 }

生成的 CSS:

1 /* Compiled CSS*/
2 #someDiv {
3   -webkit-transform: rotate(5deg) scale(0.5) skew(1deg)
translate(
0px);
4   -moz-transform: rotate(5deg) scale(0.5) skew(1deg)
translate(
0px);
5   -o-transform: rotate(5deg) scale(0.5) skew(1deg)
translate(
0px);
6   -ms-transform: rotate(5deg) scale(0.5) skew(1deg)
translate(
0px);
7   transform: rotate(5deg) scale(0.5) skew(1deg)
translate(
0px);
8 }

顏色漸變 Gradients

值得參考的 10 個 LESS CSS 例項

漸變是 CSS3 最複雜的屬性之一,有上百萬中不同的設定組合,但我們常用的無非幾種。

6. 線性漸變 Linear Gradient

我們還是從最簡單的開始,實現兩個不同顏色之間的漸變,你可以定義開始顏色和最終顏色,這裡我們使用最新的漸變語法,瀏覽器的支援情況請看這裡

01 /* Mixin */
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);
09 }
10   
11 /* Implementation */
12 #someDiv {
13     .gradient(left,
#663333, #333333);
14 }

生成的 CSS

1 /* Compiled CSS */
2 #someDiv {
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);
9 }

7. 快速漸變 Quick Gradient

建立漸變最討厭的事情之一就是找出你的顏色。有時你只是想快速在現有顏色上做一些漸變效果。

這裡我們使用從透明開始到全黑的漸變效果,你需要設定的就是最初顏色已經透明度 alpha 值:

01 /* Mixin */
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));
08 }
09   
10 /* Implementation */
11 #somediv {
12     background-color: BADA55;
13     .quick-gradient(top,
0.2);
14 }

生成的 CSS:

1 /* Compiled CSS */
2 #somediv {
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 }

8. 映象效果 Webkit Reflection

值得參考的 10 個 LESS CSS 例項

CSS3 中的映象效果在瀏覽器都是普遍支援的。你需要做的就是設定長度和不透明度這兩個引數,很簡單:

01 /* Mixin */
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)));
06 }
07   
08 /* Implementation */
09 #somediv {
10     .reflect(20%,
0.2);
11 }

生成的 CSS:

1 /* Compiled CSS */
2   
3 #somediv {
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)));
5 }

顏色計算 Color Math

LESS 和 Sass 最獨特的功能就是顏色計算函式,你可以輕鬆使用 LESS 來建立各種調色盤,下面是兩個簡單的例子。

9. 互補色方案 Complementary Color Scheme

值得參考的 10 個 LESS CSS 例項

這裡我們使用一個基本色,然後通過彩色旋轉以及加亮和變暗方法擴充套件到5個不同色板。為了生成互補色,我們使用 spin 將顏色旋轉 180 度:

01 /* Mixin */
02 @base: #663333;
03 @complement1:
spin(@base, 180);
04 @complement2:
darken(spin(@base, 180),
5%);
05 @lighten1:
lighten(@base, 15%);
06 @lighten2:
lighten(@base, 30%);
07   
08 /* Implementation */
09 .one   {color: @base;}
10 .two   {color: @complement1;}
11 .three {color: @complement2;}
12 .four  {color: @lighten1;}
13 .five  {color: @lighten2;}

生成的 CSS:

1 /* Compiled CSS */
2 .one   {color:
#663333;}
3 .two   {color:
#336666;}
4 .three {color:
#2b5555;}
5 .four  {color:
#994d4d;}
6 .five  {color:
#bb7777;}

10. 顏色微調 Subtle Color Scheme

值得參考的 10 個 LESS CSS 例項

互補色很有用,但在網頁設計中另外一個更有用的就是顏色微調:

01 /* Mixin */
02 @base: #663333;
03 @lighter1:
lighten(spin(@base, 5),
10%);
04 @lighter2:
lighten(spin(@base, 10),
20%);
05 @darker1:
darken(spin(@base, -5),
10%);
06 @darker2:
darken(spin(@base, -10),
20%);
07   
08 /* Implementation */
09 .one   {color: @base;}
10 .two   {color: @lighter1;}
11 .three {color: @lighter2;}
12 .four  {color: @darker1;}
13 .five  {color: @darker2;}

生成的 CSS:

1 /* Compiled CSS */
2 .one   {color:
#663333;}
3 .two   {color:
#884a44;}
4 .three {color:
#aa6355;}
5 .four  {color:
#442225;}
6 .five  {color:
#442225;}

結論

到這裡我們這篇文章就結束了,主要的目的是講述使用 LESS 處理一些常用的 CSS3 處理效果。


相關文章