embeddable是一个自定义的LESS PHP函数,它返回一个布尔值。
当布尔函数返回true时,我可以使用LESS(lessphp)保护执行某些操作:
.my-mixin(@url) when(embeddable(@url)) {
background-color: #abc;
}
.smallClass {
.my-mixin('small.png');
}
它产生:
.smallClass {
background-color: #abc;
}
正如所料。
当不为真时(非操作员),我该怎么做。显而易见:
.my-mixin(@url) when(embeddable(@url)) {
background-color: #abc;
}
.my-mixin(@url) when(not(embeddable(@url))) {
background-color: #389;
}
.bigClass {
.my-mixin('big.png');
}
与使用它的块一起静默删除。注意,我保留了守卫的真实版本,所以如果谓词错误,应该使用真正的版本。然后我尝试了:
.my-mixin(@url) when(!embeddable(@url)) {
background-color: #389;
}
代替非版本。
mixin只保存在CSS中(而不是编译),尝试使用它的bigClass块仍然会被静默删除。
同样:
.my-mixin(@url) when(embeddable(@url) != true) {
background-color: #389;
}
答案 0 :(得分:5)
请注意以下not
版代码中的更改:
.my-mixin(@url) when (embeddable(@url)) {
background-color: #abc;
}
.my-mixin(@url) when not (embeddable(@url)) {
background-color: #389;
}
.bigClass {
.my-mixin('big.png');
}
根据lesscss.org site,“关键字true
是唯一的真值”,这可能有些令人困惑。在您的示例中,这意味着PHP函数需要返回值true
以获得true
mixin的命中,其他任何内容都将为false。如果您要传递1
(通常在编程语言中被认为是真的),或者即使您从示例'big.png'
传递它也不会匹配为true,因此以图形方式(就好像该值已经过去一样) ),这些是各种传递组合的结果:
.my-mixin('big.png') when (true) <-- evaluates to TRUE
.my-mixin('big.png') when (1) <-- evaluates to FALSE
.my-mixin('big.png') when ('big.png') <-- evaluates to FALSE (most confusing)
.my-mixin('big.png') when ('true') <-- evaluates to FALSE (as it is a string)
关于LESS这个“真实”方面的进一步讨论,请参阅this SO answer。