Bootstrap定制(二)less基礎語法


前幾日花了一天去看less,這幾日在搗鼓其他東西,項目也在有序的進行中,今天花點時間整理下less的基礎語法,也分享實際中的一些經驗,與眾人共享。

 

本篇筆者以less的基礎語法着手,並配合bootstrap的邏輯結構給大家梳理下less的語法,方便以后實戰中快速開發。

 

1.變量

 

與許多后台編輯語法類似,less也有着自己的變量,不過less中的變量更確切來說是一種常量,一次賦值永不改變。

@font-size:14px;

p{font-size:@font-size}

-->p{font-size:14px}

 

前面說過,bootstrap源碼的variables.less文件定義了所有的變量,其他組件對應的less文件使用了其定義的變量,方面統一管理。

variables.less如下所示,假如我們想簡單的定制bootstrap,修改少許變量定義就可以了。

 

 

2.注釋

 

less的注釋與許多后台語言相同。

行注釋://xxxx

塊注釋:/*xxxx

              xxxx*/

 

3.導入

 

@import "xxx";

@import語法導入其他文件,如定義好的變量,bootstrap就充分的利用了這一點,我們來看bootstrap.less源碼。

 

bootstrap這個文件前面有說過,引入了所有的less文件,最后直接編譯這個文件即可。

 

看源碼就可以看出,首先引用的是variables.less,這是所有變量的定義。

其次引入mixins.less,mixins.less中又導入了所有的混合函數定義,這在后面的組件less中都有用到。

這就相當於c#等后台語言首先導入類庫一般。

 

4.混合

 

.border{

border:1px solid solid;

}

.header{

height:200px;

.border;

}

-->.header{

       border:1px solid solid;

       height:200px;

      }

 

混合的最大好處在於你不用一遍又一遍寫着重復的樣式了,可以隨便引用。

 

5.嵌套

 

.header{

  xxx;

  .header-body{

  xxx1;

  }

  .header-footer{

  xxx2;

  }

  &:hover{

  xxx3;

  }

}

-->

.header{xxx}

.header .header-body{xxx1}

.header .header-footer{xxx2}

.header:hover{xxx3}

聰明的大概可以看出來 '&'的作用了吧,&代表父選擇器,相當去jquery中的.parent()方法。

嵌套在bootstrap中隨處可見,下面是.btn 按鈕樣式的示例。

 

 

5.媒體查詢

 

bootstrap很成功很大一部分原因在於其對相應式的支持,而這離不開媒體查詢。

 

@media(min-width>768px){

ssss;

}

 

@media(min-width>970px){

ssss;

}

 

grid.less應對不同屏幕的混合屬性也有所不同。

如下圖所示。

 

6.函數

 

同所有編程語言相同的是,less也有着自己的函數庫。

 

例如:

darken(@color,@amout)//降低一定數值的色彩亮度

參數:

  • @color: 顏色對象(A color object)
  • @amount: 百分比 0-100%

返回值: 顏色(color)

 

例如bootstrap默認鏈接hover樣式是降低了15%的亮度。

如圖所示。

 

7.運算

 

任何數值,顏色和變量都可以進行運算。這里有一對示例:

@base: 5%;

@filler: @base * 2;//乘法

@other: @base + @filler;//加法

color: #888 / 4;//除法

background-color: @base-color + #111;

height: 100% / 2 + @filler;//綜合運算

 

less運算的另一個特點是可以自動推算出單位,這個是很多后台編程語言所沒有的特性,值得點贊。

@var: 1px + 5;

在這個例子中 Less 會在最終輸出結果中使用這個單位 -- 6px

 

bootstrap中一個典型的應用就是,各種屏幕終端設備寬度等於定義寬度+網格流寬度,而這個網格流寬度,則會當作左右內邊距來使用。

 

8.命名空間

 

#bundle {

  .button {

      display: block; border: 1px solid black; background-color: grey; &:hover { background-color: white }

  }

   .tab { ... }

   .citation { ... }

}

 

現在我們想在 #header a 中混合 .button 類。

一些同學是不是想到了前面說過的混合了呢,但是這里牽扯到命名空間問題,與c#等語言類庫中的方法相同,兩個類庫中可能定義這相同的方法,這個時候就要通過命名空間來區分了,說的又有點向java的打包了。

好吧,這個時候我們該這么去使用。

#header a {

  color: orange;

  #bundle > .button;

   }

 

9.作用域

 

這個相當於c#之類語言中的成員變量和局部變量了,熟悉之類語言的可以跳過這個知識點了。

@var: red;

#page {

  @var: white;

  #header {

     color: @var; // 這個時候#header 的color屬性是white

     }

 }

 

在bootstrap中常用的大概是1--7點,后面兩點有點雞肋。

當然這9點只是less最基礎的語法,如果想憑這些去定制比較好的bootstrap主題還是不夠的,但是基礎簡單的修改還是可以得心應手了。

晚上運動點有點大,天氣熱的很,熬到這個點有點小累了,所以有些例子用了官方的例子,抱歉。

預祝大家可以玩的愉快,學習的愉快。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM