图片延迟加载(用jq自己写的方法)
$(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; }
图片延迟加载(用jq自己写的方法)的更多相关文章
- 第一次自己写jquery图片延迟加载插件,不通用,但修改一下还是可以使用到很多页面上的
不断修改完善中…… /*! * jquery.lazyoading.js *自定义的页面图片延迟加载插件,比网上的jquery.lazyload简单,也更适合自己的网站 *使用方法: 把img 的cl ...
- javascript实现图片延迟加载方法汇总(三种方法)
看到一些大型网站,页面如果有很多图片的时候,当你滚动到相应的行时,当前行的图片才即时加载的,这样子的话页面在打开只加可视区域的图片,而其它隐藏的图片则不加载,一定程序上加快了页面加载的速度,跟着小编一 ...
- 两种图片延迟加载的方法总结jquery.scrollLoading.js与jquery.lazyload.js
估计网上能查到的最多的两种图片延迟加载方法就是jquery.scrollLoading.js与jquery.lazyload.js了,其中jquery.lazyload.js的调用方法因为有网友爆出的 ...
- jquery.lazyload 实现图片延迟加载jquery插件
看到了淘宝产品介绍中,图片是在下拉滚动条时加载,这是一个很不错的用户体验.减少了页面加载的时间了,也减轻了服务器的压力,就查了下用JQuery.. 什么是ImageLazyLoad技术 在页面上图 ...
- JS实现移动端图片延迟加载
图片延迟加载常见的有,jquery.lazyload.js,原生JS实现的echo.js.但是都是必须给图片设置宽高. 因为项目是移动端,而且无法在加载前知道图片的宽高,所以,只好自己写了一个. 既然 ...
- JQuery LazyLoad实现图片延迟加载-探究
对于大量图片的网站,图片延迟加载是提高速度和性能的好方法. 目前图片延迟加载主要分两大块,一是触发加载(根据滚动条位置加载图片):二是自动预加载(加载完首屏后n秒后自动加载其他位置的图片).大体常用的 ...
- Lazy Load 图片延迟加载(转)
jQuery Lazy Load 图片延迟加载来源 基于 jQuery 的图片延迟加载插件,在用户滚动页面到图片之后才进行加载. 对于有较多的图片的网页,使用图片延迟加载,能有效的提高页面加载速度. ...
- 利用图片延迟加载来优化页面性能(jQuery)
图片延迟加载也称懒加载,常用于页面很长,图片很多的页面,以电子商务网站居多,比如大家常上的京东,淘宝,页面以图居多,整个页面少说几百K,多则上兆,如果想一次性加载完成,不仅用户要哭了,服务器也得哭了. ...
- 前端页面优化:javascript图片延迟加载
自己写了个简单的图片延迟加载小插件. 功能如下: 页面刷新,当前屏幕图片直接加载真实地址,body被卷去的部分和下方未显示的部分的img均加载通用图片如:loding.gif 随着屏幕上下滚动加载相应 ...
随机推荐
- 以Debug模式启动JBoss
JBoss服务器的启动方法: 假设JBoss的安装目录为$JBOSS_HOME,Windows以及Linux环境下的Debug模式的启动方法分别为:Windows环境:找到Windows下的JBoss ...
- [Android Tips] 4. Dismiss PopupWindow when touch outside
PopupWindow.setFocusable(true);
- First insmod a module
不得不说网上坑爹的文章比虱子还多,参考这位仁兄调试成功 喜欢C的人却靠着Java产业吃饭,人艰不拆... 对于未知的东西,有个习惯,run success first,then research en ...
- ExtJs、Struts2、Hibernate3.2登录页面的简单实现
1.思想的大致模型 2.建立数据库test和数据库表tb_user 1 CREATEDATABASE `test`; 2 CREATETABLE `test`.`tb_user` ( 3 `user ...
- 什么是JSP?它有哪些特点?
什么是JSP? 它有哪些特点? JSP是服务器端的一种基于java语言的网页技术,它是由一些JSP标记,java程序段以及HTML文件组成的结合体,以java语言作为其内置的脚本语言. 实质上是通 ...
- 1.1 C#简介
大家好,这是我的C#(读做 "C sharp")学习之旅,先简介一下我了解的C#吧! 首先,说到C#,就不得不提到微软的.NET..NET是微软推出的软件开发和运行平台,允许应用程 ...
- JS实时数据运算
应朋友需要制作的一个小页面 <script type="text/javascript"> function cal(ida,idb,idc,idd) { var nu ...
- 从头开始一步一步实现EF6+Autofac+MVC5+Bootstarp极简前后台ajax表格展示及分页(二)前端修改、添加表格行点击弹出模态框
在前一篇中,由于不懂jquery,前端做的太差了,今天做稍做修改,增加一个跳转到指定页面功能,表格行点击样式变化.并且在表格中加入bootstarp的按钮组,按钮点击后弹出模态框,须修改common, ...
- 学习jQuery之旅
早就听说了Jquery的大名,一直没有细心的学习一下,通过阅读收集的一些资料,感觉Jquery真的很强大.决定开始自己的学习Jquery之旅.在这里不是为大家讲解Jquery(深知水平有限),只是将自 ...
- 重置样式 - Eric Meyer的原版
重置样式就是一组CSS声明,用来覆盖不同浏览器渲染HTML元素时的各种默认样式.重置样式一般会被加入到主样式文件的开头,用来将各个浏览器的自有默认样式重置成统一表现,确保样式表中后续追加的样式在不同浏 ...