我正在尝试将圆圈颜色从绿色更改为红色,但我不能在这里。经过长时间的研究,我发现了一个问题,就是当我在拉斐尔使用课堂时,我无法改变颜色。 我需要使用该类来改变cirle的颜色。
var paper = new Raphael('myPaper',500,500);
var SCircle = paper.circle(300,100,50).data('id','green');
SCircle.node.setAttribute('class','green');
$("#test").click(function () {
SCircle.animate({fill:'pink'},200); //color is not filling
} )
任何建议都应该受到赞赏..
答案 0 :(得分:2)
问题似乎是css优先级。在动画调用期间,css类优先于填充。阅读此SO post以获取更多讨论,建议不要使用CSS样式来设置Raphael对象的样式。
在没有css的情况下明确应用属性。
var paper = new Raphael('myPaper',500,500);
var SCircle = paper.circle(300,100,50);
SCircle.node.setAttribute('fill','green');
SCircle.node.setAttribute('stroke','black');
SCircle.node.setAttribute('stroke-width','3');
$("#test").click(function() {
SCircle.animate({'fill':'pink'},200);
});
答案 1 :(得分:0)
setAttribute
在某些浏览器中存在DOM属性错误。请尝试使用简单的className
属性:
SCircle.node.className = 'green';
众所周知,这适用于所有浏览器。
答案 2 :(得分:0)
有一种更简单的方法可以在不使用 node
的情况下执行此操作,并可能避免使用css
。查看 DEMO :
var paper = new Raphael('myPaper',500,500);
var SCircle = paper.circle(300,100,50).data('id','green');
SCircle.attr({fill: 'green', stroke: '#000', "stroke-width": 3});
$("#test").click(function () {
SCircle.animate({fill:'pink'},200); //good to go
} )