Ты рядом. Первая проблема - использование переменных. Вам нужно взглянуть на @arguments. Я не на 100% уверен в том, что вы пытаетесь выполнить (возможно, некоторый код для спрайтов), но позвольте мне привести вам пример:
.box-shadow (@x: 0, @y: 0, @blur: 1px, @color: #000) {
box-shadow: @arguments;
-moz-box-shadow: @arguments;
-webkit-box-shadow: @arguments;
}
.box-shadow(2px, 5px);
Вы устанавливаете свои переменные, а затем их значения по умолчанию, если они не указаны. Затем вы используете @arguments, чтобы поместить их в свой миксин. Так как это просто фоновое изображение, у вас будет только одно. Затем вы применяете этот миксин к определенному селектору.
Похоже, вы пытаетесь поместить миксины в селекторы для использования в качестве миксина, что невозможно. Вы также не можете поместить переменные в селекторы внутри селекторов по разным причинам. Наиболее важным является сфера применения. Переменные являются константами в LESS, поэтому после установки этой локальной глобальной переменной ее нельзя изменить.
Было бы проще сделать это так:
.sprite (@path: url(..), @loc1: 0, @loc2: 0, @repeat: no-repeat;) {
background: @arguments;
}
.foo {
.sprite('url(..)', -96px, -24px);
}
Должен вывести:
.foo {
background: url(..) -96px -24px no-repeat;
}
Имейте в виду, что вы не можете пропустить первый параметр в аргументах LESS, поэтому вам всегда нужно будет объявлять URL в этом примере.