【发布时间】:2013-01-04 08:20:36
【问题描述】:
我有这个 mixin 来处理一个简单的 CSS3 线性渐变:
@mixin linear-gradient($from, $to, $dir: bottom, $dir-webkit: top, $ie-filters: false) {
background-color: $to;
background-image: -webkit-linear-gradient($dir-webkit, $from, $to);
background-image: linear-gradient(to $dir, $from, $to);
@if $ie-filters == true and $old-ie {
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($from)}', endColorstr='#{ie-hex-str($to)}');
}
}
$dir 是“方向”的缩写。
如果我需要使 $ie-filters 'true' 并且我不需要更改 $dir / $dir-webkit 默认值,我仍然需要重新声明它们,这显然不是非常干燥和最佳,所以我必须这样做:
@include linear-gradient(#7a7a7a, #1a1a1a, bottom, top, true);
当我只想这样做时:
@include linear-gradient(#7a7a7a, #1a1a1a, true);
在调用 mixin 时如何以这种方式跳过参数?
PS 如果您想知道 $dir-webkit 参数,它适用于 Webkit,因为它仍然无法处理新的渐变语法(请参阅:http://generatedcontent.org/post/37949105556/updateyourcss3 -> 新渐变语法),方向需要与标准语法相反。
【问题讨论】:
-
你试过了吗,通过null?
-
刚刚尝试过,但在使用
null时不输出任何值:@include linear-gradient(#f60, #c00, null, null, true);编译为:background-image: -webkit-linear-gradient(, #ff6600, #cc0000); background-image: linear-gradient(to, #ff6600, #cc0000); -
试试这个bravedick.github.com/mooxins mixins。没有过滤器,顺便说一句。