最近需要实现一个图片延迟加载功能,于是网上搜索了一下,发现几乎所有文章的核心都是“图片默认设置loading状态,显示背景loading动画效果,当图片进入浏览器可视区域时,动态设置图片的src属性”,这时候发现一个问题,因为进入可视区域后,给图片src属性赋值,这个过程是本地执行的,非常快就执行完成了,这个过程显示loading动画,往往会很短暂,真真比较消耗时间的过程是,当给图片设置src属性,到图片被加载出来,这个过程往往是不可控制的,所以这种方式效果不太好。
换一种思路,给图片设置默认src为loading.gif,当图片设置src并且图片被加载出来之前,图片一直会显示loading.gif,这种算是比较理想的,但是也有一个问题,这个时候的loading.gif图片尺寸不好控制,因为loading.gif动画一般会显示为图片宽高的很小一部分,也就是说图片需要设置很大的空白区域,不然整个图片都显示成loading.gif会显得很粗糙。
请问大家有更好的方式吗?
谢谢!!!
方式二的效果,如下:
object-fit: contain;
其实 loading 你也可以后面在显示。
你的问题其实出现在网络慢,导致图片显示慢。所以只要你先把 loading 搞回来,然后懒加载的时候先切换成 loading,然后在切换成图片即可。