CSS动画加载抖动问题咨询:组件加载默认需处于translateX(0)位置
解决CSS动画加载时元素抖动问题
问题根源在于页面/组件加载时,.iconTwo元素先以你设置的默认样式(transform: translateX(0)、opacity:1)渲染,随后动画触发并跳转到0%帧的状态(translateX(15px)、opacity:0),再执行动画到最终状态,这个初始的样式跳转就造成了抖动。
要解决这个问题,只需要让元素的初始默认状态和动画的起始帧(0%)完全一致,同时优化动画配置:
修改后的代码
@keyframes slideAnimationBackLarge { 0% { transform: translateX(15px); opacity: 0; } 100% { transform: translateX(0); opacity: 1; } } .iconTwo { position: absolute; /* 初始状态和动画0%帧对齐 */ transform: translateX(15px); opacity: 0; /* 添加forwards,让动画结束后保持最终状态 */ animation: slideAnimationBackLarge 0.4s forwards; /* 移除多余的transition,避免和animation冲突 */ }
关键改动说明
- 初始状态匹配动画起始帧:页面加载时元素直接处于动画的起始位置和透明度,不会出现先显示最终状态再跳转的情况,彻底消除抖动。
- 使用
animation-fill-mode: forwards:确保动画执行完毕后,元素保持动画100%帧的样式,无需手动重复设置最终状态。 - 移除
transition:动画效果已经由@keyframes完全控制,同时存在transition可能导致样式计算冲突,反而引发异常。
内容的提问来源于stack exchange,提问作者Wasif Raza
相关产品推荐
相关产品推荐

