Je cherche une sorte de déclaration if pour contrôler le background-color
de différents div
éléments.
J'ai essayé le ci-dessous, mais ça ne compile pas
@debug: true;
header {
background-color: (yellow) when (@debug = true);
#title {
background-color: (orange) when (@debug = true);
}
}
article {
background-color: (red) when (@debug = true);
}
LESS a expressions de garde pour les mixins, pas les attributs individuels.
Donc, vous créez un mixin comme ceci:
.debug(@debug) when (@debug = true) {
header {
background-color: yellow;
#title {
background-color: orange;
}
}
article {
background-color: red;
}
}
Et allumez-le ou éteignez-le en appelant .debug(true);
ou .debug(false)
(ou ne l'appelant pas du tout).
Il existe un moyen d'utiliser des gardes pour des attributs individuels (ou multiples).
@debug: true;
header {
/* guard for attribute */
& when (@debug = true) {
background-color: yellow;
}
/* guard for nested class */
#title when (@debug = true) {
background-color: orange;
}
}
/* guard for class */
article when (@debug = true) {
background-color: red;
}
/* and when debug is off: */
article when not (@debug = true) {
background-color: green;
}
... et avec moins de 1,7; compile pour:
header {
background-color: yellow;
}
header #title {
background-color: orange;
}
article {
background-color: red;
}
Je suis tombé sur la même question et j'ai trouvé une solution.
D'abord, assurez-vous de mettre à niveau au moins 1.6. Vous pouvez utiliser npm
pour ce cas.
Maintenant, vous pouvez utiliser le mixin suivant:
.if (@condition, @property, @value) when (@condition = true){
@{property}: @value;
}
Depuis LESS 1.6, vous pouvez également transmettre les noms de propriété à Mixins. Ainsi, par exemple, vous pouvez simplement utiliser:
.myHeadline {
.if(@include-lineHeight, line-height, '35px');
}
Si @ include-lineheight est résolu en true LESS affichera le line-height: 35px
et il ignorera le mixin si @ include-lineheight n’est pas vrai.
J'ai écrit un mixin pour du sucre syntaxique;)
Peut-être que quelqu'un aime cette façon d'écrire si-alors-sinon mieux que d'utiliser des gardes
dépend de Moins 1.7.0
https://github.com/pixelass/more-or-less/blob/master/less/fn/_if.less
.if(isnumber(2), {
.-then(){
log {
isnumber: true;
}
}
.-else(){
log {
isnumber: false;
}
}
});
.if(lightness(#fff) gt (20% * 2), {
.-then(){
log {
is-light: true;
}
}
});
en utilisant l'exemple ci-dessus
.if(@debug, {
.-then(){
header {
background-color: yellow;
#title {
background-color: orange;
}
}
article {
background-color: red;
}
}
});