纯JS实现的批量图片预览加载功能_图象特效

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

复制代码 代码如下:

<div style="height: 2500px;" id="txtScrollTop">
</div>
<div id="galleryList">
</div>

复制代码 代码如下:

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容器,原图地址数组,小图的类名,小图地址,具体图片地址请参照自己的项目
})();

时间: 2024-10-24 17:57:30

纯JS实现的批量图片预览加载功能_图象特效的相关文章

js多图片预览加载效果

这里提供一款关于图片预览的js代码,我们这个效果可以实现多图片批量预览效果,有需要的朋友可以参考一下. var util = { $: function (id) { return document.getElementById(id); }, getElementsByClassName: function (oElm, strTagName, strClassName) { var arrElements = oElm.getElementsByTagName(strTagName); va

又一个小巧的图片预加载类_图象特效

复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <HTML> <HEAD> <TITLE> New Document </TITLE> <meta http-equiv="Co

用javascript实现的图片马赛克后显示并切换加文字功能_图象特效

<script language="JavaScript1.1"> var slidespeed=3000 var slideimages=new Array("yun_qi_img/2482150_1_7.jpg","yun_qi_img/2482150_2_1.jpg","yun_qi_img/2482150_3_2.jpg","yun_qi_img/2482150_3_2.jpg",&qu

JS上传图片前实现图片预览效果的方法

 这篇文章主要介绍了JS上传图片前实现图片预览效果的方法,涉及javascript操作图片的技巧,需要的朋友可以参考下     本文实例讲述了JS上传图片前实现图片预览效果的方法.分享给大家供大家参考.具体实现方法如下:   代码如下: <!doctype html public "-//w3c//dtd html 4.01//en" "http://www.w3.org/tr/html4/strict.dtd"> <html xmlns=&quo

JS上传图片前实现图片预览效果的方法_javascript技巧

本文实例讲述了JS上传图片前实现图片预览效果的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: <!doctype html public "-//w3c//dtd html 4.01//en" "http://www.w3.org/tr/html4/strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <met

Android实现从缓存中读取图片与异步加载功能类_Android

本文实例讲述了Android实现从缓存中读取图片与异步加载功能类.分享给大家供大家参考,具体如下: 在新浪微博的微博列表中的图片,为了加速其显示也为了加快程序的响应,可以参考该图片异步加载类实现. public class AsyncImageLoader { //SoftReference是软引用,是为了更好的为了系统回收变量 private HashMap<String, SoftReference<Drawable>> imageCache; public AsyncImag

jquery 实现图片的缓加载功能

问题描述 jquery 实现图片的缓加载功能 目标:实现界面上图片的按需加载--即缓加载: 难点:页面是使用模板生成的: 如下: <script type="text/html" > <div class="entry"> <img src="../js/img/grey.gif" data-original="../js/img/bmw_m1_hood.jpg" width="765&

Android实现从缓存中读取图片与异步加载功能类

本文实例讲述了Android实现从缓存中读取图片与异步加载功能类.分享给大家供大家参考,具体如下: 在新浪微博的微博列表中的图片,为了加速其显示也为了加快程序的响应,可以参考该图片异步加载类实现. public class AsyncImageLoader { //SoftReference是软引用,是为了更好的为了系统回收变量 private HashMap<String, SoftReference<Drawable>> imageCache; public AsyncImag

让右键菜单拥有图片预览音乐试听功能

常用电脑的人,相信也少不了和图片.音乐打交道:这时候我们往往有这样的问题,打开有大量图片的文件夹时,往往找不到自己需要的图片:设为缩略图模式吧,往往会卡很长时间用来读取缩略图,很不爽. 这里提供个简单的方法,让你的右键菜单拥有图片预览及音乐试听功能.这样不就爽多了,而且速度很快. 要想实现此功能需要一个软件来帮忙,这个小东西提取自ACDSee. 下载下来后解压,双击configration,在弹出的界面上点"写入注册表",反之,如不需要这个功能点"清除注册表". 图