我正在尝试编写一个 CSS3 渐变混合,它也为 IE9 生成 SVG。
我想传入一个大字符串(一个列表),其中节点的颜色和位置用逗号分隔,但也将这些组拆分为相关 SVG 属性的单个值。
所以,给定一个值:#000 0%, #333 33%, #555 50%, #666 66%, #FFF 100%
这个简化的混合:
@mixin gradient($direction, $nodes) {
$css: '';
$svg: '';
@each $node in $nodes {
$css: $css + ', ' + $node;
}
$css: $direction + $css;
$css: unquote($css);
background-image: linear-gradient($css);
}
如何分离$node
以生成所需数量的 SVG 标签(伪代码):
$svg: $svg + '<stop stop-color="nth($node, 1)" offset="strip-units(nth($node, 2))/100" />';
生产:
<stop stop-color="#000" offset="0" />
<stop stop-color="#333" offset="0.33" />
<stop stop-color="#555" offset="0.5" />
<stop stop-color="#666" offset="0.66" />
<stop stop-color="#fff" offset="1" />
我尝试在第一个循环中使用第二个@each
,但这似乎没有多大作用。
任何帮助是极大的赞赏。
不,我不想使用 Compass 的 CSS3 渐变功能。