当前位置: 首页 > 面试题库 >

以编程方式更改动画规则中的Webkit转换值

澹台华晖
2023-03-14
问题内容

我有这个样式表:

        @-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



 类似资料:
  • 任何关于这个或者如何使用drools api修改drools规则的想法都将是有用的。 注意:我不想为修改规则做字符串替换。

  • 我正在使用一个DMN来评估我的输入,但需求是这样的规则将被添加在未来,规则将被添加由正常的用户。因此,我关心的是如何提供一个逻辑来动态更新/添加DMN中的规则,并在camunda Tomcat中更新它。我经历了部署、创建和重新部署rest api,但无法解决我的问题。

  • 我使用下面的hack以编程方式更改homeAsupIndicator。 但这在大多数新手机(HTC One、Galaxy S3等)上都不起作用。是否有一种方法可以跨设备统一更改。我只需要在主屏幕上更改它。其他屏幕将具有默认屏幕。因此无法使用样式。xml

  • 问题内容: 我正在开发一个Twitter应用程序,该应用程序直接从Twitter引用图像。如何防止动画gif播放? 在页面末尾使用不适用于Firefox。 是否有更好的JavaScript技巧?最好对所有浏览器都适用 问题答案: 这不是跨浏览器的解决方案,但是可以在Firefox和Opera中使用(不适用于ie8:-/)。采取从这里

  • 这里有个简单的问题。我有一个UIButton,currencySelector,我想通过编程更改文本。以下是我所拥有的: Xcode给了我一个错误“预期声明”。我做错了什么?我该如何更改按钮的文本?

  • 问题内容: 我有一个元素,其样式必须根据计算进行修改。 CSS代码: 要求是能够通过ReactJS 和通过ReactJS 更新transform属性。 如果有一种方法可以不更新类,也可以完全不使用CSS ,则也建议这样做。 问题答案: 您可以重复设置的地方比赛伪选择