javascript - 为什么 svg 文本无法选择?
问题描述
我正在尝试在 D3.js 中制作可选择的工具提示
这是代码:
var tooltip = obj.svg
.append('g')
.append('text')
.attr("id", "tooltip")
.text( "SPICE")
.attr("font-family", "sans-serif")
.attr("font-size", "20px")
.attr("fill", "red")
.style("opacity", .0);
...
.on("click", function (d) {
d3.selectAll("#tooltip").transition()
.style("opacity", (obj.tooltipVisible && obj.tooltipId === d.id) ? 0.0 : 1)
结果在浏览器中我有以下元素(我也没有任何CSS):
<g><text id="tooltip" font-family="sans-serif" font-size="20px" fill="red" x="35" y="11.538461538490488" style="opacity: 1;">SPICE</text></g>
问题是这个文本是不可选择的,通过文本悬停时的指针变化。
那么如何让这个文本元素可以被鼠标选中呢?
如果有意义 - 整个 svg 图片都在这里 - 你可以在左上角看到单词 SPICE,它是不可选择的,我想背景上的文字会阻止当前的文字选择:
解决方案
I have no problem selecting this text, but the location of the g
is probably inside a translated g
.
Do you have some kind of overlay on the graph?
Make a very simple example like this.
<svg width="200" height="200">
<g><text id="tooltip" font-family="sans-serif" font-size="20px" fill="red" x="35" y="11.538461538490488" style="opacity: 1;">SPICE</text></g>
</svg>
推荐阅读
- python - 如何明确告诉 python 安装命令使用哪个 python?
- javascript - 在对象中搜索键(无效字符)
- rest-assured - Swagger Get API 返回 HTML,用于使用 RestAssured 而不是 JSON 响应构建静态分发包。与 CURL 一起工作正常
- reactjs - 将有状态组件转换为无状态组件
- r - 为什么不能在 Jupyter notebook 中安装 tidymodels 包?
- openapi - OpenApi:如何在响应中定义 cookie?
- laravel - Laravel 有很多深层问题
- c++ - 如何从第一台服务器运行第二台服务器?
- python - 用于打开 Jupyter Notebook 并指向特定文件夹的 Python 代码
- flask - Apache Airflow GUI 中的禁用/隐藏/删除文档菜单