我有这个样式表:
@-webkit-keyframes run { 0% { -webkit-transform: translate3d(0px, 0px, 0px); } 100% { -webkit-transform: translate3d(0px, 1620px, 0px); } }
现在,我想根据一些参数修改1620px的值。像这样:
@-webkit-keyframes run { 0% { -webkit-transform: translate3d(0px, 0px, 0px); } 100% { -webkit-transform: translate3d(0px, height*i, 0px); } }
我希望能够使用JavaScript和jQuery,尽管可以使用纯CSS解决方案。
这是针对在其移动Apple Safari浏览器中运行的iPhone游戏。
var style = document.documentElement.appendChild(document.createElement("style")), rule = " run {\ 0% {\ -webkit-transform: translate3d(0, 0, 0); }\ transform: translate3d(0, 0, 0); }\ }\ 100% {\ -webkit-transform: translate3d(0, " + your_value_here + "px, 0);\ transform: translate3d(0, " + your_value_here + "px, 0);\ }\ }"; if (CSSRule.KEYFRAMES_RULE) { // W3C style.sheet.insertRule("@keyframes" + rule, 0); } else if (CSSRule.WEBKIT_KEYFRAMES_RULE) { // WebKit style.sheet.insertRule("@-webkit-keyframes" + rule, 0); }
如果要修改已包含的样式表中的关键帧规则,请执行以下操作:
var stylesheet = document.styleSheets[0] // replace 0 with the number of the stylesheet that you want to modify , rules = stylesheet.rules , i = rules.length , keyframes , keyframe ; while (i--) { keyframes = rules.item(i); if ( ( keyframes.type === keyframes.KEYFRAMES_RULE || keyframes.type === keyframes.WEBKIT_KEYFRAMES_RULE ) && keyframes.name === "run" ) { rules = keyframes.cssRules; i = rules.length; while (i--) { keyframe = rules.item(i); if ( ( keyframe.type === keyframe.KEYFRAME_RULE || keyframe.type === keyframe.WEBKIT_KEYFRAME_RULE ) && keyframe.keyText === "100%" ) { keyframe.style.webkitTransform = keyframe.style.transform = "translate3d(0, " + your_value_here + "px, 0)"; break; } } break; } }
如果您不知道顺序,但是知道CSS文件的URL,请替换document.styleSheets[0]为。document.querySelector("link[href=' your-css-url.css']").sheet
document.styleSheets[0]
document.querySelector("link[href='
your-css-url.css
']").sheet