css - 如何显示可缩放 SVG 矩形内的 SVG 元素的工具提示?

标签 css d3.js svg

我有一个“可缩放”的 SVG 矩形,其中包含一行较小的矩形。我想为这些较小的矩形显示工具提示,但由于“可缩放”矩形的以下代码,我无法将鼠标悬停在较小的矩形上以显示工具提示:

svg.append("rect")
          .attr("width", width)
          .attr("height", height)
          .style("fill", "none")
          .style("pointer-events", "all")
          .call(d3.zoom()
             .scaleExtent([1 / 8, 4])
               .on("zoom", zoomed));

如何在较小的矩形上执行鼠标悬停或悬停事件,同时保持缩放行为不变?我需要更改“pointer-events”属性吗?

附言:(缩放最终用于正确查看较小矩形内的文本。因此,我决定将它们放在一个较大的矩形中,并对外部矩形内的所有内容执行缩放。)

最佳答案

较大的矩形从较小的矩形“窃取”事件。尝试将缩放行为附加到 SVG。

<!DOCTYPE html>
<meta charset="utf-8">
<body>
<script src="//d3js.org/d3.v4.min.js"></script>
<div id="parent" style="text-align: center;"></div>
<script>

function zoomed() {
    g.attr('transform', d3.event.transform);
}

var svg = d3.select("div").append("svg")
    .attr("width", 800)
    .attr("height", 500);
var g = svg.append("g");

var zoomBehavior = d3.zoom()
    .scaleExtent([1 / 8, 4])
    .on("zoom", zoomed);

svg.call(zoomBehavior);

var largeRect = g.append("rect")
    .attr("width", 200)
    .attr("height", 200)
    .style("fill", "#d62728")
    .style("pointer-events", "all");

largeRect.append("title")
    .text("large");

var smallRect = g.append("rect")
    .attr("x", 50)
    .attr("y", 50)
    .attr("width", 100)
    .attr("height", 100)
    .style("fill", "#1f77b4");

smallRect.append("title")
    .text("small");

</script>

关于css - 如何显示可缩放 SVG 矩形内的 SVG 元素的工具提示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45642583/

相关文章:

html - 在伪元素上附加事件

javascript - 如何完全停止 d3.zoom?

javascript - D3散点图动态轴位置

javascript - 将 SVG 作为图像复制到剪贴板

jquery - 将图像的一部分变灰

html - 将此 h1 居中 'button'

javascript - Vue 元素类转换

asp.net - 母版页帮助

javascript - 检测距离鼠标指针最近且带有中断线的线

css - 带有 svg 或 css 图像背景的文本