如何在svg上使用事件?

How to use an event on svg?

提问人:József Kiss 提问时间:10/5/2021 更新时间:10/5/2021 访问量:44

问:

我正在尝试在 HTML 中的 svg 元素上启动一个简单的动画,但效果不起作用。

我想补充一下:

.arrow-behind {
 -webkit-transform: translateY(-15px);
         transform: translateY(-15px);
}

.arrow-front {
  -webkit-transform: translateY(15px);
         transform: translateY(15px);
 }

对此,

HTML格式:

   <div class="content">
      <p>Hover me !</p>
      <svg id="more-arrows">
        <polygon  points="37.6,64 0,36.1 5.1,32.8 37.6,56.8 70.4,32.8 75.5,36.1 "/>
        <polygon  points="37.6,64 0,36.1 5.1,32.8 37.6,56.8 70.4,32.8 75.5,36.1 "/>
      </svg>
    </div>

CSS格式:

#more-arrows {
  width: 75px;
  height: 85px;
}

 #more-arrows polygon {
  fill: #FFF;
  -webkit-transition: all .2s ease-out;
  transition: all .2s ease-out;
}

有了这个,

JS:

clicked = document.getElementById("more-arrows");

clicked.addEventListener("click", opened)

function opened() {
  addclass = document.getElementsByClassName("polygon")
  addclass.setAttribute("class", "arrow-behind");
  addclass.setAttribute("class", "arrow-front");
}
JavaScript CSS SVG

评论

0赞 Mike 'Pomax' Kamermans 10/5/2021
你是如何加载该 JS 的?因为如果你对需要使用 DOM 元素的 JS 有疑问,那么这个细节是至关重要的。你在用吗?另请注意,您的 CSS 都不需要这些供应商前缀。<script src="myfile.js" async defer></script>
0赞 József Kiss 10/5/2021
它在正文标签中。
0赞 Mike 'Pomax' Kamermans 10/5/2021
你没有显示,所以再说一遍:你是如何加载你的 JS 的。是内联的吗?它是脚本元素吗?是在身体的某个地方吗?是最后吗?(现在是 2021 年,所以你真的想把它放在带有 and 属性的 as script 元素中,而不是放在正文中。这就是我们以前必须做的事情)<head>asyncdeferdefer
0赞 Shikkediel 10/5/2021
请改用,因为多边形没有类,从而使集合为空。或者给他们类,并更改函数中的类。getElementsByTagNamegetElementsByClassNameopened
1赞 József Kiss 10/5/2021
谢谢,它现在可以工作了!

答: 暂无答案