我正在阅读LESS上的手册,这里有下面的示例:
It is legal to define multiple mixins with the same name and number of parameters. Less will use properties of all that can apply. If you used the mixin with one parameter e.g. .mixin(green);, then properties of all mixins with exactly one mandatory parameter will be used:
.mixin(@color) {
color-1: @color;
}
.mixin(@color; @padding:2) {
color-2: @color;
padding-2: @padding;
}
.mixin(@color; @padding; @margin: 2) {
color-3: @color;
padding-3: @padding;
margin: @margin @margin @margin @margin;
}
.some .selector div {
.mixin(#008000);
}compiles into:
.some .selector div {
color-1: #008000;
color-2: #008000;
padding-2: 2;
}我似乎无法理解选择属性背后的逻辑。谁能解释一下吗?
发布于 2014-08-15 13:06:15
引用较少的手册:
用相同的名称和参数数定义多个混频器是合法的。更少将使用所有可以应用的属性。如果您使用的是一个参数,例如.mixin(绿色);,那么将使用所有只有一个强制参数的混合器的属性。
键语句较少将使用可以应用的所有属性,然后使用所有与混合的属性,这正是一个强制参数。
在下面的示例中,输出包含在.mixin中指定的属性----一个参数以及带有的.mixin --两个参数,因为具有两个参数的.mixin对于第二个参数具有一个默认值(因此只需要一个强制参数)。
.mixin(@color; @padding:2) {
color-2: @color;
padding-2: @padding;
}因此,本质上,当第二个参数未在mixin call语句中指定时,仍然可以应用规则/属性,因为将使用默认值。如果您删除填充的默认值并使其如下所示,那么当mixin调用只有一个参数时,它将不会被应用。
.mixin(@color; @padding) {
color-2: @color;
padding-2: @padding;
}类似地,没有应用具有.mixin三参数的mixin,因为mixin调用只有一个参数,而且只有一个其他参数指定了默认值。因此,本质上,我们只有两个参数的值。
.mixin(@color; @padding; @margin: 2) {
color-3: @color;
padding-3: @padding;
margin: @margin @margin @margin @margin;
}发布于 2014-08-16 02:13:45
上面的“尼斯@Harry”回答的一个补充,也是一样的,但换句话说(我只是认为这个“紧凑”的表格对像我这样的“技术员”来说是最好的):
.mixin(@color) {...}只匹配传递了1参数的1调用。.mixin(@color; @padding: 2) {...}将.mixin调用与1或2参数匹配。.mixin(@color; @padding; @margin: 2) {...}将.mixin调用与2或3参数匹配。该示例中的.mixin(#008000);调用具有1参数,因此只调用第一和第二个混音定义(而不是第三个)。
https://stackoverflow.com/questions/25326071
复制相似问题