我一直很难绕过一些D3概念(我对javascript相对较新没有帮助).我想要做的是有一个状态指示器,开始绿色,慢慢变黄,然后慢慢变红.如果发生某些事件(按下按钮,收到消息,等等),我希望指示器返回绿色,重新开始转换.
这是一个简单的例子(在jQuery中),显示了基本的视觉效果(没有重置能力)http://jsfiddle.net/N4APE/
在D3中,我的想法是将背景颜色映射到传递的毫秒数.我尝试创建这样的比例:
//10 sec is yellow, 30 sec is red
d3.scale.linear().domain([0, 10000, 30000]).range(["#00ff00", "#ffff00", "#ff0000"]);
Run Code Online (Sandbox Code Playgroud)
但现在我有点迷失了.我一直在玩转换,补间和插值器的组合,但我似乎没有到达任何地方.这里有一些可悲的尝试让它运作http://jsfiddle.net/Ebuwa/
我的问题:
另外一个注意事项,我可能很高兴使用svg圈子或类似的东西,但我有运气svg fill属性,因为我有一个html背景属性.
谢谢
Ada*_*rce 15
你真的不需要做任何缩放工作,.transition()将负责幕后的艰苦工作:
function changeElementColor(d3Element){
d3Element
.transition().duration(0)
.style("background", "green")
.transition().duration(1000)
.style("background", "yellow")
.transition().delay(1000).duration(5000)
.style("background", "red");
}
changeElementColor(d3.select("#d3Color"));
Run Code Online (Sandbox Code Playgroud)
要重置转换,只需向元素添加onclick事件:
d3.select("#d3Color")
.on("click", function(){ changeElementColor(d3.select(this)) });
Run Code Online (Sandbox Code Playgroud)
我还包括一个彩色的svg圈.我猜你试图.style("color", "red")改变它的颜色; 你需要.attr("fill", "red")用于非CSS属性.
| 归档时间: |
|
| 查看次数: |
8689 次 |
| 最近记录: |