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

Fel*_*A J 4 css mix-blend-mode

我正在尝试使用以下鼠标悬停效果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%);
}
Run Code Online (Sandbox Code Playgroud)
<a href="" class="btn-anim">Learn More About Services</a>
Run Code Online (Sandbox Code Playgroud)

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

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

在此输入图像描述

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

编辑 - -

仅当背景颜色为白色时此功能才有效。

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

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

Kno*_*ert 14

从乔纳森那里找到了一些帮助https://greensock.com/forums/topic/21802-issues-with-safari-perspective-mix-blend-mode/

这里有一个解决方案

就是添加transform: translate3d(0,0,0);.btn-anim.

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