Raphaelライブラリを初めて使用します(これまでのところ見栄えがします)
水平方向の線形グラデーションを作成する方法を考えていました。
これまでの私のテストコードは、主に私が見てきた例に基づいています:-
$(function () {
var paper = Raphael(0, 0, $(window).width(), $(window).height());
var path = paper.path("M800,100 L800,600 Q801,610 802,600 T803,600 L803,100 Q802,110 801,100 T800,100").attr({
"fill": "90-#f00:5-#00f:100",
"fill-opacity": 0.5
});
var pathArray = path.attr("path");
handle = paper.circle(pathArray[0][1], 350, 5).attr({
fill: "black",
cursor: "pointer",
"stroke-width": 1,
stroke: "transparent"
});
var start = function () {
this.cx = this.attr("cx"),
this.cy = this.attr("cy");
},
move = function (dx, dy) {
var X = this.cx + dx, Y = this.cy + dy;
this.attr({ cx: X, cy: Y });
pathArray[0][1] = pathArray[1][1] = pathArray[6][1] = X;
path.attr({ path: pathArray });
},
up = function () {
this.dx = this.dy = 0;
};
handle.drag(move, start, up);
});
w3サイトのSVG仕様から、実際のlinearGradientタグにx1、x2、y1、y2属性があることがわかります(方向を処理するかどうかさえわかりませんが?http://www.w3.org/TR /SVG/pservers.html#LinearGradientElement)。
パス属性でそれを設定する方法を知るのに十分なほどRaphaelを使用していません。
乾杯、ワッカ。
PS編集:以下を追加すると役立ちますが、IEでのみ機能します:-
$("linearGradient").attr("x1", "0");
$("linearGradient").attr("x2", "100%");
$("linearGradient").attr("y1", "0");
$("linearGradient").attr("y2", "0");
別の編集:興味深いことに、上記はIEでのみ機能しましたが、以下は両方で機能します(HTMLは同じですが):-
$("defs").children().attr("x1", "0");
$("defs").children().attr("x2", "100%");
$("defs").children().attr("y1", "0");
$("defs").children().attr("y2", "0");
何らかの理由で、以下はIEでは1、chromeでは0です:-
$("lineargradient").length
さて、これは機能しますが、確かにもっと良い方法があるはずですか?