js懒加载:
js通过设置defer和async
图片懒加载:
当载入页面时,先把可视区域内的img标签的data-src(自定义属性,真实图片源)属性值负给src,其他未在可视区域的图片的src赋值默认图片地址。然后监听滚动事件,把用户即将看到的图片加载(img[i].offsetTop < seeHeight + scrollTop)。注意图片要指定宽高,否则引起回流。而且要给scroll事件进行节流处理,否则会频繁触发。
插件:vue-lazyload 、IntersectionObserver API
IntersectionObserver
可以自动"观察"元素是否可见,Chrome 51+
已经支持。由于可见(visible
)的本质是,目标元素与视口产生一个交叉区,所以这个 API 叫做交叉观察器
。
原生js :e.offsetTop < document.body.clientHeight + document.body.scrollTop