查找特定的 CSS @keyframes 规则
Find specific CSS @keyframes rule
我想用 JavaScript 调整 CSS 中的特定 @keyframes
-规则。这一切都适用于以下代码:
CSS:
@-webkit-keyframes changecolor {
0% { color: red; }
100% { color: green; }
}
@keyframes changecolor {
0% { color: red; }
100% { color: green; }
}
JavaScript:
function getKeyframeRule(ruleName) {
var ss = document.styleSheets,
rule, i, x;
for (i = 0; i < ss.length; ++i) {
if (ss[i].cssRules) {
// loop through all the rules
for (x = 0; x < ss[i].cssRules.length; ++x) {
rule = ss[i].cssRules[x];
if ((rule.type === window.CSSRule.KEYFRAMES_RULE || rule.type === window.CSSRule.WEBKIT_KEYFRAMES_RULE) && rule.name === ruleName) {
return rule;
}
}
}
}
return null;
}
// find keyframes rule
var rule = getKeyframeRule("changecolor");
console.log(rule.cssText);
// adjust keyframes rule
// ...
从 Chrome 43 开始,浏览器支持不带前缀的 CSS 动画属性。但我的代码仍然 returns 前缀关键帧规则 @-webkit-keyframes changecolor
因为它也适用于条件 if ((rule.type === window.CSSRule.KEYFRAMES_RULE || rule.type === window.CSSRule.WEBKIT_KEYFRAMES_RULE) && rule.name === ruleName) {
.
什么是 select 浏览器实际使用的关键帧规则的更好方法?
使用的keyframes
规则是最后定义的。因此,您可以从末尾开始循环,而不是从头开始循环:
for (x = ss[i].cssRules.length - 1; x >= 0; x--) {
rule = ss[i].cssRules[x];
if ((rule.type === window.CSSRule.KEYFRAMES_RULE || rule.type === window.CSSRule.WEBKIT_KEYFRAMES_RULE) && rule.name === ruleName) {
return rule;
}
}
参见fiddle。
我想用 JavaScript 调整 CSS 中的特定 @keyframes
-规则。这一切都适用于以下代码:
CSS:
@-webkit-keyframes changecolor {
0% { color: red; }
100% { color: green; }
}
@keyframes changecolor {
0% { color: red; }
100% { color: green; }
}
JavaScript:
function getKeyframeRule(ruleName) {
var ss = document.styleSheets,
rule, i, x;
for (i = 0; i < ss.length; ++i) {
if (ss[i].cssRules) {
// loop through all the rules
for (x = 0; x < ss[i].cssRules.length; ++x) {
rule = ss[i].cssRules[x];
if ((rule.type === window.CSSRule.KEYFRAMES_RULE || rule.type === window.CSSRule.WEBKIT_KEYFRAMES_RULE) && rule.name === ruleName) {
return rule;
}
}
}
}
return null;
}
// find keyframes rule
var rule = getKeyframeRule("changecolor");
console.log(rule.cssText);
// adjust keyframes rule
// ...
从 Chrome 43 开始,浏览器支持不带前缀的 CSS 动画属性。但我的代码仍然 returns 前缀关键帧规则 @-webkit-keyframes changecolor
因为它也适用于条件 if ((rule.type === window.CSSRule.KEYFRAMES_RULE || rule.type === window.CSSRule.WEBKIT_KEYFRAMES_RULE) && rule.name === ruleName) {
.
什么是 select 浏览器实际使用的关键帧规则的更好方法?
使用的keyframes
规则是最后定义的。因此,您可以从末尾开始循环,而不是从头开始循环:
for (x = ss[i].cssRules.length - 1; x >= 0; x--) {
rule = ss[i].cssRules[x];
if ((rule.type === window.CSSRule.KEYFRAMES_RULE || rule.type === window.CSSRule.WEBKIT_KEYFRAMES_RULE) && rule.name === ruleName) {
return rule;
}
}
参见fiddle。