Hash SASS混合参数

Hash SASS混合参数,hash,sass,argument-passing,named-parameters,Hash,Sass,Argument Passing,Named Parameters,我在下面的mixin中传递了多个参数。我从CSS文件中的多个位置调用mixin;有时需要指定所有参数,有时只需指定少数参数。Ruby允许您使用散列传递可选参数。SASS中是否存在这样的等价物,或者可以通过以下事实来避免这种情况:命名参数可以按任何顺序传递,并且可以忽略具有默认值的参数 @mixin three-column-header-layout($background_color: #EEEEEE, $left_width: 25%, $mid_width: 50%, $right_wid

我在下面的mixin中传递了多个参数。我从CSS文件中的多个位置调用mixin;有时需要指定所有参数,有时只需指定少数参数。Ruby允许您使用散列传递可选参数。SASS中是否存在这样的等价物,或者可以通过以下事实来避免这种情况:命名参数可以按任何顺序传递,并且可以忽略具有默认值的参数

@mixin three-column-header-layout($background_color: #EEEEEE, $left_width: 25%, $mid_width: 50%, $right_width: 25%, $left_line_height: 40px, $mid_line_height: 40px, $right_line_height: normal, $column_height: 40px) {
  .wrapper {
    margin: 0 auto;
    width: 100%;
    overflow: hidden; 
  } 

  .middleCol {
    float: left;
    background: $background_color;
    height: $column_height;
    width: $mid_width;
    display: inline;
    line-height: $mid_line_height; 
  }

  .leftCol {
    background: $background_color;
    height: $column_height;
    width: $left_width;
    float: left;
    line-height: $left_line_height; 
  }

  .rightCol {
    background: $background_color;
    height: $column_height;
    width: $right_width;
    float: left; 
    line-height: $right_line_height;
  }
}

截至3.1.7,Sass的唯一数据结构是列表


正如您所提到的,只有在所有未传递的参数都具有默认值的情况下,才可以使用命名参数的任意组合包含mixin。

Sass 3.3添加了映射数据结构,您可以将它们作为参数传递给mixin,如下所示:

$options:
  ( background_color: red
  , right_width: 30%
  , left_width: 20%
  );

.foo {
  @include three-column-header-layout($options...);
}
但是,请注意,也可以这样指定参数(这可能是3.2的特性):

.foo {
  @include three-column-header-layout($background_color: red, $right_width: 30%, $left_width: 20%)
}