摘要:另外我的这段代码可谓神来之笔,大家好好看看这一步很重要,否则图片不能完成缓冲效果原理在正在加载完后,就设置为可以缓冲。加载图片使用的效果淡入在离可视区以内的图片也开始加载了,提升体验度取消等默认不可点击效果解决。
以前在做项目的时候,把jquery.lazyload.js和iscroll.js一起使用,当滑动页面的时候,iscroll的滑动效果出来了,但是图片懒加载的效果没出来,主要是因为图片缓冲完毕后不能及时刷新
解决两者兼容问题操作:
1、(iscroll.js和lazyload.js的兼容(滑动时,缓冲好的图片不更新)):
onScrollMove: function(){
$("#"+id).trigger("scroll");//iscroller和loadlazy.js图片缓冲完毕后不能及时刷新,加上这个模拟浏览器被滑动,那么图片就可以刷新了
}
原理是:只要浏览器滚动,那么图片就会刷新,所以在scroll滚动时模拟浏览器滚动,这个问题就解决了。
另外我的这段代码可谓神来之笔,大家好好看看
2、
//这一步很重要,否则图片不能完成缓冲效果(原理:在src正在加载完后,就设置为可以缓冲。)
$("#storeImgs ul li img").on("load",function(){
$("#storeImgs ul li img").lazyload({
effect: "fadeIn", //加载图片使用的效果(淡入)
threshold : 400 //在离可视区400px以内的图片也开始加载了,提升体验度
});
});
下面先给大家看个全的代码,复制粘贴可直接看到全部效果。
若不能,请自行导入:
jquery-1.7.1.min.js,
jquery.lazyload.js,
iscroll.js三个库。
title
- ul{
- width:100%;
- }
- li{
- width:100%;
- margin-top:10px;
- }
- li img{width:100%;}
- window.onload = function(){
- var scroll = scrollWithLocation("wrapper","10px","10px","0px","0px");
- $("img").lazyload({
- effect: "fadeIn", //加载图片使用的效果(淡入)
- threshold : 400 //在离可视区400px以内的图片也开始加载了,提升体验度
- });
- }
- /*
- iscroll
- 1、取消select,input,textarea等默认不可点击效果
- 2、解决iscroll。js和loadlazy.js冲突
- */
- function scroll(id){
- var myScroll = new iScroll(id, {
- useTransform: false,
- onBeforeScrollStart: function (e) {
- var target = e.target;
- while (target.nodeType != 1) target = target.parentNode;
- //在iscroller里经常会有select,input等属性默认不可点击,阻止默认操作就可以点击了
- if (target.tagName != "SELECT" && target.tagName != "INPUT" && target.tagName != "TEXTAREA" && target.tagName != "A")
- e.preventDefault();
- },
- onScrollMove: function(){
- $("#"+id).trigger("scroll");//iscroller和loadlazy.js图片缓冲完毕后不能及时刷新,加上这个模拟浏览器被滑动,那么图片就可以刷新了
- },
- onScrollEnd: function(){
- }
- });
- return myScroll;
- }
- /*
- 初始化scroll,
- 1、设置id="wrapper"部分enscroll ( 参数依次是:id 上 右 下 左 (wrapper默认是position:absolute,overflow:hidden) scroller放在onload()里不容易出现界面混乱)
- 2、阻止浏览器默认滑动
- */
- function scrollWithLocation(id,top,right,bottom,left){
- var wrapper = document.getElementById(id);
- wrapper.style.position = "absolute";
- wrapper.style.top = top;
- wrapper.style.right = right;
- wrapper.style.bottom = bottom;
- wrapper.style.left = left;
- wrapper.style.overflow = "hidden";
- document.addEventListener("touchmove", function (e) { e.preventDefault(); }, false);//阻止浏览器的默认滑动
- return scroll(id);
- }
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/86971.html
摘要:今天要说的就是用实现局部滚动出现页面布局的问题。问题页面底部多出一部分或是页面显示不全,拉动回弹后内容又显示不全。原因数据异步加载,无法正确获取页面元素的真实高度。自定义方法请求成功切换页面后刷新解决异步加载数据布局出错或 相信对于前端攻城狮来说Iscroll.js,大家并不陌生,lite版本只有24kb。但可以解决 1、position:fixed在IOS端的兼容性问题 >移动端vi...
阅读 1063·2021-11-22 12:09
阅读 3844·2021-09-27 13:36
阅读 1555·2021-08-20 09:37
阅读 4241·2019-12-27 12:22
阅读 2483·2019-08-30 15:55
阅读 2506·2019-08-30 13:16
阅读 2964·2019-08-26 17:06
阅读 3558·2019-08-23 18:32