html - 有什么方法可以向嵌入式 SVG 添加类?

标签 html css svg

我正在构建一个顶部有嵌入式 SVG Logo 的网站。它有一个漂亮的动画,因为它自己绘制。尽管在测试中,动画在每个页面上都以动画形式显示,但会分散注意力。我在 SVG 中添加了一个类,如果它有

 <svg class="showAnimation">

它是动画的,如果它没有那个类,它就不会动画。或者即使 showAnimation 类在任何父级上,也可以工作。但是做

<embed src="/media/logo.svg" class="showAnimation">

不起作用,因为我猜 HTML 中的类不会向下传播。我不想内联 SVG 文件并在每个页面上重新加载整个文件。

长话短说:我正在寻找一种在显示 SVG 之前从 HTML/CSS/Javascript 端向嵌入式 SVG 添加/删除类的有效方法。内联是低效的,因为它不能被缓存,使两个单独的 SVG 文件只有一个词不同是低效的。

最佳答案

您可以通过 getSVGDocument() 获取 embed 元素中的元素。

var el = document.getElementById("embed's-id");
el.addEventListener("load", function() {
  var svg = el.getSVGDocument().getElementById("your-svg's-id");
  svg.setAttribute('class', 'showAnimation');
});

如果 load 事件没有触发,尝试这样做。

function checkIfLoaded() {
  var svg = document.getElementById("embed's-id").getSVGDocument();
  if (svg == null) {
    setTimeout(checkIfLoaded, 100);
  } else {
    svg.setAttribute('class', 'showAnimation');
  }
}

checkIfLoaded();

关于html - 有什么方法可以向嵌入式 SVG 添加类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27626642/

相关文章:

javascript - 绘制ckeditor插件创建的chart.js

javascript - 关于 onclick 的 Dom html javascript

javascript - 在 URL 中设置请求 header ?

c# - 如何使用正则表达式删除 aspx 页面源代码中的 CSS 类?

html - Bootstrap 下拉菜单糟糕的样式

javascript - 单击内部 <a> 链接时禁用 div 上的 onclick 事件(无 js 框架)

jquery - 不明白它是如何工作的

具有边框半径和与文本宽度匹配的填充的 SVG 文本背景颜色

svg - Inkscape:如何更改起始节点?

html - 如何从这个动画 SVG 中删除多余的空间(填充)?