LESS的語法特性

以下內容是我在學習和研究LESS時,對LESS的特性、重點和注意事項的提取、精練和總結,可以做為LESS特性的字典,方便大家查閱;

注意:
本文采用ABNF語法范式來描述語法規(guī)則,對于不熟悉ABNF語法范式的同學,可以參考《語法格式描述規(guī)范BNF和ABNF

1. 變量

定義:

變量的定義 = “@”<變量名>“:”[變量值]“;”
變量名::= 標識符
變量值::= 任意類型

使用:

變量的使用 = “@”<變量名表達式>
變量名表達式 = 變量名 | 變量的使用

2. 字符串插值

字符串插值 = “@{”<變量名>“}”

3. 作用域

  • LESS中的作用域是塊級作用域;
  • LESS編譯器在查找標識符時,首先會從當前作用域中查找標識符(如:變量或者混合模塊),如果沒找到的話則會去父級作用域中查找,以此類推,直到找到為止;
  • 變量的定義會被提升至該變量所在作用的頂部;所以,變量可以先使用后定義;

4. LESS樣式規(guī)則

定義:

LESS樣式規(guī)則::= 由LESS特性擴展的CSS樣式規(guī)則
CSS樣式規(guī)則 = <選擇器列表> “{” [CSS屬性列表] “}”
CSS屬性列表 = {CSS屬性的定義}
CSS屬性的定義 = <CSS屬性名>“:”<屬性值>";"

5. 混合

定義:

混合的定義 = <單個選擇器> [“(” [參數(shù)列表] “)”] “{” [屬性列表] “}”
參數(shù)列表 = {參數(shù)項}
單個選擇器 = class選擇器 | id選擇器 | 屬性選擇器
屬性列表 = { 屬性項 }
屬性項 = css屬性的定義 | LESS樣式規(guī)則

使用:

混合的使用 = <單個選擇器>[“(” [入?yún)?shù)列表] “)”]“;”

效果:
混合的使用 會被替換成 混合的定義 中的 屬性列表;

特性:

  • 不參數(shù)的混合的定義會被編譯成相應的css;
  • 帶參數(shù)的混合的定義不會被編譯成相應的css;
  • 參數(shù)項可以是具體的值;如果參數(shù)項是具體的值,則在使用該混合時,只有傳入的參數(shù)的值與該具體值相匹配時,該混合才會生效;這個特性就是Less的模式匹配;

6. JavaScript表達式

調用JavaScript表達式 = “`”[JavaScript表達式]“`”

7. 注釋

注釋 = 單行注釋 | 多行注釋
單行注釋 = “//”[注釋內容]
多行注釋 = “/*”[注釋內容]“*/”

注意:
在編譯成 CSS 后,單行注釋會被刪除;

8. 不編譯語法

不編譯語法 = ‘~“’ [不需編譯的內容] ‘”’

9. 引導

引導用來指定Less規(guī)則生效的條件,相當于條件語句的功能;
語法:

引導表達式 = when 條件列表
條件列表 = {<邏輯關系> <條件項> }
條件項 = "(" <條件表達式> ")"
邏輯關系 = “,” | "and" | "not"

取值:
邏輯關系的取值:

逗號 ,  表示邏輯或
and 表示 邏輯與
not 表殼邏輯非

條件表達式可用的比較運算符有:> < = >= =<
關鍵字true只表示布爾真值,除去關鍵字true以外的值都被視示布爾假;

10. 模式匹配

在定義帶參數(shù)的混合時,參數(shù)項可以是具體的值;如果參數(shù)項是具體的值,則在使用該混合時,只有傳入的參數(shù)的值與該具體值相匹配時,該混合才會生效;

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容