less 和 sass 是兩種 css 預編譯語言,其目的是爲了更快、更結構的編寫 css
文件,是一種強大的 css 編譯語言,能使用 變量、運算符、判斷、方法等等。css
本文我只寫一些本身經常使用的方法,要看所有的幫助文檔,參閱這裏: http://lesscss.cn/features/
寫一個 .btn
類並支持 :hover
:active
樣式git
CSSgithub
.btn { /* btn 初始樣式 */ } .btn:hover{ /* :hover 樣式 */ } .btn:active{ /* :active 樣式 */ }
Lessbootstrap
.btn{ // btn 初始樣式 &:hover{ // hover 樣式 } &:active{ // active 樣式 } }
能夠看出 less 的結構要比 css 清晰,而且寫的也要更少。
下面的 less 在使用中就會生成上面的 css。
而這還只是皮毛,保證你用過 less 以後就不會再用 css 寫樣式了。sass
less
是支持變量的,由於有了變量,讓 less
在改變全局樣式的時候更加方便了。
通常使用中,顏色是最經常使用的。其次是單位長度。less
@變量名: 變量值 // 如: // Colors @red: #CD594B; @yellow: #F8CE5E; @green: #4B9E65; @yellow: #5A8DEE; // Unites @btn-padding: 4px; @btn-lineheight: 26px;
實際使用中:函數
less學習
.btn-success { background-color: @green; line-height: @btn-lineheight; color: #fff; }
生成 cssspa
.btn-success { background-color: #4B9E65; line-height: 26px; color: #fff; }
能夠直接在其它類中插入其它類的內容。code
less
.bg-yellow { background-color: @yellow; } .btn-warn { line-height: @btn-lineheight; .bg-yellow; }
會生成 css
.bg-yellow { background-color: #F8CE5E; } .btn-warn { line-height: 26px; background-color: #F8CE5E; }
less 支持 +
-
*
/
( )
運算,看例子
@width-20: 20px; @count: 3; @per-10: 10%; .card{ width: @width-20 * @count; min-width: @per-10 * 7; } // 注意,運算的時候,要在運算符兩邊留空格,由於可能會有橫線鏈接的變量,形成混淆。 // 單位 less 能夠自動識別,不用擔憂單位。
輸出
.card{ width: 60px; min-width: 70%; }
參閱 : http://lesscss.cn/functions/#...
完整的函數有:雜項函數
、字符串函數
、 列表函數
、 數學函數
、類型函數
、顏色定義函數
、顏色通道函數
、顏色操做函數
、顏色混合函數
這裏只說一此關於顏色的經常使用方法,由於其它的我如今也沒怎麼用到。
lighten(顏色, 百分比) // 調高顏色的亮度 darden(顏色, 百分比) // 調低顏色的亮度 saturate(顏色, 百分比) // 調高飽和度 desaturate(顏色, 百分比) // 調低飽和度
@green: #4B9E65; .green{ background-color: @green; } .green-lighten{ background-color: lighten(@green,20%); } .green-darken{ background-color: darken(@green,20%); } .green-saturate{ background-color: saturate(@green,20%); } .green-desaturate{ background-color: desaturate(@green,20%); }
輸出
.green { background-color: #4B9E65; } .green-lighten { background-color: #88c79c; } .green-darken { background-color: #2a5939; } .green-saturate { background-color: #34b55c; } .green-desaturate { background-color: #62876e; }
有時候,好比,你須要寫一個按鈕類 .btn-success
, .btn-danger
, .btn-default
, .btn-warning
,若是單個定義的話,會很麻煩,如今用了方法,就能夠直接填參數完成了。
less
@green: #4B9E65; @blue: #5A8DEE; @yellow: #F8CE5E; @red: #CD594B; .btn-template(@bgcolor,@fcolor:white){ // 定義了兩個參數,第二個參數有默認值 // 也就是說這個方法能夠值一個或兩個參數 // 另外 帶 () 參數的方法不會把自身渲染到 css 中,只有調用纔會渲染 color: @fcolor; border-color: darken(@bgcolor, 3%); background-color: @bgcolor; &:hover { color: @fcolor; background-color: darken(@bgcolor, 5%); } &:active { color: @fcolor; background-color: darken(@bgcolor, 10%); } } .btn-success{ .btn-template(@green) } .btn-primary{ .btn-template(@blue) } .btn-warning{ .btn-template(@yellow) } .btn-danger{ .btn-template(@red) }
上面的 less 輸出爲下面的內容,有沒有很厲害
.btn-success { color: white; border-color: #46945e; background-color: #4B9E65; } .btn-success:hover { color: white; background-color: #438d5a; } .btn-success:active { color: white; background-color: #3b7b4f; } .btn-primary { color: white; border-color: #4c83ed; background-color: #5A8DEE; } .btn-primary:hover { color: white; background-color: #437dec; } .btn-primary:active { color: white; background-color: #2c6de9; } .btn-warning { color: white; border-color: #f7ca4f; background-color: #F8CE5E; } .btn-warning:hover { color: white; background-color: #f7c746; } .btn-warning:active { color: white; background-color: #f6bf2d; } .btn-danger { color: white; border-color: #ca4e3f; background-color: #CD594B; } .btn-danger:hover { color: white; background-color: #c74737; } .btn-danger:active { color: white; background-color: #b34032; }
像 js 和其它高級開發語言同樣, less 也能夠引用外部的 less 文件
引用格式:
@import "variables.less"
這樣就把外部的 variables.less
引入到當前文件中了
variables.less
// colors @green: #4B9E65; @blue: #5A8DEE; @yellow: #F8CE5E; @red: #CD594B; // units @common-height: 30px; @input-height: 26px; @input-padding: 4px;
主體less文件
@import "variables.less" // 主文件裏面就能夠引用 variables.less 中的變量了。
就是去看 bootstrap 3.4 的樣式源碼,bootstrap 3.4 就是用 less
寫的,這也是我後來用 less
沒用 sass
的主要緣由。
下載 bootstrap 3.4 的 less 源碼,看裏面怎麼寫的,進步很快的。
是我孤陋寡聞了,原來 bootstarp 4 已經換做 SCSS 了,我也要轉向 SCSS 了,學習完了再來分享給你們。
點這裏去 github 查看 【 Bootstrap 分支 】 ,目前好像已經開始 v5.0
的開發了。