使用Angular中的CSS在Safari中动画'transform:scale()'的不必要延迟

问题描述 投票:3回答:1

我建立了一个有角度的应用程序,因为我试图为图形的缩放和平行移动设置动画。我使用css变换进行缩放(缩放)和移动(平移)部分,并使用css过渡进行动画处理。这在桌面浏览器(Windows上的Firefox和Chrome)上运行良好,但在IOS(iPad Air)上的Safari浏览器中我有一个不必要的延迟。这总是大约2秒,并且不会改变。动画在该延迟后立即开始,并且似乎工作得很好。我注意到,如果不使用scale-option,延迟就消失了,但是我不能不对整个div进行缩放,因为它需要与屏幕尺寸匹配。

我曾尝试使用其他动画可能性,例如ng-animate(https://github.com/jiayihu/ng-animate),但该库的缩放功能也可能会使用缩放,因为我对此也遇到了同样的问题。

一些简化代码:我首先使用缩放参数初始化组件:

scaleUI() {
  var previewArea: HTMLElement = document.querySelector(".previewArea");
  previewArea.style.transform = "scale(0.3, 0.3)";
  previewArea.style.webkitTransform = "scale(0.3, 0.3)";
}

单击时,我设置新的缩放参数并转换值:

var previewArea: HTMLElement = document.querySelector(".previewArea");

previewArea.style.transitionProperty = "transform";
previewArea.style.webkitTransitionProperty = "transform";
previewArea.style.transitionDuration = "1s";
previewArea.style.webkitTransitionDuration = "1s";
previewArea.style.webkitTransitionDelay = "0.1s";
previewArea.style.transitionDelay = "0.1s";
previewArea.style.transitionTimingFunction = "ease";
previewArea.style.webkitTransitionTimingFunction = "ease";

previewArea.style.webkitTransform = "scale(0.5, 0.5)translate(-" + value1 + "px, -" + value2 + "px)";

即使单击后我删除秤,也存在延迟。仅当我完全移除该组件的刻度后,延迟才消失。

有人可以推荐另一种可能不受此错误影响的缩放方法吗?还是有办法解决这个问题?

[二手iPad是iOS 12.3.1上的iPad Air 3。 iOS 12.3的iPad Air 2上存在相同的问题。iOS 11.4的iPhone 7上没有延迟。

javascript css angular scale transition
1个回答
0
投票

我稍后修复了此错误。不是通过使用其他方法缩放,而是通过更改背景图像。我使用了背景图片且文件大小很大。这似乎在移动设备上产生了延迟。当我将背景图像更改为较小的图像时,延迟消失了。

© www.soinside.com 2019 - 2024. All rights reserved.