我不知道本質上具有應用/循環mixin的所有參數的功能,但是有很多選項可以解決這個問題。
您可以將自定義JavaScript函數添加到您想要的更少的塊。 Here is a link to a nice reference for custom functions。
但你也可以只建立一個小的循環中少:
// for loop
.for(@l,@obg,@i:1) when (@l > @i) {
@nbg: `@{url}[@{i}]`;
@bg: ~"@{obg}, @{nbg} @{rest}";
.for(@l, @bg, @i + 1);
}
// multiple background urls + additional bg properties
.bgmixin(@url, @rest){
@num: unit(`@{url}.length`);
@bg: ~`@{url}[0]` @rest;
.for(@num, @bg);
background: ~"@{bg}";
}
// defining bg urls
@url: 'url("../img/war_top_baner_gp.png")', 'url("../img/war_header_bg.png")';
// including the bgmixin in .class
.class{
.bgmixin(@url, center top no-repeat transparent);
}
,輸出是
.class {
background: url("../img/war_top_baner_gp.png") center top no-repeat transparent,
url("../img/war_header_bg.png") center top no-repeat transparent;
}
如果我理解你的權利,這是你想要的。
編輯:我只是想在這裏補充一點,我在這裏的想法是要發現實際上是循環/通過數組元素遞歸一個更通用的解決方案,它可以很容易地與各自的圖像使用不同的屬性 - 所以你給這個函數提供了一個url數組和其他屬性數組。在這裏,我會盡力來說明這個想法:
.for(@l,@obg,@i:1) when (@l > @i) {
@nbg: `@{url}[@{i}]`; @nattr: `@{attr}[@{i}]`;;
@bg: "@{obg}, @{nbg} @{nattr}";
.for(@l, @bg, @i + 1);
}
.bgmixin(@url, @attr){
@num: unit(`@{url}.length`);
@bg: ~`@{url}[0]` ~`@{attr}[0]`;
.for(@num, @bg);
background: ~"@{bg}";
}
@urls: "url('../img/centered_image_bg.png')", "url('../img/left_image_bg.png')";
@attr: "center top no-repeat transparent", "left top y-repeat";
.class{
.bgmixin(@urls, @attr);
}
和輸出看起來就像這樣:
.class {
background: url('../img/centered_image_bg.png') center top no-repeat transparent,
url('../img/left_image_bg.png') left top y-repeat;
}
你實際發送'URL( '/../ IMG/war_header_bg.png')'爲'@ position_horizontal'值。作爲一名Sass用戶,我通常會添加圓括號以消除不明確性:'@include background_centered((url('../ img/war_top_baner_gp.png'),url('../ img/war_header_bg.png'))); '。我不確定LESS會做什麼。 – cimmanon 2013-03-14 15:29:10
我試着與我有語法錯誤:( – Lukas 2013-03-14 15:32:03
看到我的答案,它採用簡單的LESS語法解決了 – 2013-10-11 08:16:27