提问者:小点点

使SVG文本不可选


我有个svg上面有一些文字

编辑:这是我的svg上的所有元素,以实现我需要的效果

<g id="top">
<path ....>
</g>
<g id="bottom">
<path ....>
</g>
<g id="boxes">
<rect ....>
</g>
<g id="txt">
<text transform="matrix(1 0 0 1 50 30)" class="svgtxt">TEXT</text>
</g>

目前,如果我将鼠标悬停在“文本”字上,我可以选择它。

我试图找到一种方法来使它不可选择,使用CSS,JQuery(如下),但似乎没有什么工作。我也找不到类似的东西。

CSS

.svgtxt{
  -webkit-touch-callout: none;
  -webkit-user-select:none;
  -khtml-user-select:none;
  -moz-user-select:none;
  -ms-user-select:none;
  -o-user-select:none;
  user-select:none;
}

爵士乐

$('#txt text').onmousedown = function() { return false; };

有什么想法吗?

提前感谢。


共2个答案

匿名用户

如果您不需要任何交互,您可以禁用指针事件

指针事件属性允许作者控制元素是否或何时可能是鼠标事件的目标。此属性用于指定在何种情况下(如果有)鼠标事件应该“通过”一个元素并针对该元素“下面”的任何内容。

https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/pointer-events

.svgText {
    pointer-events: none;
}

匿名用户

它对我来说是这样的:

svg text{
   -webkit-user-select: none;
   -moz-user-select: none;
   -ms-user-select: none;
   user-select: none;
}

如果您在使用触控设备时仍然遇到问题(这只是一个技巧):

  -webkit-tap-highlight-color:  rgba(255, 255, 255, 0);