我有一個圖標精靈圖像,每個圖標在20乘20像素區域。每個圖標有幾個變體(黑色,彩色,白色小等)。並有相當數量的他們。我寧願在我的LESS文件中提供它們的名稱,而不是爲每個圖標編寫樣式,並讓處理器爲它們生成樣式。自動生成精靈圖標的較少樣式
這就是我想出的,但它似乎並沒有工作。
@icons: upvote,downvote,comment,new,notify,search,popup,eye,cross;
@array: ~`(function(i){ return (i + "").replace(/[\[\] ]/gi, "").split(","); })("@{icons}")`;
@count: ~`(function(i){ return i.split(",").length; })("@{icons}")`;
.iconize (@c) when (@c < @count) {
@val: ~`(function(a){ return a.replace(" ","").split(",")[0]; })("@{array}")`;
@array: ~`(function(a){ a = a.replace(" ","").split(","); a.splice(0, 1); return a; })("@{array}")`;
&[email protected]{val} { background-position: (-20px * @c) 0; }
&[email protected]{val} { background-position: (-20px * @c) -20px; }
&[email protected]{val} { background-position: (-20px * @c) -40px; }
.iconize(@c + 1);
}
.iconize(@c) when (@c = @count) {}
.iconize(0);
我想編輯的唯一的事情是@icons
變量,我只需輸入他們的名字。我正在使用Visual Studio 2013的Web Essentials插件來自動處理文件保存時的LESS文件。
我在做什麼錯?
是我的類嵌套在所以我需要'&'。並感謝這個解決方案,因爲它能夠完美地按照我的要求工作。我覺得很奇怪,雖然官方的LESS.org文檔沒有提及任何有關「長度」或「提取」功能的內容。有更好的文檔網站嗎? –
是的,更好的文檔正在處理中:https://github.com/less/less-docs(最新的[函數參考](https://github.com/less/less-docs/tree/) master/content/functions)) –
@Robert我更新了一個更聰明的'.iconize' arg處理示例,這樣每次使用'.iconize'時都不必重複'@icons'。 –