css mix-blend-mode:safari 中的差异问题

css mix-blend-mode: difference issue in safari

我正在使用 mix-blend-mode 尝试下面的鼠标悬停效果。 它在 Chrome 和 Firefox 中按预期工作。

.btn-anim {
  position: relative;
  display: inline-block;
  overflow: hidden;
  padding: 1.25rem;
  color: #fff;
  --x: 66%;
  --y: -34%;
}

.btn-anim:after,
.btn-anim:before {
  position: absolute;
  top: 0px;
  left: 0px;
  height: 100%;
  width: 100%;
  transition: transform cubic-bezier(0.88, 0.03, 0, 0.94) 0.3s;
}

.btn-anim:before {
  content: "";
  position: absolute;
  --tw-bg-opacity: 1;
  background-color: rgba(243, 109, 69, var(--tw-bg-opacity));
  z-index: -1;
  transform: translateX(var(--x));
}

.btn-anim:after {
  content: "";
  position: absolute;
  --tw-bg-opacity: 1;
  background-color: rgba(255, 255, 255, var(--tw-bg-opacity));
  mix-blend-mode: difference;
  transform: translateX(var(--y));
}

.btn-anim:hover:before {
  transform: translateX(0);
}

.btn-anim:hover:after {
  transform: translateX(-100%);
}
<a href="" class="btn-anim">Learn More About Services</a>

Codepen - https://codepen.io/felixaj/pen/GROJyoR

Safari 显示黑色补丁。该问题的解决方案是什么?

或者有没有其他方法可以达到同样的效果?

编辑---

这仅在背景颜色为白色时有效。

在浅灰色背景色之上使用时,有没有更好的方法来实现这种效果?

Codepen 更新了 div 灰色背景的按钮。

https://greensock.com/forums/topic/21802-issues-with-safari-perspective-mix-blend-mode/

找到乔纳森的一些帮助

这里有一个解决方案

就是在.btn-anim中加上transform: translate3d(0,0,0);

它把它放在同一个渲染层上,然后 Safari 可以应用与 FF/Chrome 相同的效果。