Less ~''真的是将null参数传递给较少的mixin的最佳方法吗?
我正在为较少的css创建一系列混音,其中我在媒体查询中使用了如下混音:Less ~''真的是将null参数传递给较少的mixin的最佳方法吗?,less,Less,我正在为较少的css创建一系列混音,其中我在媒体查询中使用了如下混音: .animal(@color: ~'', @imgWidth: ~'') { & when not (@color = ~'') { color: @color; } & when not (@imageMargin = ~'') { img { width: @imgWidth; }
.animal(@color: ~'', @imgWidth: ~'')
{
& when not (@color = ~'')
{
color: @color;
}
& when not (@imageMargin = ~'')
{
img
{
width: @imgWidth;
}
}
}
正如您所看到的,参数默认为~然后我只在传入实值时输出属性。这允许我在未传入任何内容时从上一个媒体查询中“继承”:
@media screen and (min-width: 20em)
{
.cat(@color: red, @imgWidth: 3em);
.tiger(@color: blue, @imgWidth: 5em);
}
@media screen and (min-width: 20em)
{
.cat(@imgWidth: 5em);
.tiger(@imgWidth: 7em);
}
对于第二个媒体查询,不需要重新设置颜色,只需设置@imgWidth参数即可。因此,在输出CSS中不包括它
这很好,但非常麻烦。这确实是执行可选参数的唯一方法,如果未提供,则应忽略这些可选参数。为什么当参数为空时,输出的参数更少?是否有禁用此功能的设置?在您的示例中,实际的默认值并不重要,因此它可以是除有意义的CSS值以外的任何值,例如null、undefined、whatever、foobarbaz等。但是,我在CSS中都可以看到。它是gzip的,所以这并不重要,但我只是很惊讶,似乎没有其他方法比显式地为每个属性写一个when更有效。另外,当我预先改进css的人看到我的css时,我希望它看起来漂亮:-我想让它保持原样,然后运行一些优化空值的缩小器,这些值不应该进入css,除非你真的需要颜色:;或颜色;说到为每个属性显式地编写一个when,实际上,编写示例的更简洁的方法是直接指定每个属性。而且,毕竟,所有这些条件都可以重写为每个属性一行。除了上面提到的,我还记得相关的讨论,我想它还有一些值得思考的地方。