jQuery实现简单的图片查看器
项目中自己diy了一个图片查看器。因为初始代码不是自己的,只是在上面改了一下也没有弄的很漂亮。等以后有时间了在重写一下样式和封装,作为备用的只是积累吧。如果有童鞋有用到,完全可以在此基础上改,比较容易,代码也比较简单
图片查看器主要有几个功能:
1.显示图片和图片信息(图片名称、发布者等等)
2.切换图片
3.关闭图片查看器
初始化接口函数pictureViewer.init:function(picInfos,tapNumber,isBig)
picInfos:传入图片组信息,必须,格式如下 varpicInfos=[ { "url":"default.png", "data":[ { "key":"名称:", "value":"测试图片" }, { "key":"发布者:", "value":"chua" } ] }, { "url":"test.jpeg", "data":[ { "key":"名称", "value":"测试图片" }, { "key":"发布者:", "value":"发大水发大水发顺风h" }, { "key":"这个图片的其他信息", "value":"vsfsgsdgfds234323424" } ] }, ... ]//传入参数的样式
tapNumber:要显示的图片在图片列表中的索引,必须,从0开始
isBig:是否使用大图查看,默认是false,可选
html及css源码如下(后面有一个例子)
<!DOCTYPEhtml> <htmllang="ch-cn"> <head> <metacharset="utf-8"> <scripttype="text/javascript"src='jquery-1.9.1.js'></script> <linkrel="stylesheet"type="text/css"href="imgTap.css"> <scripttype="text/javascript"src='imgTap.js'></script> <styletype="text/css"> html,body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,button,textarea,p,blockquote,th,td{ margin:0; padding:0; } *{ -webkit-box-sizing:border-box; -moz-box-sizing:border-box; box-sizing:border-box; } body{ font-family:"HelveticaNeue",Helvetica,Arial,sans-serif; } .imgTapDetail{ display:none; position:absolute; z-index:2000; top:0; width:100%; height:100%; background:nonetransparentscrollrepeat0%0%; color:#000!important; } .page-secShadow{ position:absolute; top:0; left:0; width:100%; height:100%; background:#000; background-color:rgba(0,0,0,.3); filter:alpha(opacity=50); } .page-shadowContent{ width:40%; margin:0auto; margin-top:20%; position:relative!important; min-width:400px; } .page-shadowContent.widget-big{ } .leftTap,.rightTap{ margin-top:50%; width:80px; height:80px; border-radius:50%; position:absolute; top:-80px; cursor:pointer; } .leftTap{ left:-30%; background:url("imgTap.png")00no-repeat; } .rightTap{ right:-30%; background:url("imgTap.png")-80px0no-repeat; } .closeTap{ width:60px; height:60px; border-radius:50%; position:absolute; right:-30px; top:-30px; cursor:pointer; background:url("imgTap.png")0-165pxno-repeat; z-index:99; } .widget{ padding:05px; -webkit-box-shadow:none; -moz-box-shadow:none; box-shadow:none; margin:3px010px0; } .widget-body{ background-color:#fff; -webkit-box-shadow:1px010px1pxrgba(0,0,0,.3); -moz-box-shadow:1px010px1pxrgba(0,0,0,.3); box-shadow:1px010px1pxrgba(0,0,0,.3); padding:12px; } .page-shadowContent.widget-body{ min-height:200px; padding:15px!important; border:1pxsolid#ccc; overflow:hidden; } .widget-body.row{ margin-right:-10px!important; margin-left:-10px!important; } .imgShow{ text-align:center; height:400px; padding-left:10px; padding-right:10px; /*background:url(default.png)centerno-repeat;*/ } #tapContent{ padding-left:10px; padding-right:10px; } .imgContent{ max-width:400px; max-height:400px; vertical-align:middle; } .widget-bodyimg{ max-width:100%; height:auto!important; } .imgShow>span{ height:100%; display:inline-block; vertical-align:middle; } .imgTapDetail.form-group{ overflow:hidden; margin-bottom:0!important; position:relative; min-height:34px; } .widget-detail.form-group.detail-LabelStyle{ float:left; padding-left:5px; /*max-width:50%;*/ text-align:left; line-height:34px!important; color:rgb(115,115,115); padding-right:5px; height:34px; overflow:hidden; left:0; top:0; } .widget-detail.form-group.detail-SpanStyle{ padding:8px06px5px; line-height:20px; width:auto; height:auto!important; min-height:34px; float:left; /*margin-left:80px;*/ word-break:break-all; } .widget-big{ width:80%; min-width:300px; } .widget-big.leftTap{ left:-10%; } .widget-big.rightTap{ right:-10%; } .widget-big.widget-detail{ padding:40px0; } .widget-big.imgShow{ min-height:500px; } .widget-big.imgShowimg{ max-width:800px; max-height:550px; } </style> </head> <body> <divclass="imgTapDetail"></div> <scripttype="text/javascript"> varpicInfos=[ { "url":"default.png", "data":[ { "key":"名称:", "value":"测试图片" }, { "key":"发布者:", "value":"chua" } ] }, { "url":"test.jpeg", "data":[ { "key":"名称", "value":"测试图片" }, { "key":"发布者:", "value":"发大水发大水发顺风h" }, { "key":"这个图片的其他信息", "value":"vsfsgsdgfds234323424" } ] } ] pictureViewer.init(picInfos,0,true); </script> </html>
js的源码如下
pictureViewer={ picInfos:[], curPicIndex:0, isBig:false,//大图查看?默认为false。默认图片显示区域为window宽度的40%,大图为80% imgTapSelector:".imgTapDetail", init:function(picInfos,tapNumber,isBig){ var_this=this; _this.picInfos=picInfos; _this.curPicIndex=tapNumber; _this.isBig=isBig; tapImgInit(); //图片查看器初始化 functiontapImgInit(){ //页面代码和事件只需要初始化一次即可 if(!_this.guid){ _this.guid=1; initTapImgHtml(); $(document).on("click","#rightTap",function(){ _this.curPicIndex++; if(_this.curPicIndex==_this.picInfos.length){ _this.curPicIndex=0; } $("#tapContent").html("") tapImg() }).on("click","#leftTap",function(){ _this.curPicIndex--; if(_this.curPicIndex<0){ _this.curPicIndex=_this.picInfos.length-1; } $("#tapContent").html("") tapImg(); }).on("click","#closeTap",function(){ $(_this.imgTapSelector).hide("fast") }) } varoffTop=top.document.body.scrollTop||top.document.documentElement.scrollTop; $('#imgTapPanel').css("margin-top",_this.isBig?(offTop>30?offTop:30):offTop+100) tapImg(); $(_this.imgTapSelector).show("fast"); } //初始化图片查看器的html代码 functioninitTapImgHtml(){ var$detailText='<divclass="page-secShadow">' +'<divid="imgTapPanel"class="page-shadowContent'+(_this.isBig?"widget-big":"")+'">' +'<divid="leftTap"class="leftTap"></div>' +'<divid="rightTap"class="rightTap"></div>' +'<divid="closeTap"class="closeTap"></div>' +'<divclass="widgetrow"><divclass="widget-body">' +'<divclass="widget-detailrow">' +'<divclass="imgShow">' +'<imgsrc="logo.png"id="tapImg"class="imgContent"><span></span>' +'</div>' +'<divid="tapContent"></div>' +'</div></div></div></div></div>'; $(_this.imgTapSelector).html($detailText); hoverButton("#leftTap",0,0,0,"-80px"); hoverButton("#rightTap","-80px",0,"-80px","-80px"); hoverButton("#closeTap",0,"-165px","-60px","-165px"); } //添加左右切换图标、关闭图标的hover响应事件。这个其实可以起到css中更好一些 functionhoverButton(id,x,y,A,B){ $(id).hover(function(){ $(this).css('background-position',A+''+B) },function(){ $(this).css('background-position',x+''+y) }) } //刷新当前图片及图片信息 functiontapImg(){ varreg=/[::]$/, leftTap=$("#leftTap"), rightTap=$("#rightTap"), imgTap=$("#tapImg"), contentTap=$("#tapContent"); leftTap.css("display","block"); rightTap.css("display","block"); if(_this.picInfos.length==1){ leftTap.css("display","none"); rightTap.css("display","none"); } imgTap.attr("src",_this.picInfos[_this.curPicIndex].url); vardata=_this.picInfos[_this.curPicIndex].data, dataLength=data.length, $text=""; for(vari=0;i<dataLength;i++){ $text+='<divclass="form-group">' +'<labelclass="detail-LabelStyle">'+data[i].key.replace(reg,"")+':</label>' +'<spanid="spanLoginName"class="detail-SpanStyle">'+data[i].value+'</span>' +'</div>'; }; contentTap.empty().append($text); setTimeout(function(){ if(_this.isBig&&imgTap.height()>400){ imgTap.parent().attr("style","height:inherit"); }else{ imgTap.parent().removeAttr("style"); } },1); } } }
希望本文所述对大家学习javascript程序设计有所帮助。