添加d3 svg.selectAll(".foo").style("fill",
Adding d3 svg.selectAll(".foo").style("fill",...) overrides .foo:hover css rule
我正在制作一个d3 choropleth,它根据着色算法将初始fill
属性值分配到:
svg.selectAll(".foo")
.style("fill", function(d){
return colorization(getRandomArbitrary(5,25)); //returns hex value
})
这工作。不幸的是,它似乎使我的CSS规则无关紧要。该规则在不通过d3调用.style()
的情况下工作:
.foo:hover{
fill: white;
}
我不确定这是d3.js正在做的事情,还是SVG样式和CSS样式之间某种相互作用的结果。
我正在寻找一个解决方案,完成算法着色,并继续允许:hover填充效果。
这是CSS的预期行为,并不是SVG或D3所独有的。内联样式覆盖:hover
样式。您可以使用!important
覆盖它。
.foo:hover {
fill: white !important;
}
@Alexander O' mara的回答很好,然而,既然你说你是……寻找一个解决方案,完成算法着色…,我只是想让你注意到另一种不同的方法。
你可以显式地,编程地,设置悬停效果与这些行:
svg.selectAll(".foo")
.style("fill", function(d){
return colorization(getRandomArbitrary(5,25)); //returns hex value
})
.on("mouseover", function() { d3.select(this).style("fill", "white") } )
.on("mouseout", function() { function(d){
return colorization(getRandomArbitrary(5,25));
})
这样你就不需要任何css文件-所以没有什么要"覆盖"的。:)
不幸的是,不能直接将":hover"样式从css转换为内联样式——必须使用事件处理程序,就像上面的代码一样!
灵感来自于这个问题的解决方案
相关文章:
- 铬:“;未捕获的语法错误:意外的标记:"
- 可以设置“;文件名"发生错误时显示的内联脚本标记的
- JS表单提交"无法使用Chrome数据保护程序加载此页面.尝试重新加载页面.调试信息:POST CISmtuK
- 检测电话窃听,即:<a href="电话:xxx">在UIWebview上
- 使用“+="操作人员
- //而不是在src=“”上使用http://"属性
- "未捕获的语法错误:意外的标记}"
- 可以<脚本类型=“;text/javascript”>window.location=“/"</
- "实例范围”;TypeScript类的getter/setter
- Javascript复选框函数:;缺少:在属性id之后"
- "“;变量未引用正确的对象
- "日期“;AJAX请求返回的类型值未定义
- 得到"TypeError:无法读取属性'filename'未定义的“;调用“npm start
- "无法获取属性'的值;style'"当试图在IE中更改样式时
- style.display="块“;在所有最新的浏览器中
- 工作方法:document.getElementById(“ElementName”).style="显示:阻
- 有没有一种简单的方法来转换“;字体"style属性添加到其中的每一个'他的个人风格
- 为什么element.getAttribute(“style”)忽略冒号“”之后的所有内容:"性格仅返回部分值
- Javascript: . getelementbyid(“el") .style.Display返回空字符串,
- option.style.display="none”;不在野外工作