js实现图片加载中效果 loading

关于loading加载的2个插件。

jQuery.lazyload

Echo.js

这两个插件功能都满足不了需求,我们这里只是因为图片加载比较慢,需要一个转圈而已,并不是需要懒加载。

而且,这两个插件也无法设置图片加载后的显示。

自己了写一个

效果展示:

网速太快不太不明显哈哈

http://sunbrightness.gitee.io/csdn-material/img_loading/loading.html

原理:

img标签不使用src进行资源加载。

使用 Image对象获取img标签上的src-data属性,进行加载,判断加载完成后回显。

<!doctype html>
<html>
    <head>
        <meta charset="UTF-8" />
        <title>js图片未加载完显示loading效果</title>
       <style type="text/css">
            img {
                width: 200px;
                height: 200px;
                margin: 0 10px 10px 0
            }
        </style>


        <script>
            //判断浏览器
            var Browser = new Object();
            Browser.userAgent = window.navigator.userAgent.toLowerCase();
            Browser.ie = /msie/.test(Browser.userAgent);
            Browser.Moz = /gecko/.test(Browser.userAgent);
            //判断是否加载完成
            function Imagess (url, callback, error) {
                var val = url;
                var img = new Image();
                if (Browser.ie) {
                    img.onreadystatechange = function () {
                        if (img.readyState == "complete" || img.readyState == "loaded") {
                            callback(img);
                        }
                    }
                } else {
                    img.onload = function () {
                        if (img.complete == true) {
                            callback(img);
                        }
                    }
                }
                //如果因为网络或图片的原因发生异常,则显示该图片
                if (error) {
                    img.onerror = error;

                } else {
                    img.onerror = function () {
                        img.src = "http://sunbrightness.gitee.io/csdn-material/img_loading/failed.png"
                    }
                }
                img.src = val;
            }


            //进入页面既执行函数
            window.onload = function () {
                img_loading();
            }

            //初始化需要显示的图片,并且指定显示的位置
            function img_loading () {
                var imglist = document.getElementsByTagName('img');
                for (i = 0; i < imglist.length; i++) {
                    let tt = imglist[i];
                    //防止重复加载
                    if (tt.loading == true) {
                        continue;
                    }
                    //没有该属性代表不加载
                    if (!tt.getAttribute("src-data")) {
                        continue;
                    }
                    tt.loading = true;
                    tt.src = "http://sunbrightness.gitee.io/csdn-material/img_loading/loading.gif";
                    Imagess(tt.getAttribute("src-data"), function (obj) {
                        tt.src = obj.src;
                        tt.removeAttribute("src-data");
                    });

                }
            }
        </script>
    </head>

    <body>

        <img src-data="http://sunbrightness.gitee.io/csdn-material/img_loading/57ddfd1edeb2b.jpg?raw=true" />
        <img src-data="http://sunbrightness.gitee.io/csdn-material/img_loading/57ddfd1edeb2b.jpg?raw=true" />
        <img src-data="http://sunbrightness.gitee.io/csdn-material/img_loading/57ddfd1edeb2b.jpg?raw=true" />
       <hr/>
        <h1>加载失败</h1>
        <div>
            <img src-data="http://sunbrightness.gitee.io/csdn-material/?raw=true" />
        </div>

    </body>

</html>

 

还有一个有趣的loading素材网站

https://loading.io/

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
HTML实现图片加载动画效果,可以使用CSS的animation属性,通过设定关键帧来实现。 以下是一个简单的示例代码: ```html <div class="loading"> <img src="your-image.jpg" alt="your-image"> </div> ``` ```css .loading { display: flex; justify-content: center; align-items: center; height: 100vh; } .loading img { animation: spin 2s linear infinite; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } ``` 这里的关键帧spin定义了一个从0度到360度的旋转动画,在图片加载完成前会一直播放。 而HTML5和JavaScript实现图片加载进度动画效果,则需要监听图片加载事件,获取当前加载进度,然后通过CSS或JavaScript来动态改变进度条。 以下是一个简单的示例代码: ```html <div class="loading-bar"> <div class="bar"></div> </div> <img src="your-image.jpg" alt="your-image" id="img"> <script> const img = document.getElementById('img'); const bar = document.querySelector('.bar'); img.addEventListener('load', () => { bar.style.width = '100%'; }); img.addEventListener('progress', (event) => { const percent = Math.round((event.loaded / event.total) * 100); bar.style.width = `${percent}%`; }); </script> <style> .loading-bar { width: 100%; height: 10px; background-color: #ddd; } .bar { width: 0%; height: 100%; background-color: #007bff; transition: width 0.5s ease; } </style> ``` 这里使用了HTML5的progress事件来获取图片加载进度,并通过CSS的transition属性来实现进度条的动画效果

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SUNbrightness

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值