I write my CSS with Lesscss using it on client side (with compiler less.js).
There are good examples for guards usage in documentation, but it don't work for me. I can't understand, why...
Code example goes here:
@import "common-functions.less";
// variables
@minHeaderWidth: auto;
@maxHeaderWidth: 1200px;
@minButtonsWidth: 50px;
@maxButtonsWidth: 75px;
// Mixins with guards
.applyHeaderStyles(@headerWidth, @buttonsWidth) when (ispixel(@headerWidth)) {
.my-headerElement {
width: @headerWidth;
}
}
.applyHeaderStyles(@headerWidth, @buttonsWidth) when not (ispixel(@headerWidth)) {
.my-headerElement {
width: @headerWidth;
margin: 0 @buttonsWidth;
}
}
// than I use .applyHeaderWidth in @media queries
@media screen and (min-width: 1050px) {
.applyHeaderStyles(@maxHeaderWidth, @maxButtonsWidth);
.my-buttonElement {width: @maxButtonsWidth;}
}
@media screen and (max-width: 1049px) {
.applyHeaderStyles(@minHeaderWidth, @minButtonsWidth);
.my-buttonElement {width: @minButtonsWidth;}
}
Code was writen by documentation. But it doesn't work. When I execute this code, I have Syntax Error:
Syntax Error on line 10 [link to my file] on line 10, column 58: 10 // Mixins with guards 11 .applyHeaderStyles(@headerWidth, @buttonsWidth) when (ispixel(@headerWidth)) { 12 .my-headerElement {
As mentioned here, updating to less.js 1.2.2 solves the problem.
From the changelog: