javascript - 获取 CSSKeyframesRule 长度

标签 javascript css css-animations variable-length

我正在遍历 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.forEachkeyframes.length 以及更多尝试,但他们没有工作,因为它不是一个数组,它是一个 CSSKeyframesRule 对象。我还尝试使用 ¿parent? (我不知道怎么调用它 - 我的意思是 ssss[i]ss[i].cssRules)包括 ss[i].cssRules.length 我认为会起作用,但它不起作用。

Here is a fiddle to show my problem

你们有什么想法吗?

最佳答案

您的代码运行良好。试着提醒一下

keyframes.cssRules.length

会得到5

alert(keyframes.cssRules.length);

fiddle :http://jsfiddle.net/creativevilla/T83Nc/

关于javascript - 获取 CSSKeyframesRule 长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18647552/

相关文章:

javascript - 从 Ajax 调用获取响应

javascript - 在另一个数组中查找数组的数组...

html - 仅使用 CSS 为段落中的第一个字母应用样式

css - SVG 矩形宽度动画在 Firefox 中不起作用

performance - 动画 SVG 旋转器使用过多的 cpu 和 gpu

javascript - 在 PHP 和 Mysql 的 jquery 日期选择器中禁用给定范围内的日期

javascript - Webpack UglifyJS 遇到意外 token

javascript - 在到达页面底部之前显示 div 时出错

jquery - div 环绕 float

html - 到达给定点后旋转