0

0

js实现分页的效果实例

小云云

小云云

发布时间:2018-03-19 17:01:43

|

2158人浏览过

|

来源于php中文网

原创

想必大家都用过百度查找过我们想要的信息,每次我们查找东西的时候,百度都会返给我们很多很多相似和有关的结果,而这些结果是不可能一页就显示完全的,一般都会分很多很多页,效果图如下。所以我们今天就是要分享一下,这个分页效果是怎么实现的。

百度分页图

首先我们观察这个分页

  1. 一页中显示的页码数是固定的

  2. 当当期页码大于等于2的时候,开始显示‘上一页’按钮,当总页数比当前显示的页码大于等于1的时候,开始显示'下一页'按钮的按钮

  3. 如果我们想要添加‘首页’和‘尾页’按钮的话,那当首页不能在页面显示的时候,添加‘首页’按钮。如果尾页不能显示在页面的时候添加‘尾页’按钮。

  4. 上面的情况确定之后,就是要进行细分的了,分情况进行讨论。首先我们分两大种情况:当页面显示的页数大于等于总页数的时候以及当页面显示的页数小于总页数的时候两种情况。前一种情况比较简单,就不再细说了,主要是当总页数比页面能显示的页数大的时候还要分三种情况:1、当前页的页码小于等于页面中能显示页数的二分之一时2、当前页为最后的几页的时候,以及除了上面两种情况的其他的情况。

文字描述可能有点难懂,所以接下来我们直接上例子,js中有详细的注释方便理解(首先说明,页面中显示的页数为5,至于有多少页如果在实际项目中应该是通过ajax动态获取数据的,然后根据数据的多少自动获得总页数。为了方便理解这里我是用的模拟数据)

HTML代码:

    注释的部分是我们要通过js动态添加的。

    JS+CSS实现的鼠标悬停弹出效果
    JS+CSS实现的鼠标悬停弹出效果

    一款JS+CSS实现的鼠标悬停弹出效果

    下载

    CSS代码:

        

    js代码:

        var json = {
            title : [
                '效果1',
                '效果2',
                '效果3',
                '效果4',
                '效果5',
                '效果6',
                '效果7',
                '效果8',
                '效果9',
                '效果10',
                '效果11',
                '效果12',
                '效果13',
                '效果14',
                '效果15',
                '效果16',
                '效果17',
                '效果18',
                '效果19',
                '效果20',
                '效果21',
                '效果22',
                '效果23',
                '效果24',
                '效果25',
                '效果26',
                '效果27',
                '效果28',
                '效果29',
                '效果30',
                '效果31',
                '效果32',
                '效果33',
                '效果34',
                '效果35',
                '效果36',
                '效果37',
                '效果38',
                '效果39',
                '效果40',
                '效果41',
                '效果42',
                '效果43',
                '效果44',
                '效果45',
                '效果46',
                '效果47',
                '效果48',
                '效果49',
                '效果50',
                '效果51'
            ]
        };
        var arr=[];
        var iNow = 9;
        page({
            id:'p1',
            nowNum:1,
            allNum:Math.floor(json.title.length/10),
            callBack:function(){alert(0)}
        });
    
        function page(opt){
            if(!opt.id){
                return false;
            }
            var obj = document.getElementById(opt.id);
            var nowNum = opt.nowNum||1;
            var allNum = opt.allNum||5;
            var callBack = opt.callBack||function(){};
            if(nowNum>=4&&allNum>=6){//首页出现的情况,就是当现在的页码大于等于4并且总页码大于等于6时
                var oA = document.createElement('a');
                oA.href = '#1';
                oA.innerHTML = '首页';
                obj.appendChild(oA);
            }
            if(nowNum>=2){//只要页码大于等于2就会出现上一页
                var oA = document.createElement('a');
                oA.href = '#'+(nowNum - 1);
                oA.innerHTML = '上一页';
                obj.appendChild(oA);
            }
            if(allNum<=5){//因为我们让一页最多显示5个页码,所以,如果总页码小与等于5,就说明页码可以显示完全
                for(var i=1;i<=allNum;i++){
                    var oA = document.createElement('a');
                    oA.href = '#'+i;
                    if(nowNum==i){
                        oA.innerHTML = i;
                    }else{
                        oA.innerHTML = '['+i+']';
                    }
                    obj.appendChild(oA);
                }
            }
            else{//下面的情况是当总页码大于5的时候进行的分类
                for(var i=1; i<=5;i++){
                    var oA = document.createElement('a');
                    if(nowNum == 1||nowNum==2){//在总页数大于5的情况下继续根据当前页进行细分。如果当前的页为1或者为2的时候
                        oA.href = '#'+i;
                        if(nowNum ==i){
                            oA.innerHTML = i;
                        }else{
                            oA.innerHTML = '['+i+']'
                        }
                    }else if((allNum - nowNum)==0||(allNum - nowNum)==1){//如果当前页为最后一页或者倒数第二页的时候,说明显示的5页即为最后5页,所以就是下面的公式
                        oA.href = '#'+(allNum - 5+i);
                        if((allNum - nowNum)==0&&i==5){
                            oA.innerHTML = (allNum - 5 + i);
                        }else if((allNum - nowNum)==1&&i==4){
                            oA.innerHTML = (allNum - 5 +i);
                        }else{
                            oA.innerHTML = '['+(allNum - 5 +i)+']'
                        }
                    }else{//当前页码处在5个页码的中间的时候
                        oA.href = '#'+(nowNum - 3 +i);
                        if(i==3){
                            oA.innerHTML = (nowNum - 3 + i);
                        }else{
                            oA.innerHTML = '['+(nowNum - 3 +i)+']'
                        }
                    }
                    obj.appendChild(oA);
                }
            }
            if((allNum - nowNum)>=1){//如果总页数比当前页码大于等于1的时候显示‘下一页’
                var oA = document.createElement('a');
                oA.href = '#'+(nowNum+1);
                oA.innerHTML = '下一页';
                obj.appendChild(oA);
            }
            if((allNum - nowNum)>=3&&allNum>=6){//如果总页数比当前页码大于等于3并且总页码大于等于6的时候显示‘尾页’;
                var oA = document.createElement('a');
                oA.href = '#'+allNum;
                oA.innerHTML = '尾页';
                obj.appendChild(oA);
    
            }
            callBack(nowNum,allNum);
            var aA = obj.getElementsByTagName('a');
            for(var i=0; i

    相关推荐:

    关于php分页代码的简单实现

    php实现仿百度分页

    jquery怎样做出分页效果

    热门AI工具

    更多
    DeepSeek
    DeepSeek

    幻方量化公司旗下的开源大模型平台

    豆包大模型
    豆包大模型

    字节跳动自主研发的一系列大型语言模型

    通义千问
    通义千问

    阿里巴巴推出的全能AI助手

    腾讯元宝
    腾讯元宝

    腾讯混元平台推出的AI助手

    文心一言
    文心一言

    文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

    讯飞写作
    讯飞写作

    基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

    即梦AI
    即梦AI

    一站式AI创作平台,免费AI图片和视频生成。

    ChatGPT
    ChatGPT

    最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

    相关专题

    更多
    2026赚钱平台入口大全
    2026赚钱平台入口大全

    2026年最新赚钱平台入口汇总,涵盖任务众包、内容创作、电商运营、技能变现等多类正规渠道,助你轻松开启副业增收之路。阅读专题下面的文章了解更多详细内容。

    54

    2026.01.31

    高干文在线阅读网站大全
    高干文在线阅读网站大全

    汇集热门1v1高干文免费阅读资源,涵盖都市言情、京味大院、军旅高干等经典题材,情节紧凑、人物鲜明。阅读专题下面的文章了解更多详细内容。

    40

    2026.01.31

    无需付费的漫画app大全
    无需付费的漫画app大全

    想找真正免费又无套路的漫画App?本合集精选多款永久免费、资源丰富、无广告干扰的优质漫画应用,涵盖国漫、日漫、韩漫及经典老番,满足各类阅读需求。阅读专题下面的文章了解更多详细内容。

    50

    2026.01.31

    漫画免费在线观看地址大全
    漫画免费在线观看地址大全

    想找免费又资源丰富的漫画网站?本合集精选2025-2026年热门平台,涵盖国漫、日漫、韩漫等多类型作品,支持高清流畅阅读与离线缓存。阅读专题下面的文章了解更多详细内容。

    12

    2026.01.31

    漫画防走失登陆入口大全
    漫画防走失登陆入口大全

    2026最新漫画防走失登录入口合集,汇总多个稳定可用网址,助你畅享高清无广告漫画阅读体验。阅读专题下面的文章了解更多详细内容。

    13

    2026.01.31

    php多线程怎么实现
    php多线程怎么实现

    PHP本身不支持原生多线程,但可通过扩展如pthreads、Swoole或结合多进程、协程等方式实现并发处理。阅读专题下面的文章了解更多详细内容。

    1

    2026.01.31

    php如何运行环境
    php如何运行环境

    本合集详细介绍PHP运行环境的搭建与配置方法,涵盖Windows、Linux及Mac系统下的安装步骤、常见问题及解决方案。阅读专题下面的文章了解更多详细内容。

    0

    2026.01.31

    php环境变量如何设置
    php环境变量如何设置

    本合集详细讲解PHP环境变量的设置方法,涵盖Windows、Linux及常见服务器环境配置技巧,助你快速掌握环境变量的正确配置。阅读专题下面的文章了解更多详细内容。

    0

    2026.01.31

    php图片如何上传
    php图片如何上传

    本合集涵盖PHP图片上传的核心方法、安全处理及常见问题解决方案,适合初学者与进阶开发者。阅读专题下面的文章了解更多详细内容。

    2

    2026.01.31

    热门下载

    更多
    网站特效
    /
    网站源码
    /
    网站素材
    /
    前端模板

    精品课程

    更多
    相关推荐
    /
    热门推荐
    /
    最新课程
    React 教程
    React 教程

    共58课时 | 4.4万人学习

    TypeScript 教程
    TypeScript 教程

    共19课时 | 2.6万人学习

    Bootstrap 5教程
    Bootstrap 5教程

    共46课时 | 3.1万人学习

    关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
    php中文网:公益在线php培训,帮助PHP学习者快速成长!
    关注服务号 技术交流群
    PHP中文网订阅号
    每天精选资源文章推送

    Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号