我在d3.js甘特图中有一个甘特图。我使用滚动和缩放甘特图:http://codepen.io/Pau/pen/FKzEa
但我有问题。这是我的修改:http://codepen.io/anon/pen/pgVdgm当用户将鼠标悬停在线或任务上时,我想添加mouseevent(简单警报)。但这并不起作用。我将这些事件添加到了行和任务中:
svg.select(".gantt-chart-canvas").append("line").attr(
{
"class":"verticalDeadLine",
"x1" : x(testDate),
"y1" : 0,
"x2" : x(testDate),
"y2" : height,
"fill" : "none",
"shape-rendering" : "crispEdges",
"stroke" : "red",
"z-index" : "550",
"stroke-width" : "2px"
}).on('mouseover', function(event) {
alert("abcd");
})
.on('mouseout', function() {
});
我认为问题出在这一行,其中添加了rect,类窗格
chart.append("rect")
.attr("class", "pane")
.attr("width", width)
.attr("height", height-margin.top-margin.bottom)
.attr("transform", "translate(" + margin.left + ", " + margin.top + ")");
css类中的窗格:
.pane {
fill: none;
pointer-events: all;
}
这个div覆盖了行和任务鼠标。
当我在班级窗格中更改pointer-events: all;
到pointer-events: auto;
但是在这个改变之后,我的缩放和滚动不起作用......
如何改变?我想在线上缩放滚动图表和鼠标在线,任务都可以。我想我必须改变行类的pointer-events属性。但是如何?
摘要,更简单的例子。我有两节课。
<div class="A">
<div class="B">
</div">
</div">
这两个类都有mousevent,但是A类覆盖类B.如何设置两个mousevents都有效?
答案 0 :(得分:1)
第一次改变:
从fill
transparent
none
.pane {
cursor: move;
fill: transparent;
pointer-events: auto;
}
第二次更改会使矩形位于.gantt-chart
class group
像这样:
var chart = d3.select("body")
.append("svg")
.attr("class", "chart")
.attr("width", width + margin.left + margin.right)
.attr("height", height + margin.top + margin.bottom);
var drw = chart.append("rect")
.attr("class", "pane")
.attr("width", width)
.attr("height", height-margin.top-margin.bottom)
.attr("transform", "translate(" + margin.left + ", " + margin.top + ")");
//now append ganttchart group
var svg = chart.append("g")
.attr("class", "gantt-chart")
.attr("width", width)
.attr("height", height-margin.top-margin.bottom)
.attr("transform", "translate(" + margin.left + ", " + margin.top + ")");
工作代码here
希望这有帮助!