使用D3/JavaScript在SVG中对动画GIF进行排序,而不停止动画
Sorting animated GIFs in SVG without stopping the animation using D3/JavaScript
基于D3的可视化生成了一个HTML5 SVG元素,其中包含动画GIF
<svg>
<image href="animated.gif"></image>
<svg>
鼠标悬停时,我想通过在后面放一个带有渐变的圆圈来突出显示图像,以产生光晕效果。由于SVG将元素叠加在一起呈现,因此输出必须如下所示:
<svg>
<circle class="gloweffect"></circle>
<image href="animated.gif"></image>
<svg>
在浪费了两天之后,我放弃了尝试立即用D3的插入将圆元素插入到正确的位置。它就是不起作用,特别是因为可视化包含了很多其他内容,而且插入位置很难表达。
因此,我使用D3的append在末尾添加圆。然后,我调用一个分类器,它从SVG中删除所有元素,对它们进行排序,并按正确的顺序重新添加它们:
<svg>
<image href="animated.gif"></image>
<circle class="gloweffect"></circle>
<svg>
--> remove everything
<svg>
<svg>
--> sort and reinsert
<svg>
<circle class="gloweffect"></circle>
<image href="animated.gif"></image>
<svg>
挑战来了:这在所有浏览器中都能很好地工作,除了。。。等等。。。IE9.(好吧,等一下。)
一旦移除图像元素,IE9就会停止GIF动画,并且在重新插入时不会重新启动或继续。图像只是停留在第一帧并保持不变。
所以我的问题是:有没有办法让IE9在重新插入后继续动画?我发现了很多关于常规img元素的旧线程,特别是建议在延迟的线程中重置图片,但似乎没有一个适用于SVG中的图像元素。
--Florian
你可以做一些事情,比如…
<svg>
<g class="glow">
<circle class="gloweffect"></circle>
<image href="animated.gif"></image>
</g>
<svg>
然后在你的CSS中:
g.glow .gloweffect {
opacity: 0;
}
g.glow:hover .gloweffect {
opacity: 1;
}
相关文章:
- 先预加载动画gif
- 定时动画gif显示
- 使用动画gif作为我的网站's的最爱
- 点击按钮刷新动画Gif
- 在页面加载的所有其他文件之后加载动画 gif
- 织物.js画布上的动画 GIF
- 鼠标离开时悬停和反向的跨浏览器动画 gif
- 为什么 JavaScript 执行会影响 Firefox 中的 css 动画和动画 gif
- Pixi.js从动画gif文件生成精灵表动画或影片剪辑
- 动画 GIF 背景仅显示一次
- 如何为用户加载大型动画 gif
- 动画 GIF 不会在命令上显示
- 如何在WinRT中将画布集合转换为动画gif
- 通过调用代码中的Gifsicle命令将PNG转换为动画Gif
- 如何使用spin.js而不是动画gif
- 动画GIF在IE 8停止
- 谷歌地图中数组中的动画gif
- 动画gif获胜't在Safari Chrome或Firefox中循环
- 如何使用javascript消失动画gif
- Javascript动画gif转发