d3.js交互图表

d3js v5.9.2
若是对原生JS还有Jq比较熟悉的话,d3的交互很快就能掌握
仍是拿完整的柱形图例子修改:完整的柱图 html

clipboard.png

selection.on()

d3经过selection.on()对元素进行事件绑定或移除,用法很简单,例如:git

selection.on('click', function(){ 
    console.log(this)
})

注意这里使用function(){}才有this指向对应元素
用法和原生JS及jq几乎同样github

给柱状图进行事件绑定

这里咱们使得鼠标悬浮的柱状图颜色变为lightblue
svg中,元素属性的优先级为0,为方便以前的demo,这里添加class名来改变矩形的样式app

.selected-rect{
    fill: lightblue
}

js代码以下less

barContainer.append('rect')
    .attr('height', d => barScale(d))
    .attr('width', barWidth - 1)
    .on('mouseover', function () {
        d3.select(this) //指向元素
            .attr('class', 'selected-rect'); //经过class改变样式
    })
    .on('mouseout', function () {
        d3.select(this)
            .attr('class', null);
    });

图片描述

总结

很简单吧,没啥好说的,主要是一开始不了解svg样式的优先级查阅了资料,没想到优先级权重是0(翻译错了请指出
源代码svg

参考资料

交互式操做
Handling Events
Presentation attributesthis

相关文章
相关标签/搜索