JavaScript图片预加载

JavaScript简单实现图片预加载功能
1.html代码部分

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>图片预加载</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        ul {
            min-height: 500px;
            position: relative;
            margin: 0 auto;
        }

        ul li {
            float: left;
            padding: 5px;
            list-style: none;
        }

        ul li img {
            width: 200px;
            border: 1px solid #ccc;
            border-radius: 10px;
            padding: 10px;
        }
    </style>
    //导入图片数据
    <script src="./myjson.js"></script>
</head>

<body>
    <ul id="myList"></ul>
</body>

</html>

2.JavaScript代码部分

		//获取到要插入图片位置的标签
        let ul = document.querySelector('ul')
        render(imglist)  //图片数据保存时已经是一个数组,如果不是可以转换一下
        // 预加载 需要一个默认图片
        function render(data) {
            let str = ''
            data.forEach((item, index) => {
                // 这里这时放入的是加载没完成时的图片
                //class是为了与预加载时的class相同,方便对应设置图片
                str += `<li><img  class='img-item${index}' src='./jiaz.gif'/></li>`
            });
            ul.innerHTML = str  //插入li
            loopload(data) //执行预加载
        }

        // 预加载函数  
        //形参i=0,默认值,如果不传值调用时i=0,反之i=传入的值
        function loopload(data, i = 0) {
            // 获取当前这条数据
            let it = data[i] 
            if (it) {
                // 创建img标签
                let img = new Image()
                // 设置src 缓存
                img.src = it.src
                // 图片加载完成以后 缓存结束 那么就应该设置到页面当中
                img.onload = () => {
                    document.querySelector(`.img-item${i}`).src = it.src
                    loopload(data, i + 1)
                    //调用是为了继续执行设置下一张图片,这时i得加1,图片才能匹配的上
                }

            }
        }

gif演示图
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值