$(function() {
$("img.lazy").attr("src","2.jpg");
show();
$(window).scroll(function () {
show();
});
function show(){
$("img.lazy").each(function () {
var clientH = window.screen.availHeight;
var $height = $(this).height();
var $scroll = $(window).scrollTop();
var $off = $(this).offset().top;
var $val=$(this).attr("data-original");
if ($off - $scroll < clientH) {
$(this).attr("src",$val);
}
})
}
})

注:我写的这个方法,实现的效果是当图片的上边框显示在可视区域内时,把图片的真实路径赋值给src。

  如果需要让图片全部显示在可视区域时再换成真实src的话,需要把if判断中的条件换成   $off + $height - $scroll < clientH

首先给需要延迟加载的img标签加个class名lazy,然后把src的路径赋值给data-original,如下所示:

  <img class="lazy" data-original="images/xinan_searchLogo.png" alt=""/>

然后引入jq文件,然后再把上边的js代码放上即可

思路:1、首先给所有需要延迟加载的图片,添加一个默认的图片(2.jpg),让页面刚开始加载时只加载一张图片

   2、当图片显示在可视区域时,把data-original的值赋给src属性

     3、首页刚进入页面时有些图片就显示在可视区域内 所以要首先执行下show方法。然后再让滚轴滚动时再执行show方法

移动端图片延迟加载(css3实现加载转圈图标)

 function img_lazyLoad(imgSrc){
var $lazy=$("img.lazy");
//$lazy.attr("src",imgSrc);
var str='<div class="loading-circle loading-circle1"></div>'+
'<div class="loading-circle loading-circle2"></div>'+
'<div class="loading-circle loading-circle3"></div>'+
'<div class="loading-circle loading-circle4"></div>'+
'<div class="loading-circle loading-circle5"></div>'+
'<div class="loading-circle loading-circle6"></div>'+
'<div class="loading-circle loading-circle7"></div>'+
'<div class="loading-circle loading-circle8"></div>'+
'<div class="loading-circle loading-circle9"></div>'+
'<div class="loading-circle loading-circle10"></div>'+
'<div class="loading-circle loading-circle11"></div>'+
'<div class="loading-circle loading-circle12"></div>';
$lazy.each(function () {
$(this).parent().addClass("loading"); if($(this).parent(".loading").find(".loading-circle").length == 0){
$(this).parent(".loading").append(str);
}
var clientH = $(window).height(),
$height = $(this).height(),
$scroll = $(window).scrollTop(),
$off = $(this).offset().top,
$val=$(this).attr("data-original");
if ($off + $height - $scroll < clientH) {
$(this).attr("src",$val).removeClass("lazy");
$(this).load(function(){
$(this).parent().removeClass("loading");
$(this).parent().find(".loading-circle").remove()
})
}
})
}
img_lazyLoad();
$(window).on({
scroll:function(){
img_lazyLoad()
}
});
.loading{
position:relative;
}
.loading .loading-circle {
margin:-.49rem 0 0 -.49rem;
width: .98rem;
height: .98rem;
position: absolute;
left: 50%;
top: 50%;
}
.loading .loading-circle:before {
content: '';
display: block;
margin: 0 auto;
width: 15%;
height: 15%;
background-color: #333;
@include border-radius(100%);
}
.loading .loading-circle2 { transform: rotate(30deg);-webkit-transform: rotate(30deg);}
.loading .loading-circle3 { transform: rotate(60deg);-webkit-transform: rotate(60deg);}
.loading .loading-circle4 { transform: rotate(90deg);-webkit-transform: rotate(90deg);}
.loading .loading-circle5 { transform: rotate(120deg);-webkit-transform: rotate(120deg);}
.loading .loading-circle6 { transform: rotate(150deg);-webkit-transform: rotate(150deg);}
.loading .loading-circle7 { transform: rotate(180deg);-webkit-transform: rotate(180deg);}
.loading .loading-circle8 { transform: rotate(210deg);-webkit-transform: rotate(210deg);}
.loading .loading-circle9 { transform: rotate(240deg);-webkit-transform: rotate(240deg);}
.loading .loading-circle10 { transform: rotate(270deg);-webkit-transform: rotate(270deg);}
.loading .loading-circle11 { transform: rotate(300deg);-webkit-transform: rotate(300deg);}
.loading .loading-circle12 { transform: rotate(330deg);-webkit-transform: rotate(330deg);}
@-webkit-keyframes loading-circleFadeDelay {
0%, 39%, 100% { opacity:; }
40% { opacity:; }
}
@keyframes loading-circleFadeDelay {
0%, 39%, 100% { opacity:; }
40% { opacity:; }
}
.loading .loading-circle:before {
animation: loading-circleFadeDelay 1.2s infinite ease-in-out both;
-webkit-animation: loading-circleFadeDelay 1.2s infinite ease-in-out both;
}
.loading .loading-circle2:before {animation-delay: -1.1s; -webkit-animation-delay: -1.1s; }
.loading .loading-circle3:before { animation-delay: -1s;-webkit-animation-delay: -1s;}
.loading .loading-circle4:before { animation-delay: -0.9s;-webkit-animation-delay: -0.9s; }
.loading .loading-circle5:before { animation-delay: -0.8s;-webkit-animation-delay: -0.8s; }
.loading .loading-circle6:before { animation-delay: -0.7s;-webkit-animation-delay: -0.7s; }
.loading .loading-circle7:before { animation-delay: -0.6s;-webkit-animation-delay: -0.6s; }
.loading .loading-circle8:before { animation-delay: -0.5s;-webkit-animation-delay: -0.5s; }
.loading .loading-circle9:before { animation-delay: -0.4s;-webkit-animation-delay: -0.4s; }
.loading .loading-circle10:before { animation-delay: -0.3s;-webkit-animation-delay: -0.3s; }
.loading .loading-circle11:before { animation-delay: -0.2s;-webkit-animation-delay: -0.2s; }
.loading .loading-circle12:before { animation-delay: -0.1s;-webkit-animation-delay: -0.1s; }

最新文章

  1. hadoop启动是常见小问题
  2. tamper绕WAF详解
  3. for 循环中 i++和 ++i
  4. SQL的inner join、left join、right join、full outer join、union、union all
  5. [读书心得]资料分页的优化,以SQL 2012的 OFFSET-FETCH为例
  6. hive的学习入门(飞进数据仓库的小蜜蜂)
  7. DELPHI 里面的迭代
  8. eclipse启动不了报错java was started but returned exit code=13
  9. 温故而知新 C++基本类型
  10. 关于Qt信号与槽机制的传递方向性研究(结论其实是错误的,但是可以看看分析过程)
  11. Web Socket rfc6455 握 (C++)
  12. mysql语句的一个问题
  13. HDU 5242 Game(三个贪心)
  14. .32-浅析webpack源码之doResolve事件流(4)
  15. 洛谷 P1272 解题报告
  16. STL初始化initializer_list
  17. git教程:添加远程仓库
  18. dotNet程序员的Java爬坑之旅(二)
  19. linux-ssh登陆导语
  20. Linux下查看CPU型号,内存大小,硬盘空间的命令

热门文章

  1. ssm框架中的struts我的配置问题
  2. c#:浅克隆和深克隆,序列化和反序列化
  3. vim - multiple windows
  4. SQLServer2005+附加数据库时出错提示操作系统错误5(拒绝访问)错误5120的解决办法
  5. matlab编译器和程序发布
  6. 解决 No resource found that matches the given name (at &#39;icon&#39; with value &#39;@drawable/icon&#39;) 问题
  7. PL301 matrix内部模块
  8. 原生js快速渲染dom节点
  9. 助手系列之python的FTP服务器
  10. mongo的安装