less語法全解及sass簡介

1.less簡介及less環境搭建,首先寫less語法前不得不提下sass,之前不了解less和sass之前,這兩個東西困擾了我好久,這兩個到底是有什么區別呢,其實less和sass都是一種動態樣式語言,但是sass運行在服務器端,sass需要ruby環境(ruby和Python一樣是服務器腳本語言),less是客戶端和服務器端都可以用,less可以運行在Node、瀏覽器和Rhino平臺上,less的運行需要node環境,其他的就是語法有點不太一樣,less是@,而sass是$。

2.用javascript的思維看less會更好理解,下面貼上less語法的代碼截圖,下面的截圖代碼均是lees代碼,想要看編譯后的css代碼需要自己編輯器查看下,截圖代碼每個less語法都有示例代碼,認真看都能看懂:

1.首先新建less文件,例如:demo.less,然后在編輯器中打開,首先當我們想要導入其它less文件的時候,我們可以直接@import ?'base';其中base為base.less文件,默認的導入less文件可以省去less格式,我們也可以導入css文件,PHP文件,見下圖代碼示例:

thy

2.less變量的聲明:我們可以直接使用@background:#fff; ?@color:#e53fac;來聲明兩個項目經常要用到的背景顏色和字體顏色,這樣我們就可以在項目任何地方使用這兩個顏色,當要更改項目風格的時候我們可以直接更改這兩個變量就可以全部更改項目的背景色和字體顏色,示例見下圖。

thy

注意:上面的變量引用時還可以進行加減乘除,例如color:@color+28,一樣是正確的

3.less變量的靈活性,感覺當成js會更好理解,你可以把它當做變量在傳遞,見下圖示例,上代碼:

thy

4.less變量的妙用:當我們的項目圖片都在一個文件夾時,我們定義一個圖片路徑變量,調用時只寫一個圖片名,以后圖片換地址了,直接換基礎路徑,所有的圖片路徑都會被更換完成,但是注意這里的路徑是less文件為起點,而不是引用less文件的html文件為起點。話不多說,上代碼容易理解:

thy

5.less變量連續使用,感覺像是連續傳值,不知道用處大不大,??,上代碼:

thy

注意上面:less內部代碼使用&來表示自己,上面的&:after就是box:after。

6.less變量的作用域,less和js一樣有全局變量和局部變量,上代碼演示:

就近原則的less變量

7.less函數的使用,當我們寫圓角,陰影,透明度的時候不可避免的會寫成下面的樣子,如果每個用到的地方都這樣寫也太麻煩了,下面先看css的寫法,以圓角為例:

css的圓角兼容寫法

下面看看less的寫法及調用,less可以直接編譯成三種兼容的css寫法,省去了自己寫不少兼容的代碼:

less編寫兼容性代碼

下面是box-shadow和text-shadow的示例:

box-shadow和text-shadow

8.less的選擇器:

less樣式內部用&表示自己

9.less樣式嵌套書寫,例如,當我們有一個div.box里面嵌套了一個div.box1里面div.box2, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?如:<div ?class='box'><div class='box1'><div class='box2'></div></div></div>那么我們在書寫less時候寫box2的樣式就不用.box .box1 .box2{}這樣來寫,less可以讓我們直接以層級結構的形式來嵌套著書寫我們的樣式,更能直觀的表達界面的結構,如下圖:

層層嵌套的less樣式寫法

10.less樣式的引用,假如你上面寫了一樣的樣式的,下面又要用到怎么辦,less提供了一種簡寫的方式,只需要.class上面那個樣式的類名,就把他的樣式直接都拿過來了,非常方便。例如:

less樣式的引用

11.less的判斷句:什么?你沒看錯,less也可以做判斷是否讓某個樣式顯示出來,寫js呢?不管有多大用,感覺很強大有沒有,如果我們定義了一個開關來控制樣式,那么只有我們的開關為true時,樣式才會起效,例如,下面我們聲明了一個全局變量@toggle:true;然后我們在樣式表里面做判斷,只有當@toggle:true時代碼才會生效,見代碼:

less的判斷句

12.less的extend,就是less的繼承,可以通過extend來繼承其他class的樣式,例如:下面的兩個class里面有兩個color,需要注意的是這兩個樣式的順序會對結果產生影響,見下圖:

less的繼承
less的繼承

注意上面繼承樣式的順序,不同的順序會產生不同的結果。

3.差不多上面的less語法代碼示例已經足夠滿足我們日常的項目的需要了,但是上面寫的也不過是less經常要用的功能,更多的less用法參見less中文官網

******下面是和上面一樣的內容,只不過是文字敘述,可以不看,文字畢竟沒有代碼來的直接,下面僅用作記錄而已。

1.less變量篇:

less變量-背景色:在less文件中聲明變量@background:red;下面使用時: ? ? ? ? ? ? ? ? .box{background:@background;},這樣非常適合一個網站的背景,當改動網站背景時只需改動上面的變量,網站的背景就會被更改完成

less變量-字體顏色:@color:#000;使用:.box{color:@color;},也可以在使用時執行加減乘除運算,例:.box{color:@color + 111;},css輸出:.box{color:#111;}

less變量-靈活性:@a:color;當我們定義了一個變量@a時,還可以這樣用:.box{@a:red;background-@a:#000}

less變量-妙用less變量:1.當做class使用:@bg:box;下面使用的時候我們就可以直接.@{bg}{ };輸出:.box{ }; ?2.當做路徑使用,如:@picturePath:"../img/",那么當我們把項目圖片都放到img文件夾的時候就不用每次填寫長長的路徑,示例:.@{bg}{background:url("@{picturePath}baby.jpg")},輸出:.box{background:url("../img/baby.jpg")};只需要寫一個圖片名就可以了,有沒有方便了一點,但是注意:此處的變量@picturePath是less文件所在的文件夾為起點,不是html文件的起點位置

less-變量-連續用:@str:"123",@number:"str";使用示例:content:@@number;輸出:content:"123"

less變量作用域:less的變量也有作用域的區別:當在一個樣式里面定義了@color變量的時候,他會使用就近的@color變量,而不是全局的@color變量。

2.less函數篇:

*圓角:當我們寫一些圓角,陰影,透明度這些的時候,免不了寫一些兼容性的代碼,如:.box{border-redius:100%;-webkit-border-redius:100%;-moz-border-redius:100%;},這樣寫起來不僅麻煩,也繁瑣,我們就可以利用less函數來寫成下面這樣:.borderRadius(@borderRadius:100%){border-redius:@borderRadius;-webkit-border-redius:@borderRadius;-moz-border-redius:@borderRadius;};@borderRadius也可以寫成:@arguments,這樣我們下面就可以這樣調用? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? .box{ .borderRadius;}? /? .box{ .borderRadius();}? .box{ .borderRadius(50%);}? ? .box{ .borderRadius(10px 20px 30px 40px);},如果傳遞了參數,按照傳入的參數來,如果沒有傳遞參數,默認是我們寫好的100%;這樣只需一個函數名,我們就完成了同個樣式加前綴寫三遍的問題。

*陰影:.boxShadow(@boxShadow:0? 2px? 3px? rgba(0,0,0,0.9)){box-shadow:@boxShadow;-webkit-box-shadow:@boxShadow;-moz-box-shadow:@boxShadow;},當我們的網站主題風格文本和div都有陰影的時候,這個非常有用,調用時和上面的圓角一樣,參數我們已經設好了默認,也可以自己傳,傳的參數就和box-shadow的官方參數一樣,相似的還有文本陰影textShadow。

3.less選擇器篇:當我們寫代碼 a{? &:hover{ background:red } };這樣選擇到的是a元素,輸出a:hover{ background:red },當我們寫.div{ &_a{color:red}? &_b{color:blue} },編譯后:.div_a{color:red};.div_b{color:blue},

4.less擴展篇: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?①less的嵌套規則:.box{ ? .box1{ ?.box2{} ?} ?},加入我們最外層一個div類名是box,里面套一個div類名是div1,div1里面套了一個div,類名是div2,那么我們再寫樣式的時候就可以直接嵌套著這樣一直寫下去。

②less樣式引用,如果我們定義了兩個樣式:.box{background:red},.box1{color:red; .box},示例了在box1中引用box的樣式背景顏色。注意如果需要.box里面元素的樣式的話需要寫成.box1{color:red; ?.box > .boxChild;}

③less的判斷句:如果我們聲明了一個變量@toggle:true;那么我們也可以寫:.box when(@toggle ?= true){color:red},那么只有當toggle為true時字體顏色才是紅色的,這非常適合某些樣式只有偶爾用的時候,我們可以就這樣加個開關,這個我們好像再寫js啊

④:less的extend。當我們寫了樣式.content1{color:red},.content2{ &:extend(.content1);color:blue};這樣,content2的字體顏色也會變成red,自己的color:blue會被覆蓋 但是如果我們把content1的樣式放在content2樣式下面的話,content2的字體顏色就是是自己的顏色blue,不會被覆蓋。

⑤:less的導入:我們可以在一個less文件中導入另一個less文件,例如:@import? "less文件名",可以這樣:@import? "less"? /? @import? "less.less"? /? @import? "less.css"? /? @import? "less.php",導入的less帶不帶擴展名都可以,對,你沒有看錯,還可以將PHP文件導入進來,導入也有好多參數可選,有興趣可以查看less官網或者less中文官網,或者bootstrap官網,因為bootstrap也對less進行了翻譯。

注意:導入文件的時候不可避免的會產生問題,如:我們在文件中定義了變量@color,導入進來的文件里面也有變量@color,那么起作用的是當前文件的變量@color,而不是導入文件的@color。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,247評論 6 543
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,520評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,362評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,805評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,541評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,896評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,887評論 3 447
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,062評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,608評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,356評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,555評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,077評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,769評論 3 349
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,175評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,489評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,289評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,516評論 2 379

推薦閱讀更多精彩內容

  • 簡介 CSS(層疊樣式表)是一門歷史悠久的標記性語言,同 HTML 一道,被廣泛應用于萬維網(World Wide...
    老夫的天閱讀 1,968評論 1 29
  • 再談CSS 預處理器2016-09-09 Justineo JavaScript轉自:http://efe.bai...
    抓住時間的尾巴吧閱讀 1,593評論 0 2
  • 基礎 聲明變量 普通變量 默認變量 變量覆蓋:只需要在默認變量之前重新聲明下變量即可 變量的調用 局部變量和全局變...
    Jill1231閱讀 1,306評論 0 1
  • 先安利我最近看的一部電視劇吧:《雞毛飛上天》,講浙江義烏小商品市場怎么發展起來的故事,以小積大呀,所以我們的基礎一...
    Iris_mao閱讀 611評論 0 6
  • 文|語深 當那月色沉淀著大海, 我會,我會悄悄離開。 帶著那片薄薄的云霧, 帶著碎夢,夜的蒼白。 背影默默遮住歸路...
    語深212閱讀 484評論 0 8