D3.js在mouseout上恢复以前的颜色
D3.js restore previous color on mouseout
我正在使用d3.js,并尝试在mouseover上突出显示一个元素。我有一个问题,我的矩形在mouseover时会改变颜色,但在mouseout时不会变回。这些元素有很多不同的颜色,所以我无法硬编码mouseout上的矩形应该是什么颜色。
这是我的代码
我制作直接的代码
nodeEnter.append("svg:rect")
.attr("y", -barHeight / 2)
.attr("height", barHeight)
.attr("width", barWidth)
.style("fill", color)
.on("click", click)
.on("mouseover", seres.utilities.highlight)
.on("mouseout", seres.utilities.downlight);
上述代码中调用的颜色函数
function color(d) {
return d._children ? "#3c3c3c" : d.children ? "#c2bcbc" : "#ffffff";
}
公用事业代码
var myMouseOver = function() {
var rect = d3.select(this);
rect.style("fill", "red");
}
var myMouseOut = function() {
var rect = d3.select(this);
rect.style("fill", 'DONTKNOWWHATTOPUTHERE');
}
您可以将填充设置为等于一个函数。例如,如果你的数据对象中有颜色值,它会是这样的:
var myMouseOut = function() {
var rect = d3.select(this);
rect.style("fill", function(d) {
return d.color;
});
}
您应该能够在myMouseOut函数中再次调用color
函数。如果您在rect.style()
中传递一个函数作为第二个参数,d3会将其作为参数传递给d
,因此您可以使用:
var myMouseOut = function(d){
d3.select(this)
.style("fill",color);
};
我制作了一把小提琴,展示如何在这里做到这一点。
相关文章:
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 高亮显示时编辑文本大小和颜色
- 为什么不是't窗口.恢复正常工作吗?(javascript/jquery)
- 用与线条相同的颜色填充多折线图上的点
- 更改使用Chart.js创建的图表中的轴线颜色
- 如何使用jquery更改html中的背景颜色
- 如何临时暂停浏览器渲染,然后恢复整个页面
- NodeJS-readline暂停和恢复事件发射器(逐行读取)
- 动态更改高图中的系列颜色
- 谷歌地图劫持了iphone's滚动(触摸事件)-如何恢复
- jsf中两个字符串的颜色代码差异
- 我们如何使用css或JavaScript在i/j上更改句点(点)的颜色
- 单击功能应反转图像的颜色并恢复先前反转图像的颜色
- 三.js - 鼠标悬停效果不会恢复以前的颜色
- 画布恢复颜色
- 是否可以在每次单击按钮时更改背景颜色并恢复为纯JavaScript中的原始颜色
- 单击时切换按钮的颜色(并恢复其他按钮的颜色)
- D3.js在mouseout上恢复以前的颜色
- 如何将按钮恢复到原来的颜色?
- (HighCharts)手动鼠标悬停后,鼠标悬停时颜色恢复