纯JS实现的批量图片预览加载功能

1.实现原理直接见代码,需要一张转圈的小图片,需要预览的所有图片默认的位置全是这张小图片,滚轮滚到原图需要出现的位置时候,预览加载替换小图片.实现效果

复制代码 代码如下:

复制代码 代码如下:

var util = {

$: function (id) {

return document.getElementById(id);

},

getElementsByClassName: function (oElm, strTagName, strClassName) {

var arrElements = oElm.getElementsByTagName(strTagName);

var arrReturnElements = new Array();

strClassName = strClassName.replace(/-/g, "\-");

var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");

var oElement;

for (var i = 0; i < arrElements.length; i++) {

oElement = arrElements[i];

if (oRegExp.test(oElement.className)) {

arrReturnElements.push(oElement);

}

}

return arrReturnElements;

},

getXY: function (obj) {

var sumTop = 0, sumLeft = 0;

while (obj != document.body) {

sumLeft += obj.offsetLeft;

sumTop += obj.offsetTop;

obj = obj.offsetParent;

}

return { x: sumLeft, y: sumTop }

}

};

var GalleryViewer = {

GalleryContainer: {},

smallImgs: [], //小图片数组

orginalImgs: [], //原始图片数组

init: function (id, imgs, classname, smallImgSrc) {

this.GalleryContainer = util.$(id);

this.orginalImgs = imgs;

for (var i = 0; i < imgs.length; i++) { //追加所有预览小图片

var img = document.createElement("img");

img.src = smallImgSrc;

img.className = classname;

this.GalleryContainer.appendChild(img);

}

this.smallImgs = util.getElementsByClassName(util.$(id), "img", classname);

if (util.getXY(GalleryViewer.GalleryContainer).y < window.screen.height) {//如果初始在页面开始部位直接预览加载

this.preloadImages();

}

var mousewheelevt = (/Firefox/i.test(navigator.userAgent)) ? "DOMMouseScroll" : "mousewheel" //FF doesn't recognize mousewheel as of FF3.x

if (document.attachEvent) //if IE (and Opera depending on user setting)

document.attachEvent("on" + mousewheelevt, GalleryViewer.orginalImgsAppear);

else if (document.addEventListener) //WC3 browsers

document.addEventListener(mousewheelevt, GalleryViewer.orginalImgsAppear, false);

},

preloadImages: function () {

for (var i = 0; i < GalleryViewer.orginalImgs.length; i++) {

(function (i) {

var imagePreload = new Image();

imagePreload.src = GalleryViewer.orginalImgs[i]; //预加载大图片

if (imagePreload.complete) { // 如果图片已经存在于浏览器缓存,直接调用回调函数

GalleryViewer.ImgsChange(i, imagePreload);

return; // 直接返回,不用再处理onload事件

}

imagePreload.onload = GalleryViewer.ImgsChange(i, imagePreload); //加载完成替换

})(i);

}

},

ImgsChange: function (i, obj) {

this.smallImgs[i].src = obj.src;

},

orginalImgsAppear: function () {

//alert(getXY(this.GalleryContainer).y - window.screen.height);

if (document.documentElement.scrollTop > util.getXY(GalleryViewer.GalleryContainer).y - window.screen.height) {

GalleryViewer.preloadImages();

}

}

};

(function () {

var imgs1 = ['../Content/images/gb_tip_layer.png', '../Content/images/gb_tip_layer.png', '../Content/images/gb_tip_layer.png'];

GalleryViewer.init("Div1", imgs1, "smallImgs1", "../Content/images/preload.gif");

//参数函数分别为div.id容器,原图地址数组,小图的类名,小图地址,具体图片地址请参照自己的项目

})();相关阅读:

保存CSS中的图片的几种方法

Linux 服务器的安全隐患以及防范对策

不升级到Windows 7的7个理由

php GeoIP的使用教程

提高MySQL查询效率的三个有效的尝试

输入汉字自动转为拼音(jsp实现方式)

Ubuntu技巧建立使用“Windows键”的快捷方式

SQL Server 2000游标使用方法

晋城吧对DiscuzX进行的前端优化要点

span margin 设置生效

ubuntu 编译安装php 5.3.3+memcache的方法

Good OS新版操作系统gOS 3.0桌面图片欣赏

让Vista具有MAC OS的部分功能

Javascript学习笔记 delete运算符

php 图片预览原理,JavaScript_纯JS实现的批量图片预览加载功能,1.实现原理直接见代码,需要一 - phpStudy...相关推荐

  1. html5图片自动翻转,纯js实现360度旋转预览图片特效

    这是一款纯js实现360度旋转预览图片特效.该js特效仅使用120行代码,即可实现通过滑块.或鼠标手动360度旋转图片,以及自动360度旋转图片的效果. 使用方法 HTML结构 import Roll ...

  2. emoji-mart或者emoji-picker-react实现一个类似于微信聊天的在线发送表情,再加一个带源码的纯js实现,emoji图片本地加载

    一. emoji-mart import './App.css'; import React, { Component } from 'react' import 'emoji-mart/css/em ...

  3. 七牛云 vue 图片上传简单解说,js 上传文件图片

    七牛云 vue 图片上传简单解说,js 上传文件图片 一.七牛云简介 首次使用七牛云存储进行项目的图片存储,整了一上午才整明白,这些官方的教程把明白人也给说糊涂了,文档很不规范. 七牛云有免费的使用额 ...

  4. html prefetch的原理,HTML5中rel属性的prefetch预加载功能使用

    在HTML5中,有个很有用但常被忽略的特性,就是预先加载(prefetch),它的原理是: 利用浏览器的空闲时间去先下载用户指定需要的内容,然后缓存起来,这样用户下次加载时,就直接从缓存中取出来,效率 ...

  5. Three.js(十四)—— 模型文件加载

    文章目录 14.Three.js 加载外部模型文件 14.1 Three.js 数据结构.导入导出 Threejs导出模型信息 自定义模型加载器文件 加载Three.js导出的模型数据 14.2 加载 ...

  6. 详解HTML5中rel属性的prefetch预加载功能使用

    在HTML5中,有个很有用但常被忽略的特性,就是预先加载(prefetch),它的原理是:  利用浏览器的空闲时间去先下载用户指定需要的内容,然后缓存起来,这样用户下次加载时,就直接从缓存中取出来,效 ...

  7. load方法引入本地html报错,分享基于plus.downloader的图片懒加载功能,支持本地缓存v1.1.0...

    今天试用了下hello mui上的图片懒加载功能,发现有些地方还无法满足我的需求,ajax动态加载的时候无法实现懒加载. 然后又看了下36kr的示例,因为代码关系实在太多了,耦合度比较高,遂自己动手写 ...

  8. vue java图片懒加载_vue 实现图片懒加载功能

    一个页面图片比较多的时候,需要对界面的图片进行懒加载处理,今天遇到了,做个懒加载的笔记. 1,需要安装vue的懒加载插件. npm install vue-lazyload --save-dev 2, ...

  9. Android图片加载框架最全解析(七),实现带进度的Glide图片加载功能

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/78357251 本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭 ...

最新文章

  1. Linux编程题:信号量同步三进程依次打印若干次ABC
  2. 前途到底是网络工程还是程序设计
  3. 相机原理updateTexImage
  4. 怎么将计算机网络设置家庭,“windows无法在此计算机上设置家庭组”问题如何解决...
  5. 微博深度学习平台架构和实践
  6. 50 道 CSS 基础面试题及答案
  7. DAS,NAS,SAN在数据库存储上的应用
  8. 解析软件系统稳定性的三大秘密
  9. 2021年10月Python小屋编程比赛获奖名单
  10. python进阶教程之异常处理
  11. “从0开始的FreeRTOS”系列教程第一讲
  12. QT 字体家族中的 字体名称中英文名称对应
  13. 清华大学老师的一席话——还是有点道理的
  14. 2017年-应届毕业生面试总结(二)
  15. 2021年金属非金属矿山支柱考试题库及金属非金属矿山支柱找解析
  16. Python:datetime时间UTC时间转东八区
  17. 小米3的卡槽,卡住了
  18. 【文献翻译】思科路由器安全配置合规性的SCAP基准-SCAP Benchmark for Cisco Router Security Configuration Compliance
  19. 2020iPadAir(第四代)对比iPadPro(第二代)
  20. 简单明了的介绍了python面向对象编程

热门文章

  1. 【每日一题】剑指 Offer 10- I. 斐波那契数列
  2. RabbitMQ(三):RabbitMQ 使用场景
  3. NotificationCenter
  4. kali linux解密栅栏密码,犯罪大师上帝之眼答案最新
  5. idea 更改自动补全返回值_整理了一些 IDEA 中比较骚的技巧
  6. datagrid底部显示水平滚动_easyUI datagrid 横向滚动条显示问题
  7. netty加载html文件的原理,Netty+html聊天室入门
  8. ipmi重启_重启ipmi服务器
  9. python平方数迭代器_对python中的高效迭代器函数详解
  10. c语言 求sin近似值,用泰勒公式求sin(x)的近似值