5

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

我的 CodePen:http


://codepen.io/leongaban/pen/nCDos 在 stackoverflow 上我找到了这个问题并使用了它和答案,但是我仍然收到以下错误:

在此处输入图像描述

@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));
}

你会怎么写?

4

4 回答 4

16

对于简单的前缀混合,尤其是当属性具有可选值时,最好不要有特定的参数。在 box-shadow 的情况下,模糊偏移都是可选的(请注意,您的 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编写所有前缀 mixin 的方式。

于 2013-06-14T14:57:38.343 回答
9

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

.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

于 2013-06-13T23:24:26.140 回答
0

最好的解决方案是使用...运算符。因为,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));
}
于 2021-08-09T18:57:08.107 回答
0

我建议添加另一个参数以获得更大的灵活性 - 传播(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。

于 2018-11-16T10:28:58.410 回答