2013-06-05 5 views
2

В LESS я пытаюсь определить набор правил button.c2, который будет применяться к элементам <button class="c2">...</button>. Этот набор правил в основном основан на наборе правил button.c1. Тем не менее, следующий код производит ParseError:МЕНЬШЕ: mixin with non-class ruleset

button.c2 { 
    button.c1;// Trying to import a ruleset 
    ... // additional rules, such as font-size: 120%; 
} 

мне кажется, что ParseError вызвано тем, что импортируемый набор правила не относятся к классу или ID («button.c1» не начинается с «.» или «#»). От LESS documentation:

Any CSS class or id ruleset can be mixed-in that way.

Почему такое ограничение? Есть ли способ обойти это?

ответ

4

Ограничение может быть только простота синтаксического анализа, так как . или # не отображаются в качестве первого символа нормального правила стиля анализатор автоматически знает, что те должны быть смешаны.

Вы могли обойти это определяя .c1 как примесь и использовать его как для button с:

.c1() { 
    // c1 rules 
} 

button.c1 { 
    .c1; 
} 

button.c2 { 
    .c1; 
    // additional rules 
} 

Однако, приходя в LESS 1.4.0 являются :extend селекторы, которые будут позволяют делать то, что вы хотите. Синтаксис:

button.c2:extend(button.c1) { 
    // additional rules 
} 
+0

К сожалению, я не могу изменить определение файла, содержащего набор правил button.c1. –

+0

@ RégisB. Боюсь, вам пока что не повезло. Я редактировал свой пост, чтобы включить информацию о предстоящем LESS 1.4.0, который должен решить вашу проблему. – freejosh

+0

Хорошо: пока невозможно, но это будет возможно в будущем. Я согласен! –

Смежные вопросы