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 相同的效果。
我正在使用 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 相同的效果。