【发布时间】:2016-05-25 20:48:20
【问题描述】:
我正在处理具有多个 D3 图表的页面,这些图表在用户向下滚动到页面的该部分之前不可见。图表有一些基本的动画,我只想在图表所在的部分出现时才会出现。我唯一的运气是当我在图表所在的 div 上使用鼠标悬停事件时:
d3.select("#chapter1_2")
.on("mouseover", function() {
svg.selectAll("rect.bar")
.transition()
.duration(1000)
.attr("width", function(d) { return xScale(d.pct); })
});
换句话说,当用户将鼠标移到#chapter1_2 div 上时,条形将动画到所需的长度。显然,使用 mouseover 事件不是最可靠的方法,所以我正在寻找其他可能有帮助的方法。
我尝试过使用图形滚动 (https://1wheel.github.io/graph-scroll/),但这并没有真正奏效,因为每个图表只发生一个转换,并且该转换会在章节/部分中的任何 div 时触发被归类为活动,在页面加载时立即发生。
提前感谢您的帮助!
【问题讨论】:
-
为什么不使用
scroll并检查图表偏移与滚动位置? -
感谢您的建议!我实际上认为我设法结合图形滚动解决了这个问题:我现在有一个函数可以检查它所在的 div 是否具有类“graph-active-scroll”,并且当它触发动画时!
-
太棒了!请添加您的解决方案作为未来用户的答案或删除此问题。谢谢。
标签: d3.js