CSS无限滚动字幕在Safari中初始显示异常的解决求助
解决Safari中CSS无限滚动字幕初始空白问题
我太懂这种Safari兼容性坑人的感觉了——它对负animation-delay的处理确实和Chrome/Opera不一样,尤其是这种需要初始无缝衔接的滚动效果。不用JavaScript也能搞定,我们直接绕过负延迟,通过设置初始transform和调整关键帧来模拟延迟效果,让Safari乖乖配合。
解决方案思路
原来的实现靠animation-delay: -50s让第一个字幕直接从动画中间状态启动,但Safari对这种负延迟的解析不符合预期。我们可以直接把第一个字幕的初始位置设为动画运行50%时的状态,再调整关键帧的移动范围,这样既不用依赖负延迟,也能达到初始铺满屏幕的无缝效果。
修改后的代码
CSS
.marquee { margin: 0 auto; white-space: nowrap; overflow: hidden; position: absolute; } .marquee span { display: inline-block; padding-left: 100%; /* 全量添加webkit前缀确保Safari兼容 */ -webkit-animation-name: marquee; animation-name: marquee; -webkit-animation-duration: 100s; animation-duration: 100s; -webkit-animation-timing-function: linear; animation-timing-function: linear; -webkit-animation-iteration-count: infinite; animation-iteration-count: infinite; } /* 第一个字幕:直接设置初始transform,模拟-50s延迟的效果 */ .marquee:first-of-type span { -webkit-transform: translateX(-50%); transform: translateX(-50%); -webkit-animation-name: marquee-delayed; animation-name: marquee-delayed; } /* 第二个字幕保持原动画节奏 */ .marquee2 span { -webkit-animation-delay: 0s; animation-delay: 0s; } /* 原动画:从初始位置滚动到完全移出屏幕 */ @-webkit-keyframes marquee { 0% { -webkit-transform: translate(0%, 0%); } 100% { -webkit-transform: translate(-100%, 0%); } } @keyframes marquee { 0% { transform: translate(0%, 0%); } 100% { transform: translate(-100%, 0%); } } /* 延迟模拟动画:从中间状态开始滚动,和原动画节奏完全同步 */ @-webkit-keyframes marquee-delayed { 0% { -webkit-transform: translateX(-50%); } 100% { -webkit-transform: translateX(-150%); } } @keyframes marquee-delayed { 0% { transform: translateX(-50%); } 100% { transform: translateX(-150%); } }
HTML
(你的HTML代码无需修改,直接复用即可)
<p class="marquee"> <span> CRUELTY FREE NO CHEMICALS HYPOALLERGENIC ALL NATURAL PATENTED TECH FEELS AMAZING RESULTS GUARANTEED CRUELTY FREE NO CHEMICALS HYPOALLERGENIC ALL NATURAL PATENTED TECH FEELS AMAZING RESULTS GUARANTEED CRUELTY FREE NO CHEMICALS HYPOALLERGENIC ALL NATURAL PATENTED TECH FEELS AMAZING RESULTS GUARANTEED </span> </p> <p class="marquee marquee2"> <span> CRUELTY FREE NO CHEMICALS HYPOALLERGENIC ALL NATURAL PATENTED TECH FEELS AMAZING RESULTS GUARANTEED CRUELTY FREE NO CHEMICALS HYPOALLERGENIC ALL NATURAL PATENTED TECH FEELS AMAZING RESULTS GUARANTEED CRUELTY FREE NO CHEMICALS HYPOALLERGENIC ALL NATURAL PATENTED TECH FEELS AMAZING RESULTS GUARANTEED </span> </p>
为什么这个方案有效
- 我们把第一个字幕的初始位置直接设为
translateX(-50%),完美对应原方案中animation-delay: -50s的初始状态 - 为第一个字幕单独编写的动画关键帧,从
-50%移动到-150%,移动距离和原动画完全一致,保证滚动节奏丝毫不差 - 全量添加
-webkit-前缀,确保Safari能正确识别所有动画属性 - 完全纯CSS/HTML实现,不需要任何JavaScript,符合你的需求
内容的提问来源于stack exchange,提问作者sir_blackledge
相关产品推荐
相关产品推荐

