我正在尝试为SASS找到一个工作箱阴影@mixin。
我的CodePen:http://codepen.io/leongaban/pen/nCDos
在stackoverflow I 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));
}
你会怎么写呢?
答案 0 :(得分:16)
对于简单的前缀mixin,特别是当属性具有可选值时,最好没有特定的参数。在箱阴影的情况下,模糊和偏移都是可选的(请注意,您的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的方式。
答案 1 :(得分:8)
您需要在每个组件值之间添加逗号:
.login_window {
width: 200px; height: 100px; background: red;
@include box-shadow(inset 0, 1px, 1px, rgba(0, 0, 0, 0.5));
}
答案 2 :(得分: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,它确实可以生成各种盒形阴影。
答案 3 :(得分: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));
}