基于jQuery的一个简单的图片查看器

来源:互联网 发布:淘宝主图制作 编辑:程序博客网 时间:2024/05/29 19:03
项目中自己diy了一个图片查看器。因为初始代码不是自己的,只是在上面改了一下也没有弄的很漂亮。等以后有时间了在重写一下样式和封装,作为备用的只是积累吧。如果有童鞋有用到,完全可以在此基础上改,比较容易,代码也比较简单

  图片查看器主要有几个功能:

  1.显示图片和图片信息(图片名称、发布者等等)

  2.切换图片

  3.关闭图片查看器

 

初始化接口函数pictureViewer.init: function(picInfos,tapNumber,isBig)

  picInfos: 传入图片组信息,必须,格式如下

    var picInfos = [        {          "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源码如下(后面有一个例子)

<!DOCTYPE html><html lang="ch-cn">  <head>  <meta charset="utf-8">  <script type="text/javascript" src='jquery-1.9.1.js'></script>    <link rel="stylesheet" type="text/css" href="imgTap.css">    <script type="text/javascript" src='imgTap.js'></script>    <style type="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: "Helvetica Neue", Helvetica, Arial, sans-serif;    }    .imgTapDetail {        display: none;        position: absolute;        z-index: 2000;        top: 0;        width: 100%;        height: 100%;        background: none transparent scroll repeat 0% 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: 0 auto;        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") 0 0 no-repeat;    }    .rightTap {        right: -30%;        background: url("imgTap.png") -80px 0 no-repeat;    }    .closeTap {        width: 60px;        height: 60px;        border-radius: 50%;        position: absolute;        right: -30px;        top: -30px;        cursor: pointer;        background: url("imgTap.png") 0 -165px no-repeat;        z-index: 99;    }    .widget {        padding: 0 5px;        -webkit-box-shadow: none;        -moz-box-shadow: none;        box-shadow: none;        margin: 3px 0 10px 0;    }    .widget-body {        background-color: #fff;        -webkit-box-shadow: 1px 0 10px 1px rgba(0,0,0,.3);        -moz-box-shadow: 1px 0 10px 1px rgba(0,0,0,.3);        box-shadow: 1px 0 10px 1px rgba(0,0,0,.3);        padding: 12px;    }    .page-shadowContent .widget-body {        min-height: 200px;        padding: 15px!important;        border: 1px solid #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) center no-repeat;*/    }    #tapContent{        padding-left: 10px;        padding-right: 10px;    }    .imgContent {        max-width: 400px;        max-height: 400px;        vertical-align: middle;    }    .widget-body img {        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: 8px 0 6px 5px;        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: 40px 0;    }    .widget-big .imgShow{        min-height: 500px;    }    .widget-big .imgShow img{        max-width: 800px;         max-height: 550px;    }    </style>  </head>  <body >    <div class="imgTapDetail"></div>    <script type="text/javascript">    var picInfos = [      {        "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>
View Code

  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();                //图片查看器初始化        function tapImgInit(){            //页面代码和事件只需要初始化一次即可            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")                })            }            var offTop = 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代码        function initTapImgHtml(){            var $detailText = '<div class="page-secShadow" >'                + '<div id="imgTapPanel" class="page-shadowContent '+(_this.isBig?"widget-big":"")+'">'                + '<div id="leftTap" class="leftTap"></div>'                + '<div id="rightTap" class="rightTap"></div>'                + '<div id="closeTap" class="closeTap"></div>'                + '<div class="widget row"><div class="widget-body">'                + '<div class="widget-detail row">'                + '<div class="imgShow">'                + '<img src="logo.png" id="tapImg" class="imgContent"><span></span>'                + '</div>'                + '<div id="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中更好一些        function hoverButton(id, x, y, A, B){            $(id).hover(function(){                $(this).css('background-position', A + ' '+ B)            },function(){                $(this).css('background-position', x + ' '+ y)            })        }        //刷新当前图片及图片信息        function tapImg(){            var reg = /[::]$/,            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);            var data = _this.picInfos[_this.curPicIndex].data,            dataLength = data.length,            $text = "";            for(var i=0; i<dataLength; i++){                $text += '<div class="form-group">'                    + '<label class="detail-LabelStyle">'+data[i].key.replace(reg,"")+':</label>'                    + '<span id="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);        }    }}

  css中用到的切图imgTap.png为下面的图片

  

  测试例子pictureViewer.init(picInfos,0,true);的效果图如下

  测试例子pictureViewer.init(picInfos,0,false);的效果图如下

  这是一个比较粗糙的图片查看器,改起来也比较方便。后期如果有时间本人重写一下。

   

  如果觉得本文不错,请点击右下方【推荐】!

0 0
原创粉丝点击