我喜欢用SASS来制作mixins,这有助于我实现跨浏览器的良好兼容性。我想制作一个看起来像这样的mixin:
@mixin box-shadow($value) {
box-shadow: $value;
-webkit-box-shadow: $value;
-moz-box-shadow: $value;
}
我可以通过这样的东西:
@include box-shadow(inset -2px -2px 2px rgba(0,0,0,0.5), inset 1px 1px 2px rgba(255,255,255,0.5), inset 0px 0px 0px 1px #ff800f);
结果是这样的:
box-shadow: inset -2px -2px 2px rgba(0,0,0,0.5), inset 1px 1px 2px rgba(255,255,255,0.5),inset 0px 0px 0px 1px #ff800f;
-moz-box-shadow: inset -2px -2px 2px rgba(0,0,0,0.5), inset 1px 1px 2px rgba(255,255,255,0.5),inset 0px 0px 0px 1px #ff800f;
-webkit-box-shadow: inset -2px -2px 2px rgba(0,0,0,0.5), inset 1px 1px 2px rgba(255,255,255,0.5),inset 0px 0px 0px 1px #ff800f;
但是,这不起作用,因为编译器认为我正在尝试传递mixin 3参数。box-shadow需要可变数量的逗号分隔位,所以我不能只定义一个mixin box-shadow($1,$2,$3)
。
我试图通过
@include box-shadow("inset -2px -2px 2px rgba(0,0,0,0.5), inset 1px 1px 2px rgba(255,255,255,0.5), inset 0px 0px 0px 1px #ff800f");
并进行了编译,但实际上并未渲染样式。
有关如何解决此问题的任何提示?
我想指出的是,您也可以在调用mixin时使用参数名称传递值:
请注意,scss是作用域的,因此
$shadow
如果以后再次使用,仍将保留其mixin值。少一点我认为,在这种情况下会遭受重新分配