我正在遍历 CSS 关键帧,以便根据最接近动画元素当前行为的关键帧将原始动画更改为新动画。我使用下面的函数通过遍历样式表来获取关键帧规则。
function findKeyframesRule(rule) {
var ss = document.styleSheets;
for (var i = 0; i < ss.length; ++i) {
for (var j = 0; j < ss[i].cssRules.length; ++j) {
if (ss[i].cssRules[j].type == window.CSSRule.WEBKIT_KEYFRAMES_RULE
&& ss[i].cssRules[j].name == rule) {
return ss[i].cssRules[j];
}
}
}
return null;
}
这样调用:var keyframes = findKeyframesRule(anim);
我的问题:我需要获取 ss[i].cssRules[j]
的长度/大小(或变量 keyframes
因为它们指向相同的 WebkitCSSKeyframesRule 对象)但一直无法找到这样做的方法。我发现我认为是 CSSKeyframesRules 的来源 here ,但它是在 C 中,所以我无法使用他们用来查找长度/大小的方法,即 ::length
等。
我知道它有一个长度,因为我可以调用 keyframes[3].keyText
之类的东西并获取一个值,所以它表现就像一个数组。
我已经尝试了 keyframes.size()
、keyframes.forEach
、keyframes.length
以及更多尝试,但他们没有工作,因为它不是一个数组,它是一个 CSSKeyframesRule 对象。我还尝试使用 ¿parent? (我不知道怎么调用它 - 我的意思是 ss
、ss[i]
和 ss[i].cssRules
)包括 ss[i].cssRules.length
我认为会起作用,但它不起作用。
Here is a fiddle to show my problem
你们有什么想法吗?
最佳答案
您的代码运行良好。试着提醒一下
keyframes.cssRules.length
会得到5
alert(keyframes.cssRules.length);
关于javascript - 获取 CSSKeyframesRule 长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18647552/