1. 程式人生 > >Less語法學習-未完待續

Less語法學習-未完待續

Less語法學習

Less 是一門 CSS 預處理語言,它擴充套件了 CSS 語言,增加了變數、Mixin、函式等特性,使 CSS 更易維護和擴充套件。Less 可以執行在 Node 或瀏覽器端。

變數

說明:宣告變數的時候,使用@開頭,並且對於宣告的變數,可以進行運算。注意:變數實際上是“常量”,因為它們只能定義一次。舉例如下:

@nice-blue: #5B83AD;
@light-blue: @nice-blue + #111;

#header {
  color: @light-blue;
}

輸出:

#header {
  color: #6c94be;
}

混入

Mixins是一種將一組屬性從一個規則集包含(“混入”)到另一個規則集中的方法。

.bordered {
  border-top: dotted 1px black;
  border-bottom: solid 2px black;
}

我們希望在其他規則集中使用這些屬性。好吧,我們只需要刪除我們想要屬性的類的名稱。

#menu a {
  color: #111;
  .bordered;
}

.post a {
  color: red;
  .bordered;
}

巢狀規則

Less使您能夠使用巢狀代替或與級聯結合使用。另外,將偽選擇器與mixin捆綁在一起。經典的clearfix hack,重寫為mixin(&

代表當前的選擇器父級):

#header {
  color: black;
  .navigation {
    font-size: 12px;
  }
  .logo {
    width: 300px;
  }
}

轉化後:

#header {
  color: black;
}
#header .navigation {
  font-size: 12px;
}
#header .logo {
  width: 300px;
}

與偽選擇器結合使用,舉例:

.clearfix {
  display: block;
  zoom: 1;

  &:after {
    content: " ";
    display: block;
    font-size: 0;
    height: 0;
    clear: both;
    visibility: hidden;
  }
}

巢狀指令和冒泡

media或keyframe可以以與選擇器相同的方式巢狀指令。指令位於頂部,相對於同一規則集內其他元素的相對順序保持不變。這叫做冒泡。
有條件的指令,例如@Media,@supports也@document有選擇器複製到他們的身體:
個人通俗理解:選擇器(.screen-color)寫在最外面,內部的@media巢狀可以理解為 “&” ,即 and 。

.screen-color {
  @media screen {
    color: green;
    @media (min-width: 768px) {
      color: red;
    }
  }
  @media tv {
    color: black;
  }
}

轉化後:

@media screen {
  .screen-color {
    color: green;
  }
}
@media screen and (min-width: 768px) {
  .screen-color {
    color: red;
  }
}
@media tv {
  .screen-color {
    color: black;
  }
}

其餘非條件指令,例如font-face或keyframes,被冒泡了。他們的身體沒有改變:

#a {
  color: blue;
  @font-face {
    src: made-up-url;
  }
  padding: 2 2 2 2;
}

轉化後:

#a {
  color: blue;
}
@font-face {
  src: made-up-url;
}
#a {
  padding: 2 2 2 2;
}

操作

算術運算+,-,*,/可以在任意數量,顏色或可變的操作。如果可能,數學運算會考慮單位並在新增,減去或比較數字之前轉換數字。結果最左邊是明確說明的單位型別。如果轉換不可能或沒有意義,則忽略單位。不可能轉換的示例:px到cm或rad到%。

功能

Less提供了各種功能,可以轉換顏色,操縱字串和進行數學運算。它們完全記錄在函式參考中。
示例:使用百分比將0.5%轉換為50%,將基色的飽和度增加5%,然後將背景顏色設定為減輕25%並旋轉8度的顏色:

@base: #f04615;
@width: 0.5;

.class {
  width: percentage(@width); // returns `50%`
  color: saturate(@base, 5%);
  background-color: spin(lighten(@base, 25%), 8);
}

名稱空間和訪問器(暫不理解)

範圍(暫不理解)

評論(暫不理解)

輸入

匯入工作幾乎與預期一致。您可以匯入.less檔案,其中的所有變數都可用。可以選擇為.less檔案指定副檔名。

@import "library"; // library.less
@import "typo.css";

可變插值

變數可控制CSS規則中的值,也可在其他地方使用,例如選擇器名稱,屬性名稱,URL和@import語句。

   選擇

// Variables
@my-selector: banner;

// Usage
[email protected]{my-selector} {
  font-weight: bold;
  line-height: 40px;
  margin: 0 auto;
}

轉化為:

.banner {
  font-weight: bold;
  line-height: 40px;
  margin: 0 auto;
}

  網址

// Variables
@images: "../img";

// Usage
body {
  color: #444;
  background: url("@{images}/white-sand.png");
}

匯入語句

// Variables
@themes: "../../src/themes";
// Usage
@import "@{themes}/tidal-wave.less";

屬性

@property: color;

.widget {
  @{property}: #0ee;
  [email protected]{property}: #999;
}

變數名稱

使用變數定義變數

@fnord:  "I am fnord.";
@var:    "fnord";
content: @@var;
// 輸出結果為content: "I am fnord.";

延遲載入(咱不理解)

預設變數

預設變數的請求 - 只有在尚未設定變數時才能設定變數。此功能不是必需的,因為您可以通過後面的定義輕鬆覆蓋變數。這可以正常工作,因為延遲載入 - 基色被覆蓋,深色是深紅色。

// library
@base-color: green;
@dark-color: darken(@base-color, 10%);
// use of library
@import "library.less";
@base-color: red;