js 实现模仿酷站的分页控件

酷站分页控件效果图:

源码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script type="text/javascript" src="../Style/js/jquery-1.4.1.js"></script>
    <script type="text/javascript">
        var leftNum = 6; //左侧显示页码个数,如果当前页的左侧页码数量超出4个,那么需要出现省略号
        var centerNum = 7;//中间显示页码个数
        var count =21; //总页码数

        function CreatePager(cur_index) {
            var item = "";
            item  = LoadItem(cur_index);
            $("#div_paper").html(item);
        }

       

        //总页数>7
        function LoadItem(cur_index) {
            var item = "";  
            var startIndex = 0;
            var endIndex = 0;
            if (cur_index <= leftNum) {//如果当前页码小于5,那么加载1-7(中间要显示的页码数量)
                startIndex = 1;
                if (centerNum > count) {
                    endIndex = count;
                } else {
                    endIndex = centerNum;
                }
            } else {//加载当前页码的前3项和后3个页码,
                item += "<li class=\"pagerItem\" οnclick=\"CreatePager(1)\">1</li>";
                item += "<li class=\"null_pagerItem\">...</li>";
                startIndex = cur_index - 3;
                endIndex = cur_index + 3;
            }
           
            if (endIndex > count) {
                endIndex = count;
                startIndex = count - centerNum + 2; //+2 是为了补足中间显示的页码个数
                startIndex = startIndex == 0 ? 1 : startIndex;
            }
            for (var i = startIndex; i <= endIndex; i++) {
                if (i == cur_index) {
                    item += "<li class=\"cur_pagerItem\" οnclick=\"CreatePager(" + i + ")\">" + i + "</li>";
                } else {
                    item += "<li class=\"pagerItem\" οnclick=\"CreatePager(" + i + ")\">" + i + "</li>";
                }
            }
            if (endIndex < count) { //...末尾页码的加载
                if ((endIndex + 1) >= count) {//中间页码的最后一个页码是倒数第二个页码时,...末尾的页码就是最后一页的页码
                    item += "<li class=\"null_pagerItem\">...</li>";
                    for (var i = count; i <= count; i++) {
                        item += "<li class=\"pagerItem\" οnclick=\"CreatePager(" + i + ")\">" + i + "</li>";
                    }
                } else {//否则,加载倒数后两个为...后面的页码
                    item += "<li class=\"null_pagerItem\">...</li>";
                    for (var i = count-1; i <= count; i++) {
                        item += "<li class=\"pagerItem\" οnclick=\"CreatePager(" + i + ")\">" + i + "</li>";
                    }
                }
            }
            return item;
        }
        
    </script>
    <style type="text/css">
        <!--
        .pagerItem
        {
            float:left; margin-right:5px; border:solid 1px blue; height:20px; line-height:20px; text-align:center; vertical-align:middle; width:20px; margin-top:5px;
            }
            .cur_pagerItem
        {
            float:left; background-color:#5e5e5e; margin-right:5px; border:solid 1px blue; height:20px; line-height:20px; text-align:center; vertical-align:middle; width:20px; margin-top:5px;
            }
             .null_pagerItem
        {
            float:left;   margin-right:5px;   height:20px; line-height:20px; text-align:center; vertical-align:middle; width:20px; margin-top:5px;
            }
        -->
    </style>
</head>
<body οnlοad="CreatePager(1)" style="margin:0; padding:0">
    <form   runat="server" id="form1">
       
        <div style="border:solid 1px red;height:30px; line-height:30px; text-align:center; margin:0; padding:0; vertical-align:middle">
            <ul style="display:inline; list-style-type:none; text-align:center;" id="div_paper">
                
            </ul>
        </div>
    </form>
</body>
</html>

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值