RainMEN
@RainMEN
HTML/STYLUS/JADE/JS/Laravel/Joomla/DLE и т.д.

Как на LESS указать несколько значений CSS свойства?

Добрый день!

В общем, суть вопроса такова: Есть код

.b-shadow (@type:0, @x: 0, @y: 0, @blur: 0, @color: #fff) when (@type=0) {
    box-shadow: @x @y @blur @color;
    -moz-box-shadow: @x @y @blur @color;
    -webkit-box-shadow: @x @y @blur @color;
    filter: progid:DXImageTransform.Microsoft.dropshadow(offX=@x, offY=@y, color=@color);
  }
  .b-shadow (@type, @x: 0, @y: 0, @blur: 0, @color: #fff) when (@type = inset){
    box-shadow: @arguments;
    -moz-box-shadow: @arguments;
    -webkit-box-shadow: @arguments;
  }


Тут вроде все понятно, но есть одно но. А если у блока не 1 тень а 2, как быть?

Записать подряд не получится, потому что последняя запись затрет предыдущую.
Использовать якобы функцию "+", тоже не помогает, так как я пишу код:

.b-shadow(0, 0, 5px, 0, #51bad7);
    box-shadow+: 0 10px 15px rgba(0,0,0,0.2);

Естественно, предварительно добавив "+" перед описанием значений:

.b-shadow (@type:0, @x: 0, @y: 0, @blur: 0, @color: #fff) when (@type=0) {
    box-shadow+: @x @y @blur @color;
    -moz-box-shadow+: @x @y @blur @color;
    -webkit-box-shadow+: @x @y @blur @color;
    filter: progid:DXImageTransform.Microsoft.dropshadow(offX=@x, offY=@y, color=@color);
  }
  .b-shadow (@type, @x: 0, @y: 0, @blur: 0, @color: #fff) when (@type = inset){
    box-shadow+: @arguments;
    -moz-box-shadow+: @arguments;
    -webkit-box-shadow+: @arguments;
  }


в итоге получаю:
box-shadow: 0 5px 0 #51bad7, 0 10px 15px rgba(0, 0, 0, 0.2);
  -moz-box-shadow: 0 5px 0 #51bad7;
  -webkit-box-shadow: 0 5px 0 #51bad7;


Почему вторая тень не добавляется с свойствам с префиком?
И как вообще решать такие вопросы?

Хотел написать функцию, чтобы сперва собирать @arg, а потом подставлять его в свойства, но что-то не могу найти, как складывать строки в документации.
  • Вопрос задан
  • 2618 просмотров
Решения вопроса 1
DeLaVega
@DeLaVega
Верстаю, фронтэндю =)
Лично я делаю это чутка иначе.

.shadow (@shadow) {
	-webkit-box-shadow: @shadow;
	   -moz-box-shadow: @shadow;
			box-shadow: @shadow;
}


При таком виде можно ставить сколько угодно теней

.class1 { .shadow(~"1px 2px red, inset 5px 5px green");}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
RainMEN
@RainMEN Автор вопроса
HTML/STYLUS/JADE/JS/Laravel/Joomla/DLE и т.д.
Спасибо!
Сам не подумал что можно сразу передавать все аргументы в виде строки.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы