基本信息
源码名称:图片变大预览
源码大小:0.08M
文件格式:.rar
开发语言:js
更新时间:2015-12-16
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
图片变大预览
图片变大预览
(function(win){
function myLightBox(elem,isZoom,src){
this.elem=typeof elem=='object' ? elem : this.$$('lightBox')[0];
this.isShow=false;
this.aImages=this.elem.getElementsByTagName('img');
this.index=0;
this.src=src || '_src';
this.isZoom=typeof isZoom=='undefined' ? true : isZoom;
this.len=this.aImages.length;
this.showPopup();
};
var lightBox=myLightBox.prototype;
//============显示弹出层
lightBox.showPopup=function(){
var self=this,
img=this.aImages;
for(var i=0;i<this.len;i ){
img[i].index=i;
img[i].onclick=function(){
self.index=this.index;
self.createPopup(this.getAttribute(self.src),this.getAttribute('_title'));
}
}
};
//===========class获取元素
//params s 类名
//params t 节点名
//params p 父辈以上节点 dom对象
lightBox.$$=function(s,t,p){
var aElement=(p||document).getElementsByTagName(t||'*'),
reg=new RegExp('(^|\\s)' s '(\\s|$)'),
aResult=[];
for(var i=0;i<aElement.length;i ){
reg.test(aElement[i].className) && aResult.push(aElement[i]);
};
return aResult;
};
//==============创建弹出层展示
//params src 图片路径
//params title 显示文字
lightBox.createPopup=function(src,title){
var oPopup=document.createElement('div');//弹出层外框
var oMask=document.createElement('div');//遮罩
var oPrev=document.createElement('div');//上按钮
var oNext=document.createElement('div');//下按钮
var oBottom=document.createElement('div');//底部盒子
var oTitle=document.createElement('div');//底部文字盒子
var oTitleTxt=document.createElement('div');
var oClose=document.createElement('div');//关闭
var oImg=document.createElement('img');//图片
oMask.className='mask';
oPopup.className='popup';
oPrev.className='prev btn';
oNext.className='next btn';
oBottom.className='popupBottom';
oTitle.className='popupTitle';
oClose.className='popupClose';
oTitle.innerHTML=title || '';
var vw=document.documentElement.clientWidth,
vh=document.documentElement.clientHeight;
oPopup.style.margin='0';
oPopup.style.left=(vw-320)/2 'px';
oPopup.style.top=(vh-240)/2 'px';
this.hide(oPrev);
this.hide(oNext);
this.hide(oBottom);
this.hide(oClose);
this.hide(oImg);
oBottom.appendChild(oClose);
oBottom.appendChild(oTitle);
oPopup.appendChild(oPrev);
oPopup.appendChild(oNext);
oPopup.appendChild(oImg);
oPopup.appendChild(oBottom);
document.body.appendChild(oMask);
document.body.appendChild(oPopup);
var self=this;
oImg.onload=function(){
self.show(this);
self.show(oClose);
self.show(oBottom);
self.show(oNext);
self.show(oPrev);
this.style.height='auto';
this.style.width='auto';
var w=this.width,docH=self.getFullHeight();
var oldw=self.css(oPopup,'width'),oldh=self.css(oPopup,'height');
oPopup.style.height='auto';
oPopup.style.width='auto';
oPopup.style.opacity=0;
oPopup.style.filter='alpha(opacity:0)';
oMask.style.height=docH 'px';
var h=oPopup.clientHeight;
w=oPopup.clientWidth;
oPopup.style.height=oldh;
oPopup.style.width=oldw;
self.hide(oBottom);
self.hide(oImg);
self.move(oPopup,{opacity:100,height:h,width:w,left:parseInt((vw-w)/2),top:parseInt((vh-h)/2)},5,function(){
self.show(oBottom);
self.show(oImg);
oImg.style.width='100%';
self.isShow=true;
});
};
self.move(oMask,{opacity:60},5);
oImg.src=src;
this.prev=oPrev;
this.next=oNext;
this.close=oClose;
this.img=oImg;
this.txt=oTitle;
this.btm=oBottom;
this.p=oPopup;
this.mask=oMask;
this.nexts();
this.prevs();
this.stopPropagation();
this.closes();
this.isZoom && this.mouseWheels();
this.resizefn();
};
//============重置窗口大小
lightBox.resizefn=function(){
if(!this.p)return;
var self=this;
this.addEvent(window,'resize',function(){
if(!self.p)return;
var viw=document.documentElement.clientWidth,
vih=document.documentElement.clientHeight,
h=self.p.offsetHeight,w=self.p.offsetWidth;
self.p.style.left=(viw-w)/2 'px';
self.p.style.top=(vih-h)/2 'px';
self.mask.style.height=Math.max(self.mask.offsetHeight,vih) 'px';
self.mask.style.width=Math.max(self.mask.offsetWidth,viw) 'px';
})
};
//==============鼠标滚轮
lightBox.mouseWheels=function(){
this.addEvent(document,'mousewheel',wheel);
this.addEvent(document,'DOMMouseScroll',wheel);
var self=this;
var isBeyond=false;
function wheel(e){
var ev=window.event||e,flag=true,
h=self.img.height,w=self.img.width,
l=self.p.offsetLeft,t=self.p.offsetTop,
scale=h/w,
nw=Math.round(20/scale),
txtH=Math.max(self.btm.offsetHeight,22) 8,
viw=document.documentElement.clientWidth-80,
vih=document.documentElement.clientHeight-50,
maxH=self.p.offsetHeight,
maxW=self.p.offsetWidth;
//FF detail 往上小于0,往下大于0;
//IE wheelDelta 往上大于0,往下小于0
flag=ev.wheelDelta ? ev.wheelDelta<0 : ev.detail>0;
if(maxW>=viw || maxH>=vih){
isBeyond=true;
};
switch(flag)
{
//往下
case true:
if(h<150 || w<200)return;
h-=20;
w-=nw;
l =nw/2;
t =10;
isBeyond=false;
break;
default : //往上
h =20;
w =nw;
l-=nw/2;
t-=10;
};
if(!isBeyond){
self.css(self.p,'height',h txtH);
self.css(self.p,'left',l);
self.css(self.p,'width',w);
self.css(self.p,'top',t);
ev.preventDefault && ev.preventDefault();
}
return false;
}
};
//==============阻止冒泡
lightBox.stopPropagation=function(){
this.p.onclick=function(ev){
var e=window.event||ev;
e.stoppropagation ? e.stopPropagation() :(e.cancelBubble=true);
}
};
//
//=============隐藏
lightBox.hide=function(o){
o.style.display='none';
};
//=============显示
lightBox.show=function(o){
o.style.display='block';
};
//==============绑定事件
//params o dom对象
//params type 事件类型
//params fn 事件函数
lightBox.addEvent=function(o,type,fn){
return o.addEventListener ? o.addEventListener(type,fn,false) : o.attachEvent('on' type,fn);
};
//==============解除事件绑定
lightBox.removeEvent=function(o,type,fn){
return o.detachEvent ? o.detachEvent('on' type,fn) : o.removeEventListener(type,fn);
};
//==============关闭
lightBox.closes=function(){
var self=this;
document.onclick=this.close.onclick=function(){
if(!self.isShow)return;
self.move(self.mask,{opacity:0},5,function(){
document.body.removeChild(self.mask);
});
document.body.removeChild(self.p);
self.isShow=false;
delete self.p,self.prev,self.next,self.close,self.img,self.txt,self.btm,self.mask;
self.img.onload=null;
};
};
//==============点击上一张
lightBox.prevs=function(){
var self=this;
this.prev.onclick=function(){
var index=--self.index;
if(index<0){
index=self.index=self.len-1;
};
self.clickSwitch(index);
}
};
//==============点击下一张
lightBox.nexts=function(){
var self=this;
this.next.onclick=function(){
var index= self.index;
if(index>=self.len){
index=self.index=0;
};
self.clickSwitch(index);
}
};
//================点击切换公有代码
lightBox.clickSwitch=function(i){
var h=this.hide;
h(this.prev);
h(this.next);
h(this.close);
h(this.btm);
h(this.img);
this.img.src=this.aImages[i].getAttribute(this.src);
this.txt.innerHTML=this.aImages[i].getAttribute('_title');
}
//=============缓冲运动
//params o dom对象
//params json 散列表
//params fx Boolean值
//params fn 回调函数,可选
lightBox.move=function(o,json,fx,fn){
var self=this;
o.timer && clearInterval(o.timer);
o.timer=setInterval(function(){
var bStop=true;
var cur=0;
for(var attr in json){
cur=attr=='opacity' ? parseInt(parseFloat(self.css(o,attr)).toFixed(2)*100):parseInt(self.css(o,attr));
var speed=(json[attr]-cur)/fx;
speed=speed>0?Math.ceil(speed):Math.floor(speed);
if(attr=='opacity'){
o.style.filter='alpha(opacity:' (speed cur) ')';
o.style.opacity=(speed cur)/100;
}else{
o.style[attr]=(cur speed) 'px';
}
if(cur!=json[attr]){
bStop=false;
}
if(bStop){
clearInterval(o.timer);
(typeof fn=='function')&&fn();
}
}
},30)
};
//=============获取元素样式
//params o dom对象
//params attr 属性
lightBox.css=function(o,attr,val){
if(arguments.length==2){
return o.currentStyle ? o.currentStyle[attr] : getComputedStyle(o,false)[attr];
}
else
{
o.style[attr]=val 'px';
}
};
//=============获取页面高度
lightBox.getFullHeight=function(){
var sh=document.body.scrollHeight,
ch=document.documentElement.clientHeight;
return Math.max(sh,ch);
};
win.myLightBox=myLightBox;
})(window);
var taotao=new myLightBox('lightBox');
//第一个参数传入dom对象或class,如给页面所有图片加显示传入 document (注意别加引号);
//第二个参数boolean ,是否开启鼠标滚轮缩放 ,默认开启,可选
//第三个参数是图片真实路径,默认 '_src' 可选
//lightBox.init(o,isZoom,src);
//注意要显示的图片尺寸不能太小,否则不好看了。