Maintain style during right-click-menu
by sachid
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/4.3.0/d3.js"></script>
<p>Hover over the square</p>
<br>
<svg id="canvas" height="300" width="300">
<rect x="50" y="50" width="100" height="100" fill="black" />
<rect id="overlay" x="0" y="0" width="200" height="200" fill="blue" style="opacity:0" />
</svg>
JavaScript
var overlay = d3.select("#overlay");
var mouseOver = function() {
return overlay.style("opacity", "0.5");
}
var mouseLeave = function() {
return overlay.classed("overlay-clicked") ? null : overlay.style("opacity", "0");
}
var menuOn = function() {
return overlay.classed("overlay-clicked", true);
}
var menuOff = function() {
return overlay.classed("overlay-clicked", false).style("opacity", "0");
}
d3.select("body").on("mousedown", menuOff);
overlay.on("mouseover", mouseOver)
.on("mouseleave", mouseLeave)
.on("contextmenu", menuOn);