zoukankan      html  css  js  c++  java
  • 判断图片加载完成

    1、用原生js来判断图片加载,

    document.getElementById("img2").onload=function(){}

    2、如果用多种图片,用jquery来判断呢,应该是这样吧?

    $("").load(function(){...});

    中选择器是图片的id或class,function里面的方法就是回调函数,在图片加载完成后执行,但是我试验了很多,压根儿不是那么回事,正确的解决方法是:

    $("#imageId").load(function(){
       alert("加载完成!");
    });

    3、在网上找到一段代码,写好的一个

    function loadImage(url, callback) {
     var img = new Image(); //创建一个Image对象,实现图片的预下载
     img.src = url;
     
     if(img.complete) { // 如果图片已经存在于浏览器缓存,直接调用回调函数
         callback.call(img);
         return; // 直接返回,不用再处理onload事件
        }
     img.onload = function () { //图片下载完毕时异步调用callback函数。
            callback.call(img);//将回调函数的this替换为Image对象
        };
    };

    callback回调行数,就是判断图片加载完成后要运行的函数

    4、下面是针对多个image的加载判断。

    var imgdefereds=[];
    $('img').each(function(){
     var dfd=$.Deferred();
     $(this).bind('load',function(){
      dfd.resolve();
     }).bind('error',function(){
     //图片加载错误,加入错误处理
     // dfd.resolve();
     })
     if(this.complete) setTimeout(function(){
      dfd.resolve();
     },1000);
     imgdefereds.push(dfd);
    })
    $.when.apply(null,imgdefereds).done(function(){
        callback();
    });

    使用这种方法就可以避免window.onload的不足,不过代码稍显复杂 在性能方面比起window.onload经强很多。

    5、最后我写的一个图片等比例缩放居中显示的jquery插件的dome

     1 <!DOCTYPE HTML>
     2 <html>
     3 <head>
     4     <meta charset="utf-8">
     5     <title>图片按比例自适应缩放</title>
     6     <script src="jquery.js"></script>
     7     <style>
     8         .list1,
     9         .list2{overflow: hidden;margin:20px 0;}
    10         .list1 li,
    11         .list2 li{
    12             float:left;
    13             margin:10px;
    14             text-align: center;
    15              200px;
    16             height: 300px;
    17             border: 1px solid #ddd;
    18             overflow: hidden;
    19         }
    20     </style>
    21 </head>
    22 <body>
    23 <div class="list1">
    24     <ul>
    25         <li><img src="http://www.wallcoo.com/1920x1440/1920x1440_nature_wallpapers_02/wallpapers/1920x1440/%5Bwallcoo.com%5D_1920X1440_nature_wallpapers_aVistas006.jpg" alt="alipay"/></li>
    26         <li><img src="http://img2.cache.hxsd.com/game/2012/01/13/646913_1326427920_3.jpg" alt="alipay"/></li>
    27         <li><img src="http://image.big5.made-in-china.com/2f0j01aBnEQSLGvRuF/D%E5%9E%8B%E6%89%A3%EF%BC%88P10004%EF%BC%89.jpg" alt="alipay"/></li>
    28         <li><img src="http://i3.hexunimg.cn/2015-12-31/181542031.jpg" alt="alipay"/></li>
    29     </ul>
    30 </div>
    31 <div class="list2">
    32     <ul>
    33         <li><img src="http://i1.sinaimg.cn/gm/2013/0826/U4670P115DT20130826173112.jpg" alt="alipay"/></li>
    34         <li><img src="http://cdn.duitang.com/uploads/item/201305/27/20130527155926_GjC8x.jpeg" alt="alipay"/></li>
    35         <li><img src="http://www.012logo.com/webpic/D%B1%EA%D6%BElogo%C9%E8%BC%C6%D7%F7%C6%B7%20%2824%29.png" alt="alipay"/></li>
    36         <li><img src="http://img4q.duitang.com/uploads/item/201506/27/20150627073905_kJXEn.jpeg" alt="alipay"/></li>
    37     </ul>
    38 </div>
    39 <script>
    40     $.fn.resizeImg = function (opt) {
    41         var imgdefereds = [];
    42         return this.each(function () {
    43             opt = $.extend({
    44                 maxWidth: 150,
    45                 maxHeight: 200
    46             }, opt);
    47 
    48             var $self = $(this);
    49 
    50             $self.hide();
    51             var dfd = $.Deferred();
    52             $(this).bind('load', function () {
    53                 dfd.resolve();
    54             }).bind('error', function () {
    55                 //图片加载错误,加入错误处理
    56                 // dfd.resolve();
    57             })
    58             if (this.complete) setTimeout(function () {
    59                 dfd.resolve();
    60             }, 1000);
    61             imgdefereds.push(dfd);
    62             $.when.apply(null, imgdefereds).done(function () {
    63                 var w = $self.outerWidth(),
    64                         h = $self.outerHeight();
    65                 $self.css('position', 'relative');
    66                 $self.show();
    67                 // 当图片比预览区域小时不做任何改变
    68                 if (w < opt.maxWidth && h < opt.maxHeight){
    69                     $self.css('top', (opt.maxHeight - h) / 2);
    70                     return;
    71                 }
    72                 // 当实际图片比例大于预览区域宽高比例时
    73                 // 缩放图片宽度,反之缩放图片宽度
    74                 if (w / h > opt.maxWidth / opt.maxHeight) {
    75                     $self.width(opt.maxWidth);
    76                     $self.css('top', (opt.maxHeight - h * opt.maxWidth / w) / 2);
    77                 } else {
    78                     $self.height(opt.maxHeight);
    79                 }
    80             });
    81         });
    82 
    83     }
    84     $(document).ready(function () {
    85         $('.list1 img').resizeImg({
    86             maxWidth: 200,
    87             maxHeight: 300
    88         });
    89         $('.list2 img').resizeImg({
    90             maxWidth: 200,
    91             maxHeight: 300
    92         });
    93     });
    94 
    95 
    96 </script>
    97 </body>
    98 </html>
    View Code
  • 相关阅读:
    自己实现迭代器
    Python基础教程(入门教程),30分钟玩转Python编程!!
    centos7安装python 与卸载python
    docker 批量导入本地 tar 镜像包的 sao 操作
    无线路由器信道怎么设置 无线路由器信道选择哪个好
    关于打包压缩几种格式(gzip,bzip2,xz)的试验对比
    linux 长期运行程序的 四种方法
    win10快捷键大全 win10常用快捷键
    linux bg和fg命令
    Apache htpasswd命令用法详解
  • 原文地址:https://www.cnblogs.com/niubenbit/p/5177115.html
Copyright © 2011-2022 走看看