首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >混合多个参数-如何选择属性?

混合多个参数-如何选择属性?
EN

Stack Overflow用户
提问于 2014-08-15 12:02:42
回答 2查看 93关注 0票数 1

我正在阅读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:

代码语言:javascript
复制
.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:

代码语言:javascript
复制
.some .selector div {
  color-1: #008000;
  color-2: #008000;
  padding-2: 2;
}

我似乎无法理解选择属性背后的逻辑。谁能解释一下吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-15 13:06:15

引用较少的手册:

用相同的名称和参数数定义多个混频器是合法的。更少将使用所有可以应用的属性。如果您使用的是一个参数,例如.mixin(绿色);,那么将使用所有只有一个强制参数的混合器的属性。

键语句较少将使用可以应用的所有属性,然后使用所有与混合的属性,这正是一个强制参数

在下面的示例中,输出包含在.mixin中指定的属性----一个参数以及带有.mixin --两个参数,因为具有两个参数的.mixin对于第二个参数具有一个默认值(因此只需要一个强制参数)。

代码语言:javascript
复制
.mixin(@color; @padding:2) {
  color-2: @color;
  padding-2: @padding;
}

因此,本质上,当第二个参数未在mixin call语句中指定时,仍然可以应用规则/属性,因为将使用默认值。如果您删除填充的默认值并使其如下所示,那么当mixin调用只有一个参数时,它将不会被应用。

代码语言:javascript
复制
.mixin(@color; @padding) {
  color-2: @color;
  padding-2: @padding;
}

类似地,没有应用具有.mixin三参数的mixin,因为mixin调用只有一个参数,而且只有一个其他参数指定了默认值。因此,本质上,我们只有两个参数的值。

代码语言:javascript
复制
.mixin(@color; @padding; @margin: 2) {
  color-3: @color;
  padding-3: @padding;
  margin: @margin @margin @margin @margin;
}
票数 2
EN

Stack Overflow用户

发布于 2014-08-16 02:13:45

上面的“尼斯@Harry”回答的一个补充,也是一样的,但换句话说(我只是认为这个“紧凑”的表格对像我这样的“技术员”来说是最好的):

  • .mixin(@color) {...}只匹配传递了1参数的1调用。
  • .mixin(@color; @padding: 2) {...}.mixin调用与12参数匹配。
  • .mixin(@color; @padding; @margin: 2) {...}.mixin调用与23参数匹配。

该示例中的.mixin(#008000);调用具有1参数,因此只调用第一和第二个混音定义(而不是第三个)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25326071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档