【问题标题】:What is wrong with my box-shadow SASS @Mixin?我的盒子阴影 SASS @Mixin 有什么问题?
【发布时间】:2013-06-10 12:46:20
【问题描述】:

我正在尝试为 SASS 找到一个有效的 box-shadow @mixin。

我的 CodePen:http://codepen.io/leongaban/pen/nCDos


在stackoverflow上我found this question并使用了它和答案,但是我仍然收到以下错误:

@mixin box-shadow($top, $left, $blur, $color, $inset:"") {
    -webkit-box-shadow:$top $left $blur $color #{$inset};
    -moz-box-shadow:$top $left $blur $color #{$inset};
    box-shadow:$top $left $blur $color #{$inset};
}

.login_window {
    width: 200px; height: 100px; background: red;

    @include box-shadow(inset 0 1px 1px rgba(0, 0, 0, 0.5));
}

你会怎么写?

【问题讨论】:

    标签: sass mixins css


    【解决方案1】:

    对于一个简单的前缀混合,特别是当属性有可选值时,最好不要有特定的参数。在 box-shadow 的情况下,blur 和 offset 都是可选的(注意你的 mixin 只考虑模糊,不考虑偏移)。

    @mixin box-shadow($value) {
        -webkit-box-shadow: $value;
        -moz-box-shadow: $value;
        box-shadow: $value;
    }
    
    .foo {
        @include box-shadow(0 0 .25em .25em black);
    }
    
    .bar {
        @include box-shadow(inset 1px 1px 1px blue);
    }
    

    这样,您已经练习了值的正确顺序,并且当您的前缀 mixin 不再需要时,您不必重新学习它们。此外,您不会删除所有这些逗号。请注意,Compass 的所有前缀混合都是这样写的。

    【讨论】:

      【解决方案2】:

      您需要在每个组件值之间添加逗号:

      .login_window {
          width: 200px; height: 100px; background: red;
          @include box-shadow(inset 0, 1px, 1px, rgba(0, 0, 0, 0.5));
      }
      

      http://codepen.io/anon/pen/GrIuh

      【讨论】:

      【解决方案3】:

      我建议添加另一个参数以获得更大的灵活性 - 点差 (https://www.w3schools.com/cssref/css3_pr_box-shadow.asp):

      @mixin box-shadow($top, $left, $blur, $spread, $color, $inset: false) {
        @if $inset {
          -webkit-box-shadow: $top $left $blur $spread $color inset;
          -moz-box-shadow: $top $left $blur $spread $color inset;
          box-shadow: $top $left $blur $spread $color inset;
        } @else {
          -webkit-box-shadow: $top $left $blur $spread $color;
          -moz-box-shadow: $top $left $blur $spread $color;
          box-shadow: $top $left $blur $spread $color;
        }
      }
      

      现在你有了一个真正可以生成各种盒子阴影的 mixin。

      【讨论】:

        【解决方案4】:

        最佳解决方案是使用... 运算符。因为,box-shadow 的格式和参数的数量在不同的情况下可能会有所不同。

        您可以在此处阅读所有相关信息https://css-tricks.com/almanac/properties/b/box-shadow

        无论您的格式是什么,此代码都可以使用

        // mixins
        @mixin box-shadow($shadow...) {
            box-shadow: $shadow;
            -webkit-box-shadow: $shadow;
            -moz-box-shadow: $shadow;
            -ms-box-shadow: $shadow;
            -o-box-shadow: $shadow;
        }
        
        .your-class-here {
          @include box-shadow(5px 5px 5px rgba(68, 68, 68, 0.6));
        }
        

        【讨论】:

          猜你喜欢
          • 2012-03-07
          • 2014-07-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-12-28
          • 1970-01-01
          • 1970-01-01
          • 2019-09-09
          相关资源
          最近更新 更多