javascript - 为什么 Firefox 不接受 -moz-transition 样式?

标签 javascript firefox css

<分区>

Possible Duplicate:
How to set CSS3 transition using javascript?

我尝试通过元素的 style 对象将 CSS3 transition css 属性添加到具有( native )JavaScript 的元素,它在 Firefox 中不起作用,但在 webkit 中一切正常 浏览器。我的代码:

var actor_object = document.querySelectorAll("p");
actor_object.style["-moz-transition-property"] = "all"

请不要回答说我可以使用 MozTransitionProperty 来做到这一点,我知道这一点,但我需要使用 -moz-

最佳答案

  1. 稳定的 Firefox 版本使用 W3C 标准的非前缀 transition-property CSS 属性;
  2. 您必须使用驼峰式 CSS 属性才能在 JS 样式中应用;
  3. 您正在尝试为 nodeList 设置样式,这就是 DOM QSA method 的内容返回。您需要对其进行迭代。

对于跨浏览器解决方案,使用 jQuery就这么简单:

$('p').css({transitionProperty: "all", transitionDuration: '2s'});​

See fiddle

如果您想要一个纯 JS 解决方案,这里是用于测试支持的 CSS 属性的代码,来自 $.cssHooks :

function styleSupport(prop) {
    var vendorProp, supportedProp,

        // capitalize first character of the prop to test vendor prefix
        capProp = prop.charAt(0).toUpperCase() + prop.slice(1),
        prefixes = ["Moz", "Webkit", "O", "ms"],
        div = document.createElement("div");

    if (prop in div.style) {

        // browser supports standard CSS property name
        supportedProp = prop;
    } else {

        // otherwise test support for vendor-prefixed property names
        for (var i = 0; i < prefixes.length; i++) {
            vendorProp = prefixes[i] + capProp;
            if (vendorProp in div.style) {
                supportedProp = vendorProp;
                break;
            }
        }
    }

    // avoid memory leak in IE
    div = null;

    // add property to $.support so it can be accessed elsewhere
    //$.support[prop] = supportedProp;

    return supportedProp;
}

然后就这样使用它:

(function() {
    var transitionProperty = styleSupport("transitionProperty");
    var transitionDuration = styleSupport("transitionDuration");

    var actor_object = document.querySelectorAll("p");
    for (var i = 0, l = actor_object.length; i < l; i++) {
        actor_object[i].style[transitionProperty] = "all";
        actor_object[i].style[transitionDuration] = "2s";
    }
}());

Fiddle

关于javascript - 为什么 Firefox 不接受 -moz-transition 样式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13278390/

上一篇:html - 我的 div 不向左浮动

下一篇:asp.net - 列表框元素宽度

相关文章:

javascript - 在Javascript中的句子(多个句子)的第一个和最后一个单词中添加方括号

javascript - 动态地将嵌入的 YouTube 视频添加到页面

html - 如何为 Ionicon 的颜色设置动画?

javascript - 表格在不同屏幕尺寸上看起来不统一

javascript - 扩展接触盒

javascript - 比较两个对象与第三个对象的关系

javascript - 如何根据 Material UI (React JS) 中的要求制作一个 'Select' 组件

css - SVG 填充未在 FireFox 中应用

firefox - Firefox插件更改关于:空白

Firefox 奇怪的输入光标形状