Javascript 选择特定图元并更改其中一个图元的样式
现在我正在使用piecharts d3.js,有一个小问题。 piechart的每个部分都会得到一个标签,标签旁边有一个位于piechart外部的值。当下面有多个值时,假设有5%的值相互重叠,这些值将无法读取 我的值是用Javascript 选择特定图元并更改其中一个图元的样式,javascript,jquery,html,css,d3.js,Javascript,Jquery,Html,Css,D3.js,现在我正在使用piecharts d3.js,有一个小问题。 piechart的每个部分都会得到一个标签,标签旁边有一个位于piechart外部的值。当下面有多个值时,假设有5%的值相互重叠,这些值将无法读取 我的值是用 }).attr("text-anchor", "middle") .text(function(d, i) { if (config.unit === "%") { return jsonChartData.dataRows[0].values[i] +
}).attr("text-anchor", "middle")
.text(function(d, i) {
if (config.unit === "%") {
return jsonChartData.dataRows[0].values[i] + ": " + jsonChartData.dataRows[0].numbers[i] + jsonChartData.unit;
} else {
return jsonChartData.dataRows[0].values[i] + ": " + jsonChartData.dataRows[0].numbers[i];
}
});
应检查其值的零件为
jsonChartData.dataRows[0].numbers[i]
现在我想将重叠元素的不透明度(最高的除外)降低到0.4。我甚至不知道这是否是最好的解决方案。当在移动设备上悬停/点击时,这些元素的不透明度可能会改变
由于我是JavaScript新手,我非常感谢您对这个问题的帮助。我认为更改悬停时的不透明度可能会很好地解决这个问题。将其附加到文本元素:
.on('mouseover', function(d){
var currentText = this;
d3.selectAll('.pie-text').transition().style('opacity',function () {
return (this === currentText) ? 1 : 0.4;
});
假设文本元素具有类饼图文本。这将使所有文本在悬停时的不透明度为0.4,鼠标下的文本除外。这是根据以下答案改编的:
如果要在鼠标离开文本后将不透明度更改回1,还需要附加mouseout事件
.on('mouseout', function(d){
d3.selectAll('.pie-text').transition().style('opacity', 1)
;
使用这些方法,您可以在默认情况下隐藏文本,并使其仅在悬停在饼图上时显示,但这由您决定。您好,首先谢谢!现在我的代码看起来是这样的。单击时,函数d{var currentText=this;d3.选择所有的'brm-piechart-labels'。transition.style'opacity',函数{return this==currentText?1:0.4;};};我已将鼠标悬停改为单击,因为它应该可以在移动设备上工作。现在,每当我点击一个文本元素时,所有的元素都会改变不透明度。很高兴能帮上忙。您的代码是否按照您的意愿工作?我认为不会,因为您是按ID而不是按类或其他属性选择的。ID对于每个元素都必须是唯一的。将.attrclass、brm图表标签附加到文本中,然后使用d3。选择所有“.brm图表标签”。如果它能工作,没关系,但我担心按ID选择可能会导致问题。是的,刚刚意识到我选择了父元素,所以选择了错误的选择器!现在它工作得很好。非常感谢你!