Chrome与Safari中CSS3 3D悬停动画残影差异问题求助
3D悬停动画在Safari浏览器中出现残影问题求助
我为网站制作了一个3D悬停动画效果,在Chrome内核浏览器中表现正常(开发阶段用Chrome调试工具编写),但在Safari测试兼容性时出现明显可见的残影。已经尝试给疑似问题属性添加-webkit前缀、为:before和:after伪元素设置transition-delay,均未解决问题,目前没有排查思路,希望得到技术支持。
代码示例
CSS代码
.icon { width: 140px; aspect-ratio: 1/1; position: relative; display: flex; justify-content: center; flex-direction: row; transform-style: preserve-3d; -webkit-transform-style: preserve-3d; transform: scale(1, 1); -webkit-transform: scale(1, 1); transition: all 0.2s ease-in-out 0s; -webkit-transition: all 0.2s ease-in-out 0s; top: 140px; .img-wrapper { width: 98px; aspect-ratio: 1/1; position: relative; top: -10px; &:after { content: ''; display: flex; width: 15px; height: 115px; background-color: hsl(12, 77%, 35%); position: absolute; left: 80%; top: 0%; transform-style: preserve-3d; transform: skewY(-30deg) rotateZ(5deg) translateX(11px) translateY(-6px); -webkit-transform-style: preserve-3d; -webkit-transform: skewY(-30deg) rotateZ(5deg) translateX(11px) translateY(-6px); z-index: -1; transition: all ease-in-out 0.2s 0s; -webkit-transition: all 0.2s ease-in-out 0.01s; clip-path: polygon(0 10px, 100% 20px, 90% 95%, 3px 99%) } &:before { content: ''; display: flex; width: 115px; height: 14px; background-color: hsl(12, 77%, 35%); transform: skewX(-20deg) rotateZ(10deg) translateY(-9px) translateX(-6px); transform-style: preserve-3d; -webkit-transform: skewX(-20deg) rotateZ(10deg) translateY(-9px) translateX(-6px); -webkit-transform-style: preserve-3d; clip-path: polygon(11px 0, 96% 2px, 100% 100%, 0 100%); -webkit-clip-path: polygon(11px 0, 96% 2px, 100% 100%, 0 100%); transition: all ease-in-out 0.2s 0s; -webkit-transition: all 0.2s ease-in-out 0s; position: absolute; } .logo-icon { width: 100%; height: 80%; background-color: orange; -webkit-transform-style: preserve-3d; transform-style: preserve-3d; transform: skewY(10deg); -webkit-transform: skewY(10deg); transition: all ease-in-out 0.2s 0s; -webkit-transition: all 0.2s ease-in-out 0s; clip-path: polygon(2px 0, calc(100% - 2px) 0px, 90% 89%, 50% 99%, 0 89%); position: relative; } } &:hover { transform: scale(1.2, 1.2); -webkit-transform: scale(1.2, 1.2); .img-wrapper { &:after { display: flex; width: 0px; height: 70%; left: 80%; top: 0%; transform: skewY(-5deg) rotateZ(5deg) translateX(30px) translateY(-20px); -webkit-transform: skewY(-5deg) rotateZ(5deg) translateX(30px) translateY(-20px); clip-path: polygon(0 8px, 99% 2px, 100% 98%, 0 99.5%); } &:before { width: 100%; height: 0px; transform: translateY(-20px) translateX(20px); -webkit-transform: translateY(-20px) translateX(20px); clip-path: polygon(0 0, 98% 1px, 98% 100%, 2px 100%); -webkit-clip-path: polygon(0 0, 98% 1px, 98% 100%, 2px 100%); } .logo-icon { transform: skewY(0) translateY(-20px) translateX(20px); -webkit-transform: skewY(0) translateY(-20px) translateX(20px); } } } }
HTML代码
<div class="icon"> <div class="img-wrapper"> <div class="logo-icon"></div> </div> </div>
内容的提问来源于stack exchange,提问作者Pandofla
相关产品推荐
相关产品推荐

