转换:翻译动画无法在 iOS 15.1 设备上运行

transform: translate animation not functioning on iOS 15.1 devices

12/4/21更新: 我请了一些朋友来测试。它在他们的设备上运行良好。 Android 和 iOS.

所以我尝试了我妻子的 iPad,它奏效了。但这对我女儿的 iPad.

不起作用

深入研究 OS,它在 iOS 14.8.1 上工作,但是更新到 iOS 15.1 的 3 台设备没有工作。

数据: |在职的? | iOS 15.x | iOS 14.x | Android | |:--------: |:--------:| :------: | :-----: | |是 | 0 | 2 | 2 | |否 | 6 | 0 | 0 |

仍在等待更多测试的到来,但似乎有趋势...


我正在尝试用学校项目中的静态图像制作动画。

在我的桌面上,Chrome 和 Edge 的检查移动模拟器都显示了我想要的动画。

但是在我将它上传到我的 github 之后,我的移动设备 (iOS) 没有遵循我的 transform:translate CSS 代码。

我在 Stack Overflow 中发现了一些建议使用 webkit 的话题,但要么是我添加的代码不正确,要么是其他原因: CSS transform not working on mobile

输出“视频”的动画 gif。

左:iPad。右:桌面检查,iPad 模拟器(均使用 Chrome: 96.0.4664.53 iOs, 96.0.4664.45 桌面。)对于抖动表示歉意,不得不丢弃很多帧才能达到大小限制。

#divNV2 {
  width: 680px;
  height: 300px;
  display: flex;
  grid-area: nv2;
  margin-left: auto;
  margin-right: auto;
  position: relative;
  overflow: hidden;
  margin-bottom: 2em;
  border: 2px black solid;
}

#novellasBanner {
  width: 100%;
  -webkit-animation-name: dinoWebkitAttack 8s cubic-bezier(.28, .03, 1, -0.07) infinite;
  animation-name: dinoAttack;
  animation-timing-function: cubic-bezier(.28, .03, 1, -0.07);
  animation-iteration-count: infinite;
  animation-duration: 8s;
}

@-webkit-keyframes dinoWebkitAttack {
  0% {
    width: 100%
  }
  96% {
    width: 3000px;
    left: 0px;
    -webkit-transform: translate(-70%, -50%);
  }
  100% {
    width: 3000px;
    left: 0px;
    -webkit-tranform: translate(-70%, -35%);
  }
}

@keyframes dinoAttack {
  0% {
    width: 100%;
  }
  96% {
    width: 3000px;
    left: 0px;
    transform: translate(-70%, -50%);
    -webkit-transform: translate(-70%, -50%);
    -moz-transform: translate(-70%, -50%);
  }
  100% {
    width: 3000px;
    left: 0px;
    transform: translate(-70%, -35%);
    -webkit-transform: translate(-70%, -35%);
    -moz-transform: translate(-70%, -35%);
  }
}
<div id="divNV2">
  <a href="https://scottsigler.com/library/#post-1154">
    <img id="novellasBanner" alt="Tie-In Novellas" src="https://kurt-eh.github.io/images/RID-EB-680-680x300.jpg">
  </a>
</div>

当您像这样向代码添加前缀时:

-webkit-tranform: translate(-70%, -35%);

确保还包含没有前缀的转换,如下所示:

-webkit-tranform: translate(-70%, -35%);
tranform: translate(-70%, -35%);

我们今天在 class 教程中解决了这个问题。

答案是因为我放大图片的方式。 我使用的是宽度,从 100% 增加到 3000%。

我应该在转换方法之前在转换中使用缩放。

为了安全起见,我将保留 -webkit 版本。

*{
background-color:orange;
}
#divNV2 {
  width: 680px;
  height: 300px;
  display: flex;
  grid-area: nv2;
  margin-left: auto;
  margin-right: auto;
  position: relative;
  overflow: hidden;
  margin-bottom: 2em;
  border: 2px black solid;
}

#novellasBanner {
  z-index: index 100;;
  width: 100%;
  background: pink;
  transform-origin: center;
  -webkit-transform-origin: center;
  animation-name: dinoAttack;
  animation-timing-function: cubic-bezier(.59,.15,1,-0.15);
  animation-iteration-count: infinite;
  animation-duration: 8s;
}
@keyframes dinoAttack {
  0% {
    left: 0px;
    transform: scale(1.0) translate3D(0, 0, 0);
    -webkit-transform: scale(1.0) translate3D(0, 0, 0);
    -moz-transform: scale(1.0) translate3D(0, 0, 0);
  }
  90% {    
    left: 0px;
    transform: scale(5.0) translate3D(-30%, -4%, 0);
    -webkit-transform: scale(5.0) translate3D(-30%, -4%, 0);
    -moz-transform: scale(5.0) translate3D(-30%, -4%, 0);
  }
  100% {    
    left: 0px;   
    transform: scale(5.0) translate3D(-30%, 25%, 0);
    -webkit-transform: scale(5.0) translate3D(-30%, 25%, 0);
    -moz-transform: scale(5.0) translate3D(-30%, 25%, 0);
  } 
}
<div id="divNV2">
  <a href="https://scottsigler.com/library/#post-1154">
    <img id="novellasBanner" alt="Tie-In Novellas" src="https://kurt-eh.github.io/images/RID-EB-680-680x300.jpg">
  </a>
</div>