在 Angular 中抑制 SVG 的标题工具提示

Posted

技术标签:

【中文标题】在 Angular 中抑制 SVG 的标题工具提示【英文标题】:Suppress title tooltip of SVG in Angular 【发布时间】:2021-12-31 22:53:00 【问题描述】:

将 SVG <title> 悬停在 SVG 图标上时会显示为工具提示。

<div [inlineSVG]="'icons/forward-small.svg' | assetUrl"></div>

我不希望在将鼠标悬停在 SVG 箭头图标上时显示此工具提示(向前小)。我尝试设置(title=""matTooltip=""alt="")但没有成功。我还想在 SVG 上添加一个点击监听器。

如何在不从 SVG 文件中删除标题元素的情况下隐藏此工具提示?

【问题讨论】:

【参考方案1】:

根据 MDN 文档:

<title> 元素中的文本不会呈现为图形的一部分,但 浏览器通常将其显示为工具提示。

浏览器将使用此<title> 作为工具提示。一种解决方法是禁用整个 svg 上的任何 pointer-events

div svg
pointer-events: none;

注意:如果您不希望 SVG 上有任何点击侦听器,请使用它。

选项 2:

如何在不删除标题元素的情况下隐藏此工具提示 来自 SVG 文件?

您可以通过在实际的 <title> 之前插入一个空的 <title></title> 来操作 SVG

let svg=document.querySelector('svg'); //Select your SVG
svg.querySelectorAll('title').forEach(item=>
  item.parentElement.innerhtml='<title></title>'+item.parentElement.innerHTML;
);

【讨论】:

其实我想在SVG上加一个点击监听。在实际的 &lt;title&gt; 之前插入一个空的 &lt;title&gt;&lt;/title&gt; 也不能按预期工作,因为它向我显示了一个空的工具提示。【参考方案2】:

通过在styles.scss文件中添加以下样式可以正常工作,也可以在SVG上添加点击监听器:

    svg 
      vertical-align: sub;
      pointer-events: none;
    

【讨论】:

以上是关于在 Angular 中抑制 SVG 的标题工具提示的主要内容,如果未能解决你的问题,请参考以下文章

Chromium SVG 悬停 <title> 工具提示怪异

将空值传递给 SVG 路径(使用 d3.js)以抑制丢失数据

鼠标悬停时的SVG工具提示?

为 svg 中的行添加悬停工具提示

鼠标悬停时的 SVG 地图工具提示,可单击

如何为 SVG 添加工具提示? [复制]