关于图片预加载

来源:10-6 布流:区分图片预加载,获取元素关键属性

一只小木马

2022-09-09

图片预加载的意思不是在没有显示图片的情况下 预先使用加载好图片吗?
但这里预加载的代码 让我有点不太明白 :获取到img的src是从DOM中拿到的而非是从data里面获取img的src 此时既然能从DOM拿到src不已经说明DOM已经渲染好了吗 可以拿到height的数据 那么为啥还需要写一段代码加载img的代码呢?

// 为何要从渲染好的itemElements中获取src 而不是从data中获取
const imgElements = getAllImgElements(itemElements);
const imgSrc = getAllImgSrc(imgElements);
// 此时也能获得el.offsetHeight的数据
itemElements.forEach(el=>{
     console.log('height',el.offsetHeight)
})     
// wait until img loaded
//  不太明白这里的意义
loadAllImg(imgSrc).then((res)=>{
   itemElements.forEach(el=>{
       itemHeights.value.push(el.offsetHeight);
   })
  useItemLocation()
})
写回答

1回答

一只小木马

提问者

2022-09-09

哦 我明白了 是不是因为img资源的加载是异步的且不会阻塞DOM渲染 得到的高度有可能是img没有加载完的高度 这个方法的目的应该只是为了能确保得到的高度是包含了img的高度 而不是为了传统预加载那样提升用户体验吧?

0
1
Sunday
是的。之所以要先预加载所有的图片,目的还是为了拿到图片的高度。
2022-09-09
共1条回复

基于 Vue3 ,打造前台+中台通用开发提效解决方案

42 种前台常见业务模型, 15 种中台通用组件,成为前端提效高手

788 学习 · 517 问题

查看课程