一个还算实用的分页组件:xy-pagination

简介: 一个还算实用的分页组件:xy-pagination

分页组件(有些可能叫做翻页组件)应该是一类比较常见的组件了,适用于数据比较多的情况。比如思否的问答页面:


image.png


结构比较简单,通常包括上一页、数字页面、下一页等功能,有些可能还会包含输入指定页码跳转、切换每页条数功能。


xy-pagination


xy-paginationxy-ui新增了一类组件,主要解决分页问题,下面简单介绍一下主要属性和方法,建议阅读在线文档,可以实时交互。


image.png


一个<xy-pagination></xy-pagination>标签就做出一个还算不错的分页功能


使用方式


使用方式很简单


  • npm
npm i xy-ui


  • cdn
<script type="module" src="https://unpkg.com/xy-ui/components/xy-pagination.js"></script>
<!--或者-->
<script type="module">
    import 'https://unpkg.com/xy-ui/components/xy-pagination.js'
</script>


  • 或者直接从github拷贝源码。
<script type="module" src='./node_modules/xy-ui/components/xy-pagination.js'></script>
<!--或者-->
<script type="module">
    import './node_modules/xy-ui/components/xy-pagination.js';
</script>


支持键盘左右键向前一页和向后一页。


使用

<xy-pagination pagesize="3" total="50"></xy-pagination>


属性


数据总数total、每页条数pagesize


设置或返回分页组件的数据总数和每页条数。


image.png

<xy-pagination pagesize="3" total="50">


总页数为:50/3 向上取整


JavaScript操作getset

pagination.pagesize; //获取
pagination.pagesize = 5;
pagination.total;
pagination.total = 100;
//原生属性操作
pagination.getAttribute('pagesize');
pagination.getAttribute('total');
pagination.setAttribute('pagesize',5);
pagination.setAttribute('total',100);


当页数较少时(不超过10页),则完整显示


image.png

<xy-pagination pagesize="3" total="20"></xy-pagination>


默认值defaultcurrent


可以给分页指定一个初始值defaultcurrent,默认为1


image.png

<xy-pagination defaultcurrent="7" pagesize="3" total="50"></xy-pagination>


JavaScript操作getset

pagination.current; //获取
pagination.current = 2;
//原生属性操作
pagination.getAttribute('current');
pagination.setAttribute('current',2);


如果设置的值超过最大页数,会取最大页数,比如上述最大页数是 17,设置 pagination.current=100,则实际会设置为 17


简约模式simple


可以添加simple属性,只展示当前页和总页数。


image.png

<xy-pagination simple pagesize="3" total="50"></xy-pagination>


事件


onchange


页码改变的回调,支持一下三种绑定方式。

<xy-pagination  onchange="XyMessage.info('当前页: '+this.current)" pagesize="3" total="50"></xy-pagination>
pagination.onchange = function(ev){
    //获取参数的几种方式
    /*
    event:{
        detail:{
            current,
            pagesize,
            total,
        }
    }
    */
    console.log(this.current);
    console.log(ev.target.current);
    console.log(ev.detail.current);
}
pagination.addEventListener('change',function(ev){
    console.log(this.current);
    console.log(ev.target.current);
    console.log(ev.detail.current);
})


实例


实际过程中可能有更复杂的场景,比如文章开头说的跳转功能,我们可以配合xy-selectxy-input实现。

<div class="pagination-demo">
    <xy-pagination id="pagination-demo" onchange="XyMessage.info('当前页: '+this.current)" pagesize="10" total="200"></xy-pagination>
    <xy-select defalutvalue="10" onchange="document.getElementById('pagination-demo').pagesize=this.value">
        <xy-option value="10">每页10条</xy-option>
        <xy-option value="15">每页15条</xy-option>
        <xy-option value="20">每页20条</xy-option>
    </xy-select>
    <span>跳转</span><xy-input type="number" defalutvalue="1" min="1" onchange="document.getElementById('pagination-demo').current = this.value"></xy-input><span>页</span>
</div>


效果如文章开头所示,可预览codepen demo点击预览


小节


xy-pagination使用很简单,就两三个属性,一个回调方法,希望有需要的小伙伴可以马上用起来,也希望可前往github给颗star,谢谢~


对了,接下来的计划是准备做一个日期选择器(用了那么多好像还从来没手写一个),貌似有些复杂,估计会花费稍久一点的时间,请耐心等待~


相关文章
|
JavaScript API PHP
vue element plus 快速开始
vue element plus 快速开始
817 0
|
存储 机器学习/深度学习 缓存
阿里云服务器4核8G配置租用价格:不同实例收费标准、活动价格对比与选购参考
4核8G配置是深受初创企业用户喜欢的云服务器配置,2025年截止目前,按量收费标准最低降至0.45元/小时,包年包月租用平均优惠月价最低仅需159.84元/月,按年购买还可享受u1实例4核8G活动价955.58元/年起的价格。云服务器实例规格和配置不同,收费标准与活动价格也不同,下面是小编为大家整理汇总的阿里云服务器4核8G配置2025年最新收费标准与活动价格。
1471 5
阿里云服务器4核8G配置租用价格:不同实例收费标准、活动价格对比与选购参考
Vue2分页(Pagination)
本文介绍了如何在 Vue3 中创建一个自定义分页组件(Pagination)。该组件支持传入多个参数,如当前页数、每页条数、是否隐藏单页分页等,并提供了丰富的功能,包括快速跳转、显示数据总量及分页器位置调整。通过示例代码展示了组件的具体实现方式,包括模板结构、计算属性、监听方法及样式设置。此外,还介绍了如何在项目中引入并使用该分页组件。
660 0
Vue2分页(Pagination)
|
开发工具 git 开发者
解决fatal: not a git repository (or any of the parent directories): .git问题
解决fatal: not a git repository (or any of the parent directories): .git问题
3202 1
|
存储 JavaScript 安全
vue项目打包优化:缩小体积productionSourceMap设置,使用cdn加速
vue项目打包优化:缩小体积productionSourceMap设置,使用cdn加速
1841 0
|
前端开发 UED 开发者
React 分页组件 Pagination
本文介绍了如何在 React 中实现分页组件,从基础概念到常见问题及解决方案。分页组件用于将大量数据分成多个页面,提升用户体验。文章详细讲解了分页组件的基本结构、快速入门步骤、以及如何处理页面跳转不平滑、页码过多导致布局混乱、边界条件处理和数据加载延迟等问题。通过本文,读者可以全面了解并掌握 React 分页组件的开发技巧。
432 2
|
Web App开发 JSON JavaScript
vue学习:chrome 中 vuetools 开发插件 的下载、安装
这篇文章介绍了如何在Chrome浏览器中下载、安装并测试Vue.js开发插件——vue-devtools。
4907 0
vue学习:chrome 中 vuetools 开发插件 的下载、安装
|
机器学习/深度学习 边缘计算 算法
深度学习在图像识别中的应用与挑战
本文深入探讨了深度学习技术在图像识别领域的应用,并分析了当前面临的主要挑战。通过对比传统图像处理方法,展示了深度学习如何提高识别的准确性和效率。同时,讨论了数据获取、模型泛化能力、计算资源需求等关键问题,并提出了未来研究的方向。 【7月更文挑战第18天】
215 3
|
Web App开发 JavaScript 前端开发
正确开启vue3.0调试工具vue-devtools
正确开启vue3.0调试工具vue-devtools
8128 2

热门文章

最新文章