美文网首页
Less 05 参数混入(Parametric Mixins)

Less 05 参数混入(Parametric Mixins)

作者: Sommouns | 来源:发表于2019-10-04 12:36 被阅读0次

目录:

Less 01 准备工作
Less 02 变量(Variable)
Less 03 扩展(Extend)
Less 04 混入(Mixins)
Less 05 参数混入(Parametric Mixins)
Less 06 方法混入 (Mixins as Functions)
Less 07 CssRules 直接混入(Passing Rulesets to Mixins)
Less 08 导入(Import)
Less 09 守卫(Guards)
Less 10 其他操作(完结)

Parametric Mixins

Mixins 同时也可以通过传入参数,来mixin
例如:

.border-radius(@radius) {
  -webkit-border-radius: @radius;
     -moz-border-radius: @radius;
          border-radius: @radius;
}

#header {
  .border-radius(4px);
}
.button {
  .border-radius(6px);
}

当然也可以像js函数那样,给个默认值

.border-radius(@radius: 5px) {
  -webkit-border-radius: @radius;
     -moz-border-radius: @radius;
          border-radius: @radius;
}
#header {
  .border-radius;
}

多个参数

分割参数可以使用,或者;,官方推荐使用分号,因为逗号有两种意思,一种是css的分割符,另一种是mixin的参数分割符,多个mixins也可以用用一个名字,并且如果条件允许都会全部匹配

.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);
}

编译结果

.some .selector div {
  color-1: #008000;
  color-2: #008000;
  padding-2: 2;
}

为什么没有color-3

因为当匹配到@padding的时候,不存在,所以不会继续下去了

命名参数

参数的传递,如果直接通过名字去设置,那就可以不用按照之前那样,按照的一定的顺序去传递了

.mixin(@color: black; @margin: 10px; @padding: 20px) {
  color: @color;
  margin: @margin;
  padding: @padding;
}
.class1 {
  .mixin(@margin: 20px; @color: #33acfe);
}
.class2 {
  .mixin(#efca44; @padding: 40px);
}

编译后

.class1 {
  color: #33acfe;
  margin: 20px;
  padding: 20px;
}
.class2 {
  color: #efca44;
  margin: 10px;
  padding: 40px;
}

@argument

@argument 类似JS中函数的argument,他会收集所有的参数,主要用途就是那些多值传递的css属性,比如backgroundpadding等等

.box-shadow(@x: 0; @y: 0; @blur: 1px; @color: #000) {
  -webkit-box-shadow: @arguments;
     -moz-box-shadow: @arguments;
          box-shadow: @arguments;
}
.big-block {
  .box-shadow(2px; 5px);
}

结果

.big-block {
  -webkit-box-shadow: 2px 5px 1px #000;
     -moz-box-shadow: 2px 5px 1px #000;
          box-shadow: 2px 5px 1px #000;
}

@rest

这个用处不是很大,类似JS中的...rest

.mixin(@a; @rest...) {
   // @rest is bound to arguments after @a
   // @arguments is bound to all arguments
}

模式匹配

.mixin(dark; @color) {
  color: darken(@color, 10%);
}
.mixin(light; @color) {
  color: lighten(@color, 10%);
}
.mixin(@_; @color) {
  display: block;
}

@switch: light;

.class {
  .mixin(@switch; #888);
}

当然模式匹配,也可以通过参数数量

.mixin(@a) {
  color: @a;
}
.mixin(@a; @b) {
  color: fade(@a; @b);
}

如果是一个参数的话,就匹配上面那个,如果两个参数就匹配下面那个

相关文章

  • Less 05 参数混入(Parametric Mixins)

    目录: Less 01 准备工作Less 02 变量(Variable)Less 03 扩展(Extend)Les...

  • LESS - Mixins(混入)

    混入 Mixins 混入是指把已存在的样式混入到别的样式中。 你可以把 class 选择器 和 id 选择器混入到...

  • less

    Variables Extend Mixins Parametric Mixins Mixins as Funct...

  • Less 04 混入(Mixins)

    目录: Less 01 准备工作Less 02 变量(Variable)Less 03 扩展(Extend)Les...

  • Less 06 方法混入 (Mixins as Function

    目录: Less 01 准备工作Less 02 变量(Variable)Less 03 扩展(Extend)Les...

  • vue-api-组合

    extends 扩展 mixins 混入

  • Dart中的新特性(Mixins)

    什么是Mixins?Mixins的中文意思是混入,即在一个类中混入其他类。首先我们需要知道,Mixins不是接口,...

  • TypeScript19(Mixins混入)

    TypeScript 混入 Mixins 其实vue也有mixins这个东西 你可以把他看作为合并 1.对象混入 ...

  • mixins混入

    因为在项目中 mixins(混合)特性使用频率是很高的 有必要熟练掌握 官方文档: mixins 混入 (mix...

  • mixins

    vue混入(mixins) 简介 混入 (mixins) 是一种分发 Vue 组件中可复用功能的非常灵活的方式。混...

网友评论

      本文标题:Less 05 参数混入(Parametric Mixins)

      本文链接:https://www.haomeiwen.com/subject/oetspctx.html