Less ~''真的是将null参数传递给较少的mixin的最佳方法吗?

Less ~''真的是将null参数传递给较少的mixin的最佳方法吗?,less,Less,我正在为较少的css创建一系列混音,其中我在媒体查询中使用了如下混音: .animal(@color: ~'', @imgWidth: ~'') { & when not (@color = ~'') { color: @color; } & when not (@imageMargin = ~'') { img { width: @imgWidth; }

我正在为较少的css创建一系列混音,其中我在媒体查询中使用了如下混音:

.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,实际上,编写示例的更简洁的方法是直接指定每个属性。而且,毕竟,所有这些条件都可以重写为每个属性一行。除了上面提到的,我还记得相关的讨论,我想它还有一些值得思考的地方。