【问题标题】:Can I use multiple values for one property in Sass?我可以在 Sass 中为一个属性使用多个值吗?
【发布时间】:2017-04-03 15:06:58
【问题描述】:

与我的问题here 略有相关。

在 Sass 中说,如果我想为一个属性使用多个值,有没有一种方法可以使用 mixin 来实现?

注意:我知道我对@each 的使用是错误的,但这有助于说明我想要做什么。

到目前为止,我有以下内容

@mixin grid-fractions($grid-type, $args) {
  @supports (display:grid) {
    display: grid;    
    #{$grid-type}: @each $args #{$args}fr;
  }
}

它的用法如下:@include('grid-template-rows', 2, 1, 1); 我想让mixin输出这样的东西:

@supports (display:grid) {
    display: grid;    
    grid-template-rows: 2fr 1fr 1fr;
  }

我知道$args 允许您在一个mixin 中包含多个值,但它显然不起作用,因为我可能没有正确使用它!

【问题讨论】:

    标签: html css sass grid-layout


    【解决方案1】:

    为什么不只是@include('grid-template-rows', '2fr 1fr 1fr');?

    或者

    包含一个 mixin 并将参数作为 arglist 传递。可以根据您的需要以不同的方式完成。

      @mixin grid($template-rows:null,$template-cols:null,$template-areas:null){
        @supports (display:grid) {
          display:grid;
          $grid-rows:();
          $grid-cols:();
          $grid-areas:();
    
          @each $rows in $template-rows{
            $grid-rows: append($grid-rows, #{$rows}fr);
          }
          @each $cols in $template-cols{
            $grid-cols: append($grid-cols, #{$cols}fr);
          }
          @each $areas in $template-areas{
            $grid-areas: append($grid-areas, #{$areas}fr);
          }
          grid-template-rows:#{$grid-rows};
          grid-template-columns:#{$grid-cols};
          grid-template-areas:#{$grid-areas};
        }
      }
    

     

      html{
        @include grid(1 2 3, 4 5 6, 7 8 9 );
      }
    

     

            /*
              // Outputs:
              @supports (display: grid) {
                html {
                  display:grid;
                  grid-template-rows: 1fr 2fr 3fr;
                  grid-template-columns: 4fr 5fr 6fr;
                  grid-template-areas: 7fr 8fr 9fr;
                }
              }
            */
    

    【讨论】:

    • 是的,我可以这样做,所以也许我只是想过度设计我正在做的事情。我这样做的原因是因为我只想创建一个涵盖传入1fr 1fr 和repeat(3, auto) 的包罗万象的mixin。可能是我做的太多了!
    • 我添加了一些东西以避免重复代码。我希望是您正在寻找的。​​span>
    • 谢谢,但很遗憾,由于我对 @each 的使用不正确,因此无法编译。
    • 这正是您想要的。你可以做不同的事情,例如从 mixin 中取出 frunit,但至少代码让事情更清晰。
    • 这很棒,正是我想要的。您在@supports 下缺少display:grid,但除此之外,这对我有用。这些是可选参数很好。
    猜你喜欢
    • 2018-04-04
    • 2020-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-27
    相关资源
    最近更新 更多