带有过渡和translateY 的 Safari 错误:“跳跃”元素

tan*_*y_k 4 css safari webkit css-transitions

我正在使用translateY 移动一个元素。除Safari(12.1.2 和 13.1.2)和GNOME Web (WebKit)外,在 Chrome、Firefox、IE、旧版 Edge 下一切正常。

在 Safari 下,元素会“跳跃”。这是一个小例子(也可以在CodePen上找到):

.parent {
  height: 50px;
  background-color: blue;
  padding: 10px;
}

.child {
  background-color: yellow;
  padding: 10px;

  transition: all 150ms cubic-bezier(0.4, 0, 0.2, 1);
}
.child.move {
  transform: translateY(-150%);
  padding: 0; /* If 10px: no bug */
}
Run Code Online (Sandbox Code Playgroud)
<br><br><br>
<div class="parent">
  <div class="child" onclick="this.classList.toggle('move')">Click me</div>
</div>
Run Code Online (Sandbox Code Playgroud)

我在WebKit bug tracker上找不到答案。

你知道一些解决方法吗?


其他堆栈溢出相关问题:

Kon*_*tin 6

您可以添加:transition-delay: 1ms;这将在转换之前强制填充属性transform。

https://codepen.io/konstantin/pen/qBWJjjq