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

  项目中自己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);的效果图如下

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

时间: 2024-12-03 14:30:39

基于jQuery的一个简单的图片查看器的相关文章

Android 简单的图片查看器源码实现

本文介绍了Android 简单的图片查看器源码实现,分享给大家,具体如下: public class MainActivity extends Activity { private EditText et_path; private ImageView iv; //创建handler 对象 // private Handler handler = new Handler(){ // // //处理消息 // public void handleMessage(android.os.Message

基于JQuery的一个简单的鼠标跟随提示效果_jquery

1.效果如图 2.实现思路 1 鼠标移入标题(这里是<a>标签) 创建一个div,div的内容为鼠标位置的文本 将创建好的div加到文档中 为提示层设置位置 2 鼠标移出标题 移除div 3 当鼠标在标题内移动时 同样添加div效果 3.JQuery实现代码 复制代码 代码如下: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="t

基于jquery的一个简单的脚本验证插件_jquery

主要用到了jquery,以及自定义的一个属性wl_check,属性说明如下: 1.语法 [need:true,type:int,maxlen:15,minlen:2] 2.关键字 need:文本输入框的必填限制 regtype:文本输入框的正则表达式类别验证 minlen:文本输入框的最小输入长度 maxlen:文本输入框的最大输入长度 minval:数字型文本输入框的最值 maxval:数字型文本输入框的最值 notval:下拉框的必选设置 minselect:单复选框的最少选项数 maxse

jquery实现移动端点击图片查看大图特效_jquery

本文的需求很简单:点击图片查看大图,再点大图隐藏.多用于移动端,因为移动端屏幕小,可能需要查看大图. 具体实现代码 <!DOCTYPE html> <html> <meta charset="utf-8"/> <head runat="server"> <title>JQuery点击图片查看大图by starof</title> <style type="text/css&quo

jQuery UI Tabs 基于 jQuery 的一个Tab选项卡导航,如何保存选项卡的选中状态

问题描述 jQueryUITabs基于jQuery的一个Tab选项卡导航,如何保存选项卡的选中状态比方我在TABS-2中的保存按钮中保存后,怎么将选项卡还是选中TABS-2呢? 解决方案 解决方案二:为你的TABS-2里的<a>命名一个id然后通过脚本设置aID.click()解决方案三:这个还真的不好说,页面保存数据几乎不能,我觉得还是借用xml或者其他存储数据的工具来保存,用到的时候再取出来就可以了解决方案四:引用1楼sandy945的回复: 为你的TABS-2里的<a>命名一

基于touch.js手势库+zepto.js插件开发图片查看器(滑动、缩放、双击缩放)_javascript技巧

最近由于公司项目需要图片查看器,网上搜了一圈,感觉资料很少,所以决定基于百度的touch.js手势库+zepto.js自己写了一个小插件,实现了左右滑动,双指缩放,双击缩放功能,基本使用还行,但是有时候还是不太顺畅,后续会慢慢完善:写的不好的地方望各位能够给出好的建议,谢谢! 源码地址:https://github.com/GLwen/molong_photoSwipe.git 演示:http://runjs.cn/detail/iceaaogh molong.css *{padding:0;m

基于jQuery Circlr插件实现产品图片360度旋转_jquery

Circlr是一款可以对产品图片进行360度全方位旋转展示的jQuery插件.Circlr通过按一定角度规律拍摄的产品图片,制作出可以使用鼠标拖动.鼠标滚轮和移动触摸来进行图片逐帧旋转的效果.比先前的Rollerblade,动画顺畅了许多,也更易于控制,该插件非常适合于商品的展示. 它的特点有: 支持水平或垂直方向旋转. 支持移动触摸事件. 支持滚动事件. 图片预加载处理. 可以反向和循环旋转图片. jQ酷实例教程:jQuery产品图片360度旋转Circlr 引入核心文件 <script sr

插件-【各位老大,新人求罩】jquery图片查看器的问题

问题描述 [各位老大,新人求罩]jquery图片查看器的问题 使用的是这款 jQuery功能强大的图片查看器插件, 这个插件所需的组图片写死代码在页面上就没问题,像这样: <ui class="pic_bottom_middle_ui" id="pic_bottom_middle_ui"> <li><img alt="图片图片图片图片图片图片图片图片图片图片图片图片图片图片图片图片图片图片图片图片图片" title=

基于JSP实现一个简单计算器的方法_JSP编程

本文实例讲述了基于JSP实现一个简单计算器的方法.分享给大家供大家参考.具体实现方法如下: index.jsp 复制代码 代码如下: <%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>  <%  String path = request.getContextPath();  String basePath = request.getSch