以下是一个简单的例子,演示了如何在 Mixin 中使用 Guards:
// 定义带有 Guard 的混合
.border-radius(@radius) when (@radius > 0) {
border-radius: @radius;
}
// 使用混合,传递参数
.my-element {
.border-radius(10px); // 生成有边框半径的样式
}
// 使用混合,不传递参数
.another-element {
.border-radius(0); // 不生成边框半径的样式
}
在这个例子中,.border-radius 混合带有一个 Guard when (@radius > 0),它表示只有当传递的半径大于 0 时,才会应用 border-radius 样式。这样,在使用 .border-radius 混合时,根据传递的参数,决定是否生成对应的样式。
Guards 可以使用任何 Less 表达式,并且可以与逻辑运算符一起使用,以实现更复杂的条件逻辑。
.my-mixin(@value) when (@value > 0) and (@value < 100) {
// 根据条件生成样式
}
.my-other-mixin(@size, @color) when (iscolor(@color)) {
// 根据颜色条件生成样式
}
在上述例子中,第一个混合使用 and 运算符来表示两个条件都必须满足,而第二个混合使用 iscolor() 函数检查参数是否是颜色。 Guards 提供了在混合中根据条件动态生成样式的强大工具。
转载请注明出处:http://www.zyzy.cn/article/detail/4296/Less