当前位置:首页 > JavaScript

js实现图片加载

2026-04-03 22:27:51JavaScript

使用Image对象加载图片

通过JavaScript的Image对象可以动态加载图片。创建一个新的Image实例,设置src属性后,监听onloadonerror事件处理加载成功或失败的情况。

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

通过fetch API加载图片

使用fetch获取图片资源,通过blob()方法处理响应数据,再转换为ObjectURL用于显示。

fetch('path/to/image.jpg')
    .then(response => {
        if (!response.ok) throw new Error('加载失败');
        return response.blob();
    })
    .then(blob => {
        const img = new Image();
        img.src = URL.createObjectURL(blob);
        document.body.appendChild(img);
    })
    .catch(error => console.error(error));

图片懒加载实现

结合IntersectionObserver API实现图片懒加载,当图片进入视口时再加载。

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));

预加载多张图片

使用Promise.all批量预加载多张图片,确保所有图片加载完成后再执行后续操作。

const preloadImages = (urls) => {
    return Promise.all(
        urls.map(url => {
            return 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(error => console.error('部分图片加载失败', error));

显示加载占位图

在图片加载过程中显示占位图或加载动画,提升用户体验。

const img = new Image();
img.src = 'path/to/image.jpg';
img.loading = 'lazy'; // 原生懒加载支持
img.alt = '描述文本';
img.style.backgroundColor = '#eee'; // 占位背景色
document.body.appendChild(img);

响应式图片加载

根据屏幕分辨率或设备类型动态加载不同尺寸的图片。

js实现图片加载

const loadResponsiveImage = () => {
    const img = new Image();
    const isRetina = window.devicePixelRatio > 1;
    img.src = isRetina ? 'image@2x.jpg' : 'image.jpg';
    document.body.appendChild(img);
};
window.addEventListener('resize', loadResponsiveImage);
loadResponsiveImage();

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

相关文章

加载jquery

加载jquery

加载 jQuery 的方法 通过 CDN 加载 推荐使用官方或公共 CDN(内容分发网络)加载 jQuery,速度快且稳定。将以下代码添加到 HTML 文件的 <head> 或 <b…

vue实现图片循环

vue实现图片循环

实现图片循环展示 在Vue中实现图片循环展示可以通过v-for指令结合数组数据完成。以下是具体实现方式: 基础循环展示 准备图片数据数组,使用v-for渲染图片列表: <template&g…

vue实现添加图片

vue实现添加图片

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

vue实现图片滚动

vue实现图片滚动

实现图片滚动的 Vue 组件 使用 Vue 实现图片滚动效果可以通过自定义组件或第三方库完成。以下是两种常见方法: 方法一:使用 CSS 动画和 Vue 动态绑定 通过 Vue 的 v-for 和…

vue 实现图片切换

vue 实现图片切换

实现图片切换的基本思路 在Vue中实现图片切换通常涉及数据绑定、事件处理和动态样式。核心是通过维护一个当前图片索引的状态,利用Vue的响应式特性更新显示的图片。 数据准备与绑定 定义一个数组存储图片…

vue实现生成图片

vue实现生成图片

Vue 实现生成图片的方法 使用 html2canvas 库 html2canvas 是一个流行的库,可以将 DOM 元素转换为 Canvas,进而生成图片。适用于 Vue 项目。 安装 html2…