【问题标题】:Select specific elements and change style of one选择特定元素并更改其中一个元素的样式
【发布时间】:2016-06-03 23:23:54
【问题描述】:

现在我正在使用饼图 (d3.js) 并且有一个小问题。 饼图的每个部分都会在饼图外的旁边获得一个带有值的标签。当下面有多个值时,假设 5% 它们相互重叠并且值变得不可读。

我的价值观是用

生成的
}).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 很陌生,因此非常感谢您对这个问题的帮助。

【问题讨论】:

    标签: javascript jquery html css d3.js


    【解决方案1】:

    我认为改变悬停时的不透明度可能会很好地解决这个问题。将此附加到您的文本元素:

    .on('mouseover', function(d){
        var currentText = this;
        d3.selectAll('.pie-text').transition().style('opacity',function () {
           return (this === currentText) ? 1 : 0.4;
    });
    

    假设文本元素具有“pie-text”类。这将使所有文本在悬停时获得 0.4 的不透明度,鼠标下的文本除外。这是改编自这个答案:Equivalent of jQuery's 'not' selector in D3.js?。

    如果您想在鼠标离开文本后将不透明度改回 1,则还需要附加一个 mouseout 事件。

    .on('mouseout', function(d){
        d3.selectAll('.pie-text').transition().style('opacity', 1)
    ;
    

    使用这些想法,您可以默认隐藏文本,并使其仅在将鼠标悬停在饼图上时出现,但我将由您决定。

    【讨论】:

    • 嗨,首先谢谢!现在我的代码看起来像这样 .on('click', function(d){ var currentText = this; d3.selectAll('#brm-piechart-labels').transition().style('opacity',function ( ) { return (this === currentText) ? 1 : 0.4;}); });我已将鼠标悬停更改为“单击”,因为它应该可以在移动设备上使用。现在,每当我单击一个文本元素时,所有元素的不透明度都会发生变化。
    • 很高兴为您提供帮助。您的代码是否按您的意愿工作?我认为不会,因为您是通过 ID 而不是类或其他属性进行选择的。每个元素的 ID 必须是唯一的。将 .attr("class", "brm-piechart-labels") 附加到您的文本中,然后使用 d3.selectAll('.brm-piechart-labels')。如果它有效,没关系,但我担心按 ID 选择会导致问题。
    • 是的,刚刚意识到我选择了错误的选择器,因为我选择了父元素!现在它工作得很好。非常感谢!
    猜你喜欢
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多