当前位置:首页 > JavaScript

js实现图片加载

2026-01-16 12:04:44JavaScript

使用Image对象加载图片

通过JavaScript的Image对象可以动态加载图片,适用于需要预加载或动态插入图片的场景。

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

监听图片加载状态

通过addEventListener监听图片的加载和错误事件,适用于需要更灵活事件处理的场景。

const img = document.createElement('img');
img.addEventListener('load', () => {
    console.log('图片加载成功');
});
img.addEventListener('error', () => {
    console.log('图片加载失败');
});
img.src = 'path/to/image.jpg';
document.body.appendChild(img);

批量预加载多张图片

通过数组和Promise实现多张图片的预加载,适用于需要提前缓存资源的场景。

function loadImages(urls) {
    return Promise.all(
        urls.map(url => {
            return new Promise((resolve, reject) => {
                const img = new Image();
                img.src = url;
                img.onload = () => resolve(img);
                img.onerror = () => reject(new Error(`加载失败: ${url}`));
            });
        })
    );
}

loadImages(['image1.jpg', 'image2.jpg'])
    .then(images => {
        images.forEach(img => document.body.appendChild(img));
    })
    .catch(error => console.error(error));

懒加载图片(Intersection Observer API)

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

图片加载超时处理

通过setTimeout实现图片加载超时控制,适用于网络不稳定的场景。

function loadImageWithTimeout(url, timeout) {
    return new Promise((resolve, reject) => {
        const img = new Image();
        const timer = setTimeout(() => {
            reject(new Error('图片加载超时'));
        }, timeout);

        img.onload = () => {
            clearTimeout(timer);
            resolve(img);
        };
        img.onerror = () => {
            clearTimeout(timer);
            reject(new Error('图片加载失败'));
        };
        img.src = url;
    });
}

loadImageWithTimeout('path/to/image.jpg', 5000)
    .then(img => document.body.appendChild(img))
    .catch(error => console.error(error));

动态修改图片源

通过修改src属性实现图片的动态切换,适用于需要根据条件更新图片的场景。

const img = document.getElementById('myImage');
img.src = 'new-image.jpg';
img.onload = () => console.log('新图片加载完成');

js实现图片加载

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

相关文章

vue懒加载实现难吗

vue懒加载实现难吗

vue懒加载的实现难度 Vue懒加载的实现并不复杂,核心逻辑是通过动态导入(Dynamic Imports)和路由配置或组件异步加载完成。以下是具体实现方法: 路由懒加载实现 在Vue Router…

vue实现图片拖拽

vue实现图片拖拽

实现图片拖拽功能 在Vue中实现图片拖拽功能可以通过HTML5的拖放API结合Vue的事件处理来完成。以下是一个完整的实现方法: 基础拖拽实现 为图片元素添加draggable属性并绑定相关事件…

vue实现图片查看

vue实现图片查看

Vue 实现图片查看功能 在 Vue 中实现图片查看功能,可以通过原生实现或使用第三方库。以下是几种常见的方法: 原生实现方式 使用 Vue 的指令和事件绑定实现基础的图片查看功能。 <te…

css制作图片

css制作图片

CSS 制作图片的方法 使用 background-image 属性 通过 background-image 属性可以为元素设置背景图片。这种方法适用于将图片作为背景而非内容的一部分。 .eleme…

css网页制作漂浮图片

css网页制作漂浮图片

使用CSS实现漂浮图片效果 通过CSS的animation属性和@keyframes规则可以轻松实现图片漂浮效果。以下是几种常见实现方式: 基础漂浮动画 通过关键帧定义图片的垂直移动,模拟漂浮感:…

css3手工制作图片

css3手工制作图片

使用CSS3手工制作图片 CSS3可以通过各种属性如box-shadow、border-radius、gradient等来手工绘制简单的图形或图片效果。以下是几种常见的方法: 绘制圆形 通过bor…