什么是Mixin
Less中,允許你將一個類嵌入到另一個類中,被嵌入的類也可以看作變量。換句話說,你可以用一個類定義樣式,然后把它當作變量,在另一個類中,只要引用變量的名字,就能使用它的所有屬性,
Less把這種特性稱作 mixin,中文把翻譯為“混入”或“混合”,其目的就是從現有的樣式中添加屬性。請看以下Less代碼:
.bordered {
border-top: dotted 1px black;
border-bottom: solid 2px black;
}
上述代碼中,.bordered 定義了一個屬性集。然后,在任何需要使用 .bordered 屬性集的選擇器中,只需像下面這樣調用就可以了:
#menu a {
color: #111;
.bordered;
}
.post a {
color: red;
.bordered;
}
這樣一來,.bordered中定義的屬性集,就會在 #menu a 和 .post a 中體現出來。編譯后的CSS代碼為:
.bordered {
border-top: dotted 1px black;
border-bottom: solid 2px black;
}
#menu a {
color: #111;
border-top: dotted 1px black;
border-bottom: solid 2px black;
}
.post a {
color: red;
border-top: dotted 1px black;
border-bottom: solid 2px black;
}
從上面的代碼可以看出:mixin 其實就是一種嵌套,簡單的講,mixin 就是規則級別的復用。除了類選擇器外,你也可以使用 id 選擇器來定義 mixin。如:
#bordered {
border-top: dotted 1px black;
border-bottom: solid 2px black;
}
#menu a {
color: #111;
#bordered;
}
編譯后的CSS代碼為:
#bordered {
border-top: dotted 1px black;
border-bottom: solid 2px black;
}
#menu a {
color: #111;
border-top: dotted 1px black;
border-bottom: solid 2px black;
}
從上面的代碼可以看出,使用 class、id 定義mixin 時,mixin的定義會被原封不動的輸出到編譯生成的CSS代碼中。
如果希望編譯生成的CSS代碼中不包含mixin的定義,在定義 mixin時,只需在 class、id 的后面添加一對小括號即可。而在調用時,小括號是可選的。如:
#x() {
border-top: dotted 1px black;
border-bottom: solid 2px black;
}
#menu a {
color: #111;
#x;
}
編譯后的CSS代碼為:
#menu a {
color: #111;
border-top: dotted 1px black;
border-bottom: solid 2px black;
}