zoukankan      html  css  js  c++  java
  • 使用jQuery进行图片分页,每页形成九宫格

    1.引入css文件(可根据自己页面的布局进行调整)

    /* 图片框样式设置 */ 
    .list-main{width:100%;height:800px;position:relative;}
    
    .allImgList{
                overflow: hidden;
                width: 30%;
                height: 230px;
                margin-right: 3%;
                margin-top:10px;
                margin-bottom: 1%;
                text-align: center;
                float: left;
        }
    
    .list-img li{
                overflow: hidden;
                width: 98%;
                height: 200px;
                line-height:200px;            
                margin-bottom:10px;
                border: 1px solid #e8e8e8;
                float: left;
            }
    
    .list-img li img{
                 width:auto;
                 height:auto;
                 max-width:100%;
                 max-height:100%;    
                 vertical-align: middle;
                 text-align: center;    
            }
    
    .imgTitle{
            width: 100%;
        }
        
    
    /* 图片分页样式设置 */ 
    *{ margin:0; padding:0; list-style:none;}
    a{ text-decoration:none;}
    a:hover{ text-decoration:none;}
    .tcdPageCode{padding: 15px 20px;color: #ccc;text-align:center;position: absolute;margin-top: 82%;margin-left: 35%;}
    .tcdPageCode a{display: inline-block;color: #428bca;display: inline-block;height: 25px;    line-height: 25px;    padding: 0 10px;border: 1px solid #ddd;    margin: 0 2px;border-radius: 4px;vertical-align: middle;}
    .tcdPageCode a:hover{text-decoration: none;border: 1px solid #428bca;}
    .tcdPageCode span.current{display: inline-block;height: 25px;line-height: 25px;padding: 0 10px;margin: 0 2px;color: #fff;background-color: #428bca;    border: 1px solid #428bca;border-radius: 4px;vertical-align: middle;}
    .tcdPageCode span.disabled{    display: inline-block;height: 25px;line-height: 25px;padding: 0 10px;margin: 0 2px;    color: #bfbfbf;background: #f2f2f2;border: 1px solid #bfbfbf;border-radius: 4px;vertical-align: middle;}
    page.css

    2.引入js文件(不要忘记引入jQuery.js, 我这里引入的是jquery-1.7.2.min.js,可根据项目需要引入相应的版本,不能太低)

    (function($){
        var ms = {
            init:function(obj,args){
                return (function(){
                    ms.fillHtml(obj,args);
                    ms.bindEvent(obj,args);
                })();
            },
            //填充html
            fillHtml:function(obj,args){
                return (function(){
                    obj.empty();
                    //上一页
                    if(args.current > 1){
                        obj.append('<a href="javascript:;" class="prevPage">上一页</a>');
                    }else{
                        obj.remove('.prevPage');
                        obj.append('<span class="disabled">上一页</span>');
                    }
                    //中间页码
                    if(args.current != 1 && args.current >= 4 && args.pageCount != 4){
                        obj.append('<a href="javascript:;" class="tcdNumber">'+1+'</a>');
                    }
                    if(args.current-2 > 2 && args.current <= args.pageCount && args.pageCount > 5){
                        obj.append('<span>...</span>');
                    }
                    var start = args.current -2,end = args.current+2;
                    if((start > 1 && args.current < 4)||args.current == 1){
                        end++;
                    }
                    if(args.current > args.pageCount-4 && args.current >= args.pageCount){
                        start--;
                    }
                    for (;start <= end; start++) {
                        if(start <= args.pageCount && start >= 1){
                            if(start != args.current){
                                obj.append('<a href="javascript:;" class="tcdNumber">'+ start +'</a>');
                            }else{
                                obj.append('<span class="current">'+ start +'</span>');
                            }
                        }
                    }
                    if(args.current + 2 < args.pageCount - 1 && args.current >= 1 && args.pageCount > 5){
                        obj.append('<span>...</span>');
                    }
                    if(args.current != args.pageCount && args.current < args.pageCount -2  && args.pageCount != 4){
                        obj.append('<a href="javascript:;" class="tcdNumber">'+args.pageCount+'</a>');
                    }
                    //下一页
                    if(args.current < args.pageCount){
                        obj.append('<a href="javascript:;" class="nextPage">下一页</a>');
                    }else{
                        obj.remove('.nextPage');
                        obj.append('<span class="disabled">下一页</span>');
                    }
                })();
            },
            //绑定事件
            bindEvent:function(obj,args){
                return (function(){
                    obj.on("click","a.tcdNumber",function(){
                        var current = parseInt($(this).text());
                        ms.fillHtml(obj,{"current":current,"pageCount":args.pageCount});
                        if(typeof(args.backFn)=="function"){
                            args.backFn(current);
                        }
                    });
                    //上一页
                    obj.on("click","a.prevPage",function(){
                        var current = parseInt(obj.children("span.current").text());
                        ms.fillHtml(obj,{"current":current-1,"pageCount":args.pageCount});
                        if(typeof(args.backFn)=="function"){
                            args.backFn(current-1);
                        }
                    });
                    //下一页
                    obj.on("click","a.nextPage",function(){
                        var current = parseInt(obj.children("span.current").text());
                        ms.fillHtml(obj,{"current":current+1,"pageCount":args.pageCount});
                        if(typeof(args.backFn)=="function"){
                            args.backFn(current+1);
                        }
                    });
                })();
            }
        }
        $.fn.createPage = function(options){
            var args = $.extend({
                pageCount : 10,
                current : 1,
                backFn : function(){}
            },options);
            ms.init(this,args);
        }
    })(jQuery);
    jquery.page.js

    3.jsp页面

    <div id="certificateContent" class="list-main">         
                  <ul id="imgArea" class="list-img"></ul>                                               
    </div>

    4.js代码调用(此处我的需求是:点击按钮显示图片分页,每页9张图片。若要进入页面就显示分页,在初始化时加载即可)

     function getCertificateInfo(){
            
            $(".tcdPageCode").remove();
            $("#certificateContent").append('<div class="tcdPageCode" hidden=""></div>');
    
            var pageNo=1;     //加载第一页
            var pageCount=initCertificate(pageNo); 
    
            $(".tcdPageCode").createPage({   
                    pageCount: pageCount,
                    current: pageNo,
                    backFn: function (p) {
                        pageNo=p;
                       initCertificate(pageNo); 
                    }
                });
         
     }
     
     
      //加载图片
     function initCertificate(pageNo){      
         $("#imgArea").html("");       //清空上一次加载得图片
         
         var pageCount;       //总页数
         
         $.ajax({   
             cache: true,
             async: false,
             type: "POST",   
                dataType: "json",
                url: "selPublishCertificateFile",//请求的action路径  
                data:{
                    pageSize:9,
                    pageNumber:pageNo
                   },
                error: function () {
                    alert("请求失败", "error"); 
                },  
                success:function(data){       
                if(data.rows.length>0){
                    $(".tcdPageCode").show();
                     pageCount=data.pageCount;       //总页数               
                       var $ul=$("#imgArea");              
                      $.each(data.rows, function(index, element) {   //此处li标签中的a标签是为了点击图片,显示大图所用,不需要放大图片的,去掉a标签,直接加入img标签即可
                          var str = $('<div class="allImgList"><li><a class="fancybox" data-fancybox-group="gallery" data-fancybox-href="' + element.attachmentPath + '"><img src="' + element.attachmentPath + '"></a></li><div class="imgTitle">'+element.name+'</div></div>');
                          str.appendTo($ul);
                       });             
                      $ul.appendTo($("#certificateContent"));                  
                }
                
                }  
            });
         
         return pageCount;
     }

    5.java后台返回json数据格式

    {"pageCount":2,"
    total":11,
    "rows":[{"id":30,"name":"test1",
    "attachmentPath":"/web/qualcert/seeAttachment?companyID=1&certificateId=30&attachment=logo.png"}]}

    6.最后的效果如下

     7.备注(若想要实现点击图片,放大图片的效果)

    ①引入jquery.fancybox.css,  jquery.fancybox.js  (这是放大图片的一个插件,到官网下载即可)

    ②上面的a标签不要去掉

    ③初始化时加入这句话

    //放大图片, preload为0,是为了避免“浏览器缓存被禁用时出现大量http请求”。
    $('.fancybox').fancybox({ preload: 0 });

  • 相关阅读:
    负载均衡算法实现方式
    TCP三次握手和四次挥手
    深度解析Java内存原型
    缓存击穿、缓存穿透和缓存雪崩
    uni-app分包加载
    vuex的使用
    在web中打开exe程序并传参
    Vue 中引用高德地图
    .Net Core 从MySql数据库生成实体类 Entity Model
    vs2017 创建项目推送到Git上
  • 原文地址:https://www.cnblogs.com/chen-yun/p/7845513.html
Copyright © 2011-2022 走看看