我不相信当前的 raphael API 允许您设置除最后一个之外的单个停止不透明度,这是给定传递给“不透明度”属性的值,例如:
this.ellipse(x, y, r, r).attr({stroke: "none", fill: "r(.5,.1)#ccc-#ccc", opacity: 0})
...在其最后一站的停止不透明度为 0。为了更细粒度的控制,我在 raphael.js 的属性解析开关中添加了这个“案例”:
case "opacityStops":
if (attrs.gradient) {
var gradient = doc.getElementById(node.getAttribute(fillString)[rp](/^url\(#|\)$/g, E));
if (gradient) {
var stops = gradient.getElementsByTagName("stop");
var opacs=value.split("-");
for(var ii=0;ii<stops.length;ii++){
stops[ii][setAttribute]("stop-opacity", opacs[ii]||"1");
}
}
break;
}
您还必须在“availableAttrs”对象中添加相应的条目,例如:
availableAttrs = {<other attrs here>..., opacityStops:"1"}
调用创建具有不同不透明度停止的径向渐变圆的调用将如下所示:
this.ellipse(x, y, r, r).attr({stroke: "none", fill: "r(.5,.5)#fff-#fff:70-#000", "opacityStops": "1-0-0.6"}