【问题标题】:How to make SVG element clickable?如何使 SVG 元素可点击?
【发布时间】:2017-06-20 02:47:22
【问题描述】:

Angular 1.6

我想让以下 SVG 元素可点击:

         <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" 
            xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 30.2 34.1" 
            style="enable-background:new 0 0 30.2 34.1;" xml:space="preserve">
            <rect x="19.4" y="0" width="10.8" height="5.4"/>
            <rect x="19.4" y="14.3" width="10.8" height="5.4"/>
            <rect x="19.4" y="28.7" width="10.8" height="5.4"/>
            <rect x="0.2" y="0" width="10.8" height="5.4"/>
            <rect x="0.2" y="14.3" width="10.8" height="5.4"/>
            <rect x="0.2" y="28.7" width="10.8" height="5.4"/>
          </svg>

如果不是 Angular,它只需像 &lt;a href="http://example.com"&gt;&lt;svg&gt;...&lt;/svg&gt;&lt;/a&gt; 一样将其封装起来即可。但是如果我在 Angular 中做同样的事情,svg 图形就会消失。

我也试过&lt;use&gt;但没有成功:

<svg ...>
<use xlink:href="" ng-attr-xlink:href="{{$ctrl.menu.channels}}" />
...
</svg>

如何使我的 svg 元素可点击并附加一个链接?

【问题讨论】:

    标签: angularjs svg


    【解决方案1】:

    您的第一种方法没问题,您只需要一些额外的 CSS:

    <a href="#" class="svg">
      <svg version="1.1" id="Layer_1">...</svg>
    </a>
    

    在你的 CSS 中:

    a.svg:after {
      content: ""; 
      position: absolute; 
      top: 0; 
      right: 0; 
      bottom: 0; 
      left: 0;
    }
    

    【讨论】:

    • 我尝试了您的解决方案。将 svg 图标包含在 &lt;a&gt; 标记中后,我看不到它。
    • 你有我可以看看的 plunker 或 fiddle 吗? @trex
    • 我已经在 plunker 中尝试过,它可以工作。我认为有一些 CSS 规则可以在我的应用中隐藏 svg 图标。
    • 实际上,即使没有这些额外的 CSS 内容,它也可以工作,我只是将 svg 包含在 &lt;a&gt; 中。现在我需要找到一个隐藏它的规则:)
    猜你喜欢
    • 2012-10-06
    • 2019-07-09
    • 2013-06-16
    • 2019-06-12
    • 2019-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-04
    相关资源
    最近更新 更多