首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >javascript动画SVG在Wordpress中不起作用

javascript动画SVG在Wordpress中不起作用
EN

Stack Overflow用户
提问于 2021-07-03 18:19:54
回答 1查看 92关注 0票数 0

我的javascript动画SVG在WordPress中不起作用。有没有人能帮助你实现SVG动画的最佳实践呢?

我的第一个想法是-它不工作是因为在SVG文件中包含javascript的安全性……

该文件按原样工作:https://aau.gagarindigital.dk/wp-content/uploads/2021/07/stack-test-menu_3x.svg

我的SVG文件如下所示:

代码语言:javascript
复制
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 912.83 882.07">

   <defs>
    <style>
 :root {
        --color-1: #F2B705;
        --color-2: #C30F0E;
        --color-3: #264ABA;
        --color-4: #009CD2;
        --color-5: #E25727;

        
        --color-11: #C29204;
        --color-22: #990B0B;
        --color-33: #172E73;
        --color-44: #006B8E;
        --color-55: #BA4620;
  }
#c1 {
  fill: var(--color-1);
}
#c2 {
  fill: var(--color-2);
}
#c3 {
  fill: var(--color-3);
}

#c4 {
  fill: var(--color-4);
}

#c5 {
  fill: var(--color-5);
}
        .cls-7 {
        fill: #a1ac75;
      }
        
circle:hover:not(.active) {
  stroke: #999;
  stroke-width: 11.5;
}

circle.active {
  stroke: black;
  stroke-width: 11.5;
}

line {
  stroke: gold;
  stroke-width: 4;
}

line.highlight {
  stroke: black;
}
    </style>
    
  </defs>
    <polygon id="fem-kant" class="cls-7" points="456.29 7.49 898.87 329.05 729.82 849.33 182.76 849.33 13.71 329.05 456.29 7.49"/>

      <line class="c3 c5" x1="656.32" y1="748.57" x2="133.5" y2="368.62"/>
      <line class="c2 c4" x1="258.55" y1="747.22" x2="779.33" y2="368.43"/>
      <line class="c1 c4" x1="258.55" y1="747.22" x2="457.43" y2="133.5"/>
      <line class="c1 c3" x1="457.43" y1="133.5" x2="657.03" y2="748.57"/>
      <line class="c5 c2" x1="133.5" y1="368.62" x2="779.33" y2="368.43"/>
      <line class="c1 c2" x1="779.33" y1="368.43" x2="457.43" y2="133.5"/>
      <line class="c2 c3" x1="779.33" y1="368.43" x2="657.03" y2="748.57"/>
      <line class="c3 c4" x1="258.55" y1="747.22" x2="657.03" y2="748.57"/>
      <line class="c4 c5" x1="258.55" y1="747.22" x2="133.5" y2="368.62"/>
      <line class="c5 c1" x1="133.5" y1="368.62" x2="457.43" y2="133.5"/>

  <a href="#0">
      <circle id="c1" cx="455.9" cy="133.5" r="133"/>
        </a>
  <a href="#0">
      <circle id="c2" cx="779.33" cy="368.43" r="133"/>
      </a>
  <a href="#0">
      <circle id="c3" cx="656.32" cy="748.57" r="133"/>
      </a>
  <a href="#0">
      <circle id="c4" cx="256.18" cy="748.57" r="133"/>
      </a>
  <a href="#0">
      <circle id="c5" cx="133.5" cy="368.62" r="133"/>
      </a>

<script>
<![CDATA[
var  allCircles = document.querySelectorAll("circle");

window.addEventListener('DOMContentLoaded', (event) => {

    // Add an click handler to every circle that
    // adds the class "active" to the clicked circle.
    allCircles.forEach(element => {
        element.addEventListener("click", clickHandler);
        element.addEventListener("mouseover", mouseoverHandler);
        element.addEventListener("mouseout", mouseoutHandler);
    });
    
});

function  clickHandler(evt) {
    // Clear current selection (remove class "active" from any circle)
    allCircles.forEach((circle) => circle.classList.remove("active"));
    // Mark clicked circle selected
    evt.target.classList.add("active");
    // Clear any currently highlighted lines
    clearHighlightedLines();
}

function  mouseoverHandler(evt) {
    let activeCircle = document.querySelector("circle.active");
    let hoveredCircle = evt.target;
    if (activeCircle && (activeCircle != hoveredCircle)) {
        // Get the line that has classes matching both the actibve and hovered circle
        let line = document.querySelector("line."+activeCircle.id+"."+hoveredCircle.id);
        // Add the class "highlight" to that line
        if (line)
            line.classList.add("highlight");
    }
}

function  mouseoutHandler(evt) {
    clearHighlightedLines();
}

function  clearHighlightedLines() {
    // Find the line with class "highlight" (if any)
    var line = document.querySelector("line.highlight");
    // Remove the class "highlight"
    if (line)
        line.classList.remove("highlight");
}
    //]]>
    </script>
</svg>

但是javascript不起作用,SVG文件在WordPress中如下所示:https://aau.gagarindigital.dk/sample-page/

如果脚本应该在SVG文件之外-我是否可以链接到放置在站点根目录下的脚本。SVG文件中的链接应该是什么样子的?

EN

回答 1

Stack Overflow用户

发布于 2021-07-03 20:08:48

我在my answer to your last question中犯了一个小错误。这个

代码语言:javascript
复制
var  allCircles = document.querySelectorAll("circle");

部件应该在DOMContentLoaded事件内。我相信,如果你解决了这个问题,就会有所不同。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68235289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档