对链接的 svg 进行动画处理不起作用;内联时工作正常
Animating a linked svg not working; Working fine when inline
我有一个由一堆路径组成的 svg 文件,我正在通过这里看到的方法对其进行动画处理。这是对路径进行动画处理的标准方法 — 带有虚线偏移量的方法和其他方法。
我已经测试了代码,当它以内联方式编写时,它在我的 svg 文件上运行良好——也就是说,svg 路径的代码直接写入与脚本相同的文档中。你可以在这里看到它的实际效果。使用的脚本是这样的:
$(document).ready(function(){
var path = document.getElementsByTagName('path');
var length;
var anim = document.getElementsByTagName('animate');
for(i = 0; i < path.length; i++){
length = path[i].getTotalLength().toString();
path[i].setAttribute('stroke-dasharray',length+','+length);
anim[i].setAttribute('values','-'+length+';0');
}
});
但是,当尝试使其与<object>
中的svg文件一起使用时,我就没有那么幸运了。我已正确放置文件,并且显示正常。当我运行修改后的脚本时,它运行良好,并将长度值和不分配给每个<path>
和<animate>
元素(您可以通过检查 svg 元素来验证这一点 — stroke-dasharray
属性的值应等于每个路径的长度)。
问题是,尽管值正确更改为应触发动画的值,但没有任何动画。我不确定为什么会这样,因为代码的操作与内联代码完全相同,除了查看 svg 文档而不是当前文档......以下是脚本的修改版本(使用加载的 SVG 而不是内联版本):
$(document).ready(function(){
var a = document.getElementById("logoSVG");
//it's important to add an load event listener to the object, as it will load the svg doc asynchronously
a.addEventListener("load",function(){
var svgDoc = a.contentDocument; //get the inner DOM of .svg
var path = svgDoc.getElementsByClassName('line');
var length;
var anim = svgDoc.getElementsByTagName('animate');
for(i = 0; i < path.length; i++){
length = path[i].getTotalLength().toString();
path[i].setAttribute('stroke-dasharray',length+','+length);
anim[i].setAttribute('values','-'+length+';0');
}
},false);
});
如果您想查看上面的代码(加载而不是内联),请在此处。
您的问题是父文档中定义的样式(stroke-dasharray
和stroke-dashoffset
规则)不适用于嵌入对象。CSS 不会级联到对象中。
您可以使用 JavaScript 将样式规则直接添加到对象中,也可以将 CSS 规则嵌入到外部 SVG 文件而不是父文档中。
这个问题有更详细的信息。
相关文章:
- JavaScript链接在点击时不起作用;函数在页面加载时工作
- Javascript的某些部分在Chrome中不起作用,但在其他浏览器中可以完美工作
- Windows.Open 在 window.Location 工作时不起作用
- 带有向下钻取的 Amchart 图表工作正常,但“后退”按钮不起作用
- Javascript/AAJAX在Opera中不起作用,在FF/IE/Chrome中完美工作
- 意思是.js - 登录后重定向用户 - 在本地工作,但在部署时不起作用
- .split() 数据属性在应该工作的时候不起作用
- jQuery选择器在脚本中不起作用,但在控制台中工作
- 在键上验证正在工作,但在按键时它不起作用
- addEventListener 在 Javascript 中不起作用,但 jQuery Click 正在工作
- 表单验证在 HTML 中工作的 Visualforce 中不起作用
- 代码在jsfiddle中工作,但在本地服务器中不起作用
- 在页面中使用了两次多个图像上传,但第一个正在工作,另一个不起作用
- 为什么我的左拖动/滑块工作,但右拖动/滑块不起作用
- 对链接的 svg 进行动画处理不起作用;内联时工作正常
- jQuery SlideToggle() 在 FireFox 中不起作用,在 Chrome 中工作
- Ajax load在chrome中不起作用,而在Fire fox中工作
- Javascript不起作用,但当放置断点并从chrome调试器工具中单击文件时,它可以正常工作
- EventSource onmessage()在onopen()和oneror()正常工作的地方不起作用
- 如果我在其中使用alert,Javascript代码就可以工作,否则它'It’不起作用