js实现图片预加载

  • Post author:
  • Post category:其他


实现图片的懒加载,实际上是创建一个图片对象,缓存在浏览器中,用于处理图片大小过大,加载过程不友好,影响用户体验

在图片的加载过程中,用这种loading代替,加载完毕后,通过替换图片的方式实现

html代码如下:

 <div id="page">
        <div class="imgBox">
            <img id="imgObj" class="loadingImg" :src="imgSrc" :class="{'loading': isloading}" />
        </div>
</div>

css代码如下:

 .imgBox {
            width: 430px;
            height: 430px;
            display: flex;
            justify-content: center;
            align-items: center;
            background-color: #ccc;
        }

        @-webkit-keyframes rotation {
            from {
                -webkit-transform: rotate(0deg);
            }

            to {
                -webkit-transform: rotate(360deg);
            }
        }

        .loadingImg {
            width: 50px;
            height: 50px;
            display: inline-block;
            -webkit-transform: rotate(360deg);
            animation: rotation 3s linear infinite;
            -moz-animation: rotation 3s linear infinite;
            -webkit-animation: rotation 3s linear infinite;
            -o-animation: rotation 3s linear infinite;
        }

        .imgBox .loading {
            width: 100%;
            height: 100%;
            -webkit-transform: rotate(0deg);
            animation: rotation 0s linear infinite;
            -moz-animation: rotation 0s linear infinite;
            -webkit-animation: rotation 0s linear infinite;
            -o-animation: rotation 0s linear infinite;
        }

js代码如下:

 var app = new Vue({
            el: '#page',
            data: function () {
                return {
                    isloading: false,
                    imgSrc: './images/load.png'
                }
            },
            mounted() {
                let _this = this;
                // 这里用定时器表示接口请求
                setTimeout(() => {
                    let temSrc =
                        'https://dss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=151472226,3497652000&fm=26&gp=0.jpg';
                    var newImg = new Image();
                    newImg.src = temSrc; // 需要写在new Image()后面,否则ie会报错
                    newImg.onload = function () { // 图片加载成功后把地址给原来的img
                        _this.isloading = true;
                        _this.imgSrc = newImg.src;
                    };
                }, 1000)

            },
            methods: {

            }
        })



版权声明:本文为weixin_45122120原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。