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