javascript - 我有一张被 svg 遮盖的图像,我想让图像的遮盖部分不可点击

标签 javascript jquery html css svg

我想创建一个由镶嵌三 Angular 形图像组成的网格,每个图像都链接到它们所在页面的特定部分。

我已经使用 svg mask 从图像中创建了三 Angular 形;但是,当我单击一个被蒙版的区域时,它仍然将其视为整个图像都在那里,并将我链接到如果根本没有应用蒙版的话将位于顶部的图像。

据我了解,剪辑路径的作用相同,并非所有浏览器(特别是我使用的 firefox)都支持,所以这就是我选择通过 mask 创建三 Angular 形的原因,但我不确定如果在阅读它的文档后我想做的事情甚至可以通过屏蔽来实现。

这是一个 bootply 版本:http://www.bootply.com/YrbN7T2JBH 您可以看到在适当的位置单击时颜色没有改变。

$(function jqueryEvents() {

  $('#im1').on('click', function() {
    $('html').css('background-color', "yellow");
  });

  $('#im2').on('click', function() {
    $('html').css('background-color', "red");
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="200" id="svg1">
  <defs>
    <mask id="mask1">
      <polygon points="100,0 0,200 200,200" fill="white" id="poly1">
      </polygon>
    </mask>

    <mask id="mask2">
      <polygon points="0,0 200,0 100,200" fill="white" id="poly2">
      </polygon>
    </mask>
  </defs>

  <image href="//google.ca" xlink:href="//placehold.it/500x500" width="200" height="200" mask="url(#mask1)" id="im1"></image>

  <image xlink:href="//placehold.it/501x501" width="200" height="200" mask="url(#mask2)" transform="translate(110, 0)" id="im2"></image>
</svg>

最佳答案

我解决了这个问题,我假设剪辑和 svg 剪辑路径是同一回事。

所以我现在使用剪辑路径而不是使用 mask ,这在 firefox 上受支持:

$(function jqueryEvents() {

  $('#im1').on('click', function() {
    $('html').css('background-color', "yellow");
  });

  $('#im2').on('click', function() {
    $('html').css('background-color', "red");
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="200" id="svg1">
  <defs>

    <clipPath id="clip1">
        <polygon points="100,0 0,200 200,200" fill="white" id="poly1">
    </clipPath>
    <clipPath id="clip2">
        <polygon points="0,0 200,0 100,200" fill="white" id="poly2">
    </clipPath>
</defs>

<image href="//google.ca" xlink:href="//placehold.it/500x500" width="200" height="200" clip-path="url(#clip1)" id="im1"></image>

<image xlink:href="//placehold.it/501x501" width="200" height="200" clip-path="url(#clip2)" transform="translate(110, 0)" id="im2"></image>
</svg>

关于javascript - 我有一张被 svg 遮盖的图像,我想让图像的遮盖部分不可点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41370226/

相关文章:

jquery - 重型 AJAX 应用程序中的 Firefox 特定内存增加

html - Bootstrap 4 导航栏切换不起作用(代码粘贴在下面)

javascript - 如何使用 TypeScript 获取所选元素的 HTML?

javascript - 使用 Karma 和 Jasmine 测试订阅中的 IF

javascript - 给定一个全名变量,如何仅使用 JS 返回名字+姓氏首字母

php - 如何实现数据库数据悬停动态描述显示?

javascript - 循环数组重新格式化数据结构

javascript - 我们如何限制javascript中的继承?

javascript - 没有应用程序 ID 的共享按钮

html - Bootstrap 表单不在 div 的中心