缓冲动画结束后内容突然出现怎么让过渡更平滑?
我在做一个图片列表的加载动画,用CSS旋转动画表示缓冲。但发现当数据加载完成后,动画直接消失,图片突然弹出来特别生硬。尝试过给容器加transition属性没效果,也试过用setTimeout延迟隐藏动画,但有时数据还没回来动画就停了。
代码大概是这样写的:
.loading-spinner {
animation: spin 1s linear infinite;
}
@keyframes spin {
to { transform: rotate(360deg); }
}
JS这边是:
fetchData().then(data => {
updateList(data);
document.querySelector('.loading').classList.remove('loading-spinner');
});
感觉问题出在动画突然终止和内容出现的方式上,但不知道该怎么让两者衔接自然,求大神指点具体实现方法…
具体做法是这样的:
1. 给加载动画容器加个
fade-out类名2. 在 CSS 里定义这个类的效果,比如 0.3 秒的透明度渐变
3. 等渐变结束后再隐藏加载动画,显示内容
完整代码可以这么写:
然后 JS 改成这样:
这样就平滑多了,用户也不会觉得突然。记得把原来的
.loading-spinner移除逻辑删掉,不然会冲突。这招在主题里加了几次,效果都还不错。这样动画淡出后再移除,衔接会平滑很多。应该能用。