css、translate() 与 translate3d() 支持

css, translate() vs translate3d() support

对某些人来说可能非常简单的快速问题。在我的网站 CSS 中,我经常使用 translate3d() 制作一些漂亮的动画。问题是所有这些动画都是二维的,我一直在使用 translate3d() 以便在适用的情况下利用 GPU 渲染。

换句话说,我一直在使用类似下面的东西:

transform: translate3d(50%, 50%, 0); 并为其设置动画,而 transform: translate(50%, 50%); 将在没有 GPU 提升的情况下实现相同的视觉效果。

现在我在 CanIUse 上四处看看,不幸的是,当涉及到 Internet Explorer 时(当然)它有点缺乏对 translate3d() 的支持,对 2d 转换的支持'虽然好多了,但至少它让我可以访问 IE 9。

所以我的问题是这个(请注意,我正在研究 Mac,目前无法找到自己测试的方法),如果我使用 translate3d(),即使虽然 IE 不支持特定的 属性,但它会识别出我只使用 X 和 Y 转换并仍然呈现吗?或者将它们全部切换为常规的旧 translate() 会更好吗?

就像我说的,我不情愿的唯一原因是对于复杂的动画,GPU 加速很不错。

如果 IE 不会自动回退(这是我所期望和担心的),是否有人可以提供任何其他技术,以便我可以在支持它的浏览器中利用 GPU 渲染,但回退到 IE?

我能否在我的 css 中简单地列出 2d 和 3d 转换(按此顺序),这样 IE 将忽略 translate3d(),或者这可能会占用额外的资源?

在此先感谢您的任何意见,我们将不胜感激。

您可以使用仅适用于 IE9 的 -ms-transform 和适用于其他浏览器的 transform

-ms-transform: translate(50%, 50%); /* IE9 support*/
transform: translate3d(50%, 50%, 0); /*  IE10+ and other browser*/

IE9 将忽略 transform 并使用 -ms-transform