【问题标题】:Making a SCSS mixin with an optional argument that is passed to the property name使用传递给属性名称的可选参数制作 SCSS mixin
【发布时间】:2014-12-10 10:31:12
【问题描述】:

我一直在阅读a coupleofanswers,但这些都不能帮助我在需要的地方。

我想为包含三个变量的边框编写规则。第一个是可选的,并明确边框应该在哪一侧(顶部、右侧、底部或左侧;如果不存在,则默认应为border:)。第二个定义边框的宽度,后者定义颜色。我尝试了类似this 的东西。但不幸的是,这不起作用,因为我没有提供我猜测的第三个论点。

@mixin border($direction,$size,$colour) {
    @if variable-exists($direction) {
        border-#{$direction}: $size solid $colour;
    } @else {
        border: $size solid $colour;
    }
}
$borderradius: 2px;
$borderSize: 1px;
$mainColour: #ccc;
$hoverColour: #4679bd;

@include border($borderSize, $mainColour);

【问题讨论】:

  • 你为什么要这样做?与直接使用 CSS 相比,使用这个 mixin更多冗长。

标签: variables sass optional


【解决方案1】:

你可以试试这个解决方案。通过在参数末尾添加可选变量。请记住,您必须将可选变量放在参数顺序的最后。

@mixin border($size, $colour, $direction:"") {
  @if $direction != "" {
    border-#{$direction}: $size solid $colour;
  }

  @else {
    border: $size solid $colour;
  }
}

$borderradius: 2px;
$borderSize: 1px;
$mainColour: #ccc;
$hoverColour: #4679bd;

div {
  @include border($borderSize, $mainColour);
}

一个例子:http://sassmeister.com/gist/560cb13c92498d6d39e6

【讨论】:

  • 谢谢!你能解释一下吗? :"" 在 mixin 中做了什么?
  • @BramVanroy :"" 表示它是一个空的可选变量(变量不存在)。因此,如果 $direction != (不)为空,则使用 $direction 变量,否则忽略它。希望这有帮助:)
猜你喜欢
  • 2014-08-27
  • 1970-01-01
  • 2018-12-16
  • 1970-01-01
  • 1970-01-01
  • 2019-04-21
  • 2021-11-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多