【发布时间】:2016-02-08 18:47:41
【问题描述】:
我想将类别图标添加到 Wordpress 页面,每个图标都使用 snap.svg 进行动画处理。
- 我在打印页面 (index.php) 的循环中添加了 div 和 svg。所有 div 都以正确的 svg 大小出现,但为空白。
- svg 有一个由 js 文件定位的类。
- js 文件已加载并自行正常工作,但动画仅出现在该类的第一个 div 中,相互打印的次数与循环计算的次数相同(实际页面上有多少帖子来自该类别)。
我添加了“each()”和 js 的开头,但没有将动画分配到正确的位置。我还尝试为 svg 位置添加双“each()”,并将 snap 对象也添加到 svg,但这也不起作用。
我尝试使用 post-id 为每个 svg 添加唯一 id,但我无法将循环内部的 id 传递给 js 文件。我在这里和其他地方找到了许多可能的解决方案,但没有一个能适应,因为我的 php 和 js 太差了。
如果你知道我应该如何解决这个问题,请回答我。谢谢!
//这是js代码(稍微修剪一下,因为路径很长,随机数很多,但其他的都在那里):
jQuery(document).ready(function(){
jQuery(".d-icon").each(function() {
var dicon = Snap(".d-icon");
var dfirepath = dicon.path("M250 377 C"+ ......+ z").attr({ id: "dfirepath", class: "dfire", fill: "none", });
function animpath(){ dfirepath.animate({ 'd':"M250 377 C"+(Math.floor(Math.random() * 20 + 271))+ .....+ z" }, 200, mina.linear);};
function setIntervalX(callback, delay, repetitions, complete) { var x = 0; var intervalID = window.setInterval(function () { callback(); if (++x === repetitions) { window.clearInterval(intervalID); complete();} }, delay); }
var dman = dicon.path("m136 ..... 0z").attr({ id: "dman", class:"dman", fill: "#222", transform: "r70", });
var dslip = dicon.path("m307 ..... 0z").attr({ id: "dslip", class:"dslip", fill: "#196ff1", transform:"s0 0"});
var dani1 = function() { dslip.animate({ transform: "s1 1"}, 500, dani2); }
var dani2 = function() { dman.animate({ transform: 'r0 ' + dman.getBBox().cx + ' ' + dman.getBBox(0).cy, opacity:"1" }, 500, dani3 ); }
var dani3 = function() { dslip.animate({ transform: "s0 0"}, 300); dman.animate({ transform: "s0 0"}, 300, dani4); }
var dani4 = function() { dfirepath.animate({fill: "#d62a2a"}, 30, dani5); }
var dani5 = function() { setIntervalX(animpath, 200, 10, dani6); }
var dani6 = function() { dfirepath.animate({fill: "#fff"}, 30); dman.animate({ transform: "s1 1"}, 100); }
dani1(); }); });
【问题讨论】:
-
如果您发布完整的 JS sn-p 会有所帮助。使用单个
.each()是正确的方法,但您可能在代码下方做错了什么。 -
谢谢。我上传了代码,没有长路径代码。
标签: javascript wordpress svg snap.svg