当前位置:首页 > 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获取图片的场景。

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 实现滚动懒加载,提升页面性能。

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 回调以避免静默失败。

js实现图片加载

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

相关文章

vue实现懒加载的方法

vue实现懒加载的方法

Vue 实现懒加载的方法 路由懒加载 通过动态导入语法拆分路由组件,减少初始加载时间。适用于 Vue Router 配置: const routes = [ { path: '/hom…

vue2实现图片懒加载

vue2实现图片懒加载

实现图片懒加载的方法 在Vue2中实现图片懒加载可以通过以下方法完成,核心原理是监听图片是否进入可视区域,再动态加载图片资源。 使用IntersectionObserver API Intersec…

react如何引入图片

react如何引入图片

在React中引入图片的方法 使用import直接引入 将图片文件放在项目src目录下(如src/images),通过ES6的import语法引入: import logo from './…

vue实现添加图片

vue实现添加图片

使用 <input type="file"> 上传图片 通过 HTML 原生文件输入框获取用户选择的图片文件,结合 Vue 的 v-on 监听文件变化事件。 <template…

vue实现图片加载

vue实现图片加载

Vue 实现图片加载的方法 在 Vue 中实现图片加载可以通过多种方式,以下是一些常见的方法: 使用 v-bind 绑定图片路径 通过 v-bind 动态绑定图片路径,可以灵活地加载本地或远程图片。…

vue实现图片切换

vue实现图片切换

实现图片切换的方法 使用v-for和v-bind动态绑定图片 通过v-for循环渲染图片列表,结合v-bind动态绑定图片路径,实现切换效果。 <template> <div…