【问题标题】:Animation on element doesn't run in Chrome, Opera and IE元素上的动画无法在 Chrome、Opera 和 IE 中运行
【发布时间】:2015-10-30 01:26:34
【问题描述】:

我有一个项目允许用户对表中的行进行排序。在放置时,我将一个类 .dropped 分配给放置的元素。

$(".grammar-input-tbl tbody").sortable({
    items: "tr:not(:last-child)",
    handle: "th",
    placeholder: "ui-state-highlight",
    cursor: "move",
    tolerance: "pointer",
    start: function (event, ui) {
        $(this).find("tr").removeClass("dropped");
    },
    // Add class on drop
    stop: function (event, ui) {
        $(ui.item.context).addClass("dropped");
    }
});

类确实被添加到元素中。但是,我将这个类分配给元素,以便我可以在带有关键帧的拖放元素上运行一个简短的动画。

.dropped {
    border-left-color: rgb(102, 175, 233);
    animation: borderFadeDrop 2400ms 600ms forwards;
}

@keyframes borderFadeDrop {
    from {border-left-color: rgb(102, 175, 233);}
    to {border-left-color: rgba(102, 175, 233, 0);}
}

然而,奇怪的是,这在 Edge 和 Firefox 中的 JSFiddle 上运行良好(通过左侧的句柄移动行),在 Chrome 中却不行, IE 和 Opera。

【问题讨论】:

  • 如果您在 jsFiddle 中的 jQuery 与您网站中的 jQuery 相同,那么您必须查看 jQuery 之外,可能是您的 CSS 或 @Sparky 提到的 HTML

标签: css jquery-ui css-animations


【解决方案1】:

我一直在寻找错误的地方。无法解释的问题是will-change。因为我在拖动开始时转换了行,所以我添加了will-change: transform;,但是Chrome、IE和Opera在将其与动画结合时似乎并不喜欢它。它在 Edge 和 FF 中运行良好。 (为简洁起见,删除了前缀)。

tbody tr {
    transition:transform 600ms;
    transform:none;

    border-left:4px solid transparent;
    border-top:1px solid #ddd;

    /* Here she is. Remove to allow border fade */
    will-change: transform;
}
.dropped {
    border-left-color:#66afe9;
    animation:borderFadeDrop 2400ms 600ms forwards
}

@keyframes borderFadeDrop {
    from {
        border-left-color:#66afe9
    }
    to {
        border-left-color:rgba(102, 175, 233, 0)
    }
}

可以在here 找到一个基本的、经过清理的案例。

  • Chromium 错误报告 here
  • IE 错误报告here

IE bug 已关闭,原因如下:

你好

感谢您的反馈。此问题似乎已在 微软边缘。我们目前不处理中的功能错误 Internet Explorer 之外的安全相关问题。

此致,Microsoft Edge 团队

【讨论】:

  • 如果您的问题一直是跨浏览器的,那么它与 jsFiddle 无关。在特定的浏览器中,如果它在您的网站上被破坏,那么它也在 jsFiddle 中被破坏。
  • 根据 Mozilla,Explorer 是“不支持的”。请参阅“浏览器支持”部分:developer.mozilla.org/en-US/docs/Web/CSS/will-change
  • @Sparky 即使不支持,浏览器也应该忽略 that 规则。但是,IE、Chrome 和 Opera 会简单地忽略元素上的任何动画。这很奇怪。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-17
  • 1970-01-01
相关资源
最近更新 更多