当前位置:首页 > JavaScript

js实现图片加载

2026-02-28 22:01:21JavaScript

使用 Image 对象加载图片

通过创建 Image 对象动态加载图片,适合预加载或动态插入场景。

const img = new Image();
img.src = 'path/to/image.jpg';
img.onload = function() {
  console.log('图片加载完成');
  document.body.appendChild(img); // 插入到DOM
};
img.onerror = function() {
  console.error('图片加载失败');
};

通过 fetch 加载二进制图片数据

适用于需要处理二进制数据或通过API获取图片的场景。

js实现图片加载

fetch('path/to/image.jpg')
  .then(response => response.blob())
  .then(blob => {
    const imgUrl = URL.createObjectURL(blob);
    const img = document.createElement('img');
    img.src = imgUrl;
    document.body.appendChild(img);
  })
  .catch(error => console.error('加载失败:', error));

监听现有 img 标签的加载状态

直接为DOM中的 img 标签添加事件监听器。

<img id="myImage" src="path/to/image.jpg" alt="示例图片">
<script>
  const img = document.getElementById('myImage');
  img.addEventListener('load', () => console.log('DOM图片加载完成'));
  img.addEventListener('error', () => console.log('DOM图片加载失败'));
</script>

图片懒加载实现

结合 IntersectionObserver 实现滚动懒加载,提升页面性能。

js实现图片加载

const lazyImages = document.querySelectorAll('img[data-src]');
const observer = new IntersectionObserver((entries) => {
  entries.forEach(entry => {
    if (entry.isIntersecting) {
      const img = entry.target;
      img.src = img.dataset.src;
      observer.unobserve(img);
    }
  });
});
lazyImages.forEach(img => observer.observe(img));

HTML需配合 data-src 属性:

<img data-src="path/to/lazy-image.jpg" alt="懒加载图片">

预加载多张图片

通过 Promise.all 批量预加载图片资源。

const preloadImages = (urls) => {
  return Promise.all(
    urls.map(url => 
      new Promise((resolve, reject) => {
        const img = new Image();
        img.src = url;
        img.onload = resolve;
        img.onerror = reject;
      })
    )
  );
};
preloadImages(['image1.jpg', 'image2.jpg'])
  .then(() => console.log('所有图片加载完成'))
  .catch(err => console.error('部分图片加载失败', err));

注意事项

  • 跨域问题:若图片来自不同域,需确保服务器配置CORS头(如 Access-Control-Allow-Origin)。
  • 性能优化:大图建议使用压缩格式(如WebP)或延迟加载。
  • 错误处理:始终添加 onerror 回调以避免静默失败。

标签: 加载图片
分享给朋友:

相关文章

react如何延迟加载

react如何延迟加载

延迟加载的实现方法 在React中实现延迟加载(Lazy Loading)通常指按需加载组件或资源,以提升初始页面加载性能。以下是几种常见方法: 使用React.lazy和Suspense Reac…

js实现图片滚动

js实现图片滚动

图片滚动的实现方法 使用CSS动画实现 通过CSS的animation和@keyframes可以实现简单的图片滚动效果。这种方法适合静态图片的无缝循环滚动。 <style> .scr…

jquery图片切换

jquery图片切换

jQuery图片切换的实现方法 通过jQuery实现图片切换功能有多种方式,以下是几种常见的实现方法: 基础淡入淡出效果 $(document).ready(function(){ let…

vue实现同步加载

vue实现同步加载

Vue 实现同步加载的方法 在 Vue 中,通常推荐使用异步加载(如 async/await 或 Promise)来优化性能,但在某些场景下可能需要同步加载。以下是几种实现同步加载的方法: 使用 c…

vue实现页面加载

vue实现页面加载

Vue 实现页面加载的方法 在 Vue 中实现页面加载效果可以通过多种方式完成,以下是几种常见的方法: 使用 v-if 或 v-show 控制加载状态 通过绑定一个布尔值来控制加载动画的显示与隐藏。…

vue实现图片压缩

vue实现图片压缩

使用 canvas 实现图片压缩 在 Vue 项目中可以通过 canvas 的 drawImage 和 toDataURL 方法实现图片压缩。创建一个方法处理图片文件,将其绘制到 canvas 并输出…