У меня есть изображение спрайтов значков с каждым значком в области 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}")`;
&.@{val} { background-position: (-20px * @c) 0; }
&.color.@{val} { background-position: (-20px * @c) -20px; }
&.white.@{val} { background-position: (-20px * @c) -40px; }
.iconize(@c + 1);
}
.iconize(@c) when (@c = @count) {}
.iconize(0);
Единственное, что я хотел бы изменить, это переменную @icons
, где я просто ввожу их имена. И я использую надстройку Web Essentials для Visual Studio 2013, чтобы автоматически обрабатывать мой файл LESS при сохранении файла.
Что я делаю не так?