javascript – 如何在单击命令中将一个SVG路径元素变形为另一个?

前端之家收集整理的这篇文章主要介绍了javascript – 如何在单击命令中将一个SVG路径元素变形为另一个?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在尝试制作播放和停止按钮.我不知道如何在点击时将三角形形状(它是一条路径)变形为方形(它是一条路径).仅一次显示一个形状.有人可以帮忙吗?

Box="0 0 971 530" style="enable-background:new 0 0 971 530;" xml:space="preserve">
最佳答案
我认为一种方法是在defs中定义你的两个路径,然后使用一个使用xlink:href =“#shapeName”和一个onclick处理程序来切换该属性或相应的DOM属性,如果支持的话.

具有完全实现的SVG DOM的use元素对象具有href属性,其具有可以读取和设置的baseVal属性,因此在我测试的内部浏览器中(使用Firefox,Chrome,IE和Edge on Window)我们可以简单地切换属性,请参阅https://jsfiddle.net/4x0gnkob/的在线样本.

  .st0{fill:none;
    stroke:#000000;
    stroke-width:4;
    stroke-miterlimit:10;}
Box="0 0 971 530" style="enable-background:new 0 0 971 530;" xml:space="preserve">

  

另一种方法是切换DOM属性,在HTML5环境中看起来有点复杂,因为我认为我可以用一行中的setAttributeNS和getAttributeNS来解决它,经过一些测试后似乎在HTML5中getAttribute(‘xlink:href’)工作更好,所以完整的代码试图测试哪个函数返回一个值.

function toggleLink(element,value1,value2) {
  var xlinkNS = 'http://www.w3.org/1999/xlink';
  var linkName = 'xlink:href';
  var oldValue = element.getAttributeNS(xlinkNS,linkName) || element.getAttribute(linkName);
  if (element.hasAttributeNS(xlinkNS,'href')) {
    element.setAttributeNS(xlinkNS,linkName,oldValue == value1 ? value2 : value1)
  }
  else {
    element.setAttribute(linkName,oldValue == value1 ? value2 : value1);
  }
}
    .st0{fill:none;
    stroke:#000000;
    stroke-width:4;
    stroke-miterlimit:10;}
Box="0 0 971 530" style="enable-background:new 0 0 971 530;" xml:space="preserve">

  

在线https://jsfiddle.net/w36k21uz/1/.

猜你在找的JavaScript相关文章