简体   繁体   English

具有变量和内容的LESS Mixin

[英]LESS Mixin with variable and content

So in sass, the mixin can do: 所以在sass中,mixin可以做到:

@mixin bp($point) {
  @if $point == papa-bear {
    @media (max-width: 1600px) { @content; }
  }
  @else if $point == mama-bear {
    @media (max-width: 1250px) { @content; }
  }
  @else if $point == baby-bear {
    @media (max-width: 600px)  { @content; }
  }
}

And can be used as: 并可用作:

.img {
  width: 33.33%;
  @include bp(baby-bear) {
    width: 100%;
  }
}

Is there a similar way in LESS to dynamically generate the css? 在LESS中是否有类似的方式来动态生成css? Especially passing a block of stylings like what the @content does here. 尤其是像@content这里所做的@content传递一系列风格。

Indeed you can use Passing Rulesets to Mixins as already mentioned by @seven-phases-max. 实际上,您可以使用@ seven-phases-max已经提到的将传递规则集传递给Mixins

For your break-points (bear types) in Less 对于你在Less中的断点(熊类型)

You can use pattern-matching : 您可以使用模式匹配

.bp(papa-bear,@rules) {
@media (max-width: 1200px) {@rules();}
}
.bp(mama-bear,@rules) {
@media (max-width: 800px) {@rules();}
}
.bp(baby-bear,@rules) {
@media (max-width: 600px) {@rules();}
}

.img {
  width: 33.33%;
  .bp(baby-bear; { width: 100%;});
}

Or mixin guards : 或者混合守卫

.bp2(@point,@rules) {
& when(@point = baby-bear) {
    @media (max-width: 600px) {@rules();}
}
& when(@point = mama-bear) {
    @media (max-width: 800px) {@rules();}
}
& when(@point = papa-bear) {
    @media (max-width: 1200px) {@rules();}
}
}

.img {
  width: 33.33%;
  .bp2(baby-bear; { width: 100%;});
}

In your example you can also write a single mixin: 在您的示例中,您还可以编写单个mixin:

.bp3(@point,@rules) {
  @query: ~"(max-width: @{point})";
  @media @query {@rules();}
}

.img {
  width: 33.33%;
  .bp3(600px; { width: 100%;});
}

Or when you have to reuse your bear types: 或者当您必须重复使用熊类型时:

@baby-bear-max-width: 600px;
@mama-bear-max-width: 800px;
@mama-bear-max-width: 1200px;

.bp4(@bear,@rules) {
  @query: ~"(max-width: @{@{bear}-max-width})";
  @media @query {@rules();}
}

.img {
  width: 33.33%;
  .bp4(baby-bear; { width: 100%;});
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM