html+vue.js 实现漂亮分页功能可兼容IE

作者:echoyya 时间:2024-05-11 09:13:25 

当功能比较简单,在单一html中使用vue.js分页展示数据,并未安装脚手架,或使用相关UI框架,此时需要手写一个分页器,不失为最合理最便捷的解决方案

先看一下实现效果:

 html+vue.js 实现漂亮分页功能可兼容IE

 上代码:

1.简单搞一搞 CSS,此处代码有折叠
2.简单搞一搞 HTML 


<div id="app" v-cloak @click="showOption=false">
第{{pageIndex}}页, 每页显示{{pageSize}}条
<div v-show="pageTotalNum > 1" class="pageContainer">
 共{{dataListLength}}条
<ul class="pagesInner">
 <li class="page" @click="prevOrNext(-1)"><span aria-hidden="true">&lt;</span></li>
 <li class="page" v-for="(item, index) in pages" :key="index" :class="{actived: item == pageIndex}" @click="selectPage(item)">
 <span>{{item}}</span>
 </li>
 <li class="page" @click="prevOrNext(1)"><span class="fa fa-chevron-right" aria-hidden="true">&gt;</span></li>
</ul>
<div class="page-size-box">
 <span @click.stop="showOption=!showOption">{{pageSize}}条/页</span>
 <ul class="size-option" v-show="showOption">
 <li v-for="(item, index) in pageSizeList" :key="index" @click="pageSize=item;showOption=false">{{item}}条/页</li>
 </ul>
</div>
跳至&nbsp;
 <form id="frm1">
  <input type="text" v-model="goToPage" style="text-align: center;">
 </form>
&nbsp;页&nbsp;
button @click="handleGoToPage">确定</button>
</div>
</div>

 3.搞事情啦 ~~~~

首先分析一下分页功能的实现思路:

  • 首页和尾页始终显示,

  • 通过数据总条数dataListLength及每页显示条数pageSize,计算出总页数pageTotalNum

  • 监听watch一下,每页显示条数pageSize,重置当前页码pageIndex=1

  • 我设计的分页每次最多显示5个页码(大家可根据需求自行调整),剩余部分 ... 代替,并设置不可点击,

  • 根据不同的总页数和当前页码的切换,页签展示形态有所不同,展示形态如下图对应序号展示

总页数 <= 1,不显示分页器
总页数 <= 5 && 总页数 > 1,显示全部页码
总页数 > 5 && 当前页面 <= 3 , 倒数第二个页码为...,页码从左往右计算
总页数 > 5 && 当前页面 > 3 && 当前页 < 总页数 - 3 , 正倒数第二个页码都为..., 页码以当前页码计算,±1
总页数 > 5 && 当前页面 > 3 && 当前页 > 总页数 - 3 , 正数第二个页码为..., 页码从右往左计算

html+vue.js 实现漂亮分页功能可兼容IE


<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="https://cdn.polyfill.io/v2/polyfill.min.js"></script> <!--兼容IE -->
<script>
var app = new Vue({
el: "#app",
data: {
 pageIndex: 1,
 goToPage: '',
 // pageTotalNum: 16,
 dataListLength:147,
 pageSize:20,
 pageSizeList:[20,30,50,100],
 showOption:false
},
methods: {
 prevOrNext: function(n) {
 this.pageIndex += n
 this.pageIndex <= 1 ? this.pageIndex = 1 : this.pageIndex > this.pageTotalNum ? this.pageIndex = this.pageTotalNum : null
 },
 selectPage: function(n) {
 if (n === this.pageIndex) return
 if (typeof n === 'string') return
 this.pageIndex = n
 },
 handleGoToPage: function() {
 this.pageIndex = this.goToPage <= 1 ? 1 : this.goToPage - 0 >= this.pageTotalNum - 0 ? this.pageTotalNum :
 this.goToPage
 this.goToPage = this.pageIndex
 },
},
computed: {
 pageTotalNum:function(){
 return this.dataListLength % this.pageSize == 0 ? this.dataListLength / this.pageSize : Math.floor(this.dataListLength / this.pageSize) + 1
 },
 pages: function () {
 // 每次最多显示5个页码
 var c = this.pageIndex
 var t = this.pageTotalNum
 var p = []
 for (var i = 1; i <= t; i++) {
  p.push(i)
 }
 var l = p.length
 if (l <= 5) { // 总页数<=5,显示全部页码
  return p
 } else if (l > 5 && c <= 3) { // 总页数>5 && 当前页面<=3
  return [1, 2, 3, 4, '...', t]
 } else if (l > 5 && c > 3 && c <= l - 2) { // 总页数 > 5 && 当前页面 > 3 && 当前页 < 总页数 - 3
  return [1, '...', c - 2, c - 1, c, '...', t]
 } else { // 总页数 > 5 && 当前页面 > 3 && 当前页 > 总页数 - 3
  return [1, '...', t - 3, t - 2, t - 1, t]
 }
 },
},
watch:{
 pageSize:function(nv,ov){
 this.pageIndex = 1
 }
}
});
</script>

来源:https://www.cnblogs.com/echoyya/p/13937750.html

标签:vue.js,分页
0
投稿

猜你喜欢

  • SQL server高并发生成唯一订单号的方法实现

    2024-01-21 21:24:55
  • django使用channels实现通信的示例

    2023-12-18 01:06:59
  • Oracle中PL/SQL的块与表达式

    2024-01-28 21:30:34
  • Python 多线程超详细到位总结

    2021-02-17 04:10:58
  • 利用Python脚本生成sitemap.xml的实现方法

    2021-03-16 22:32:32
  • js表单验证控制代码大全

    2010-03-07 14:25:00
  • python数据结构之面向对象

    2021-04-09 08:02:06
  • Vite版本更新检查实现页面自动刷新的解决思路

    2024-04-27 16:17:07
  • Golang中的int类型和uint类型到底有多大?

    2024-04-25 15:04:44
  • go语言编程之select信道处理示例详解

    2024-04-26 17:16:14
  • javascript双击自动滚屏单击停止

    2008-10-13 13:05:00
  • 使用pytorch搭建AlexNet操作(微调预训练模型及手动搭建)

    2023-05-04 05:09:51
  • python获取全国城市pm2.5、臭氧等空气质量过程解析

    2023-06-04 21:46:07
  • Python基于回溯法子集树模板解决野人与传教士问题示例

    2023-07-14 04:36:05
  • 扩展性很好的一个分页存储过程分享

    2011-11-03 17:04:16
  • SQL SERVER中各类触发器的完整语法及参数说明

    2024-01-15 20:54:17
  • php依赖注入知识点详解

    2024-05-02 17:33:00
  • 连接pandas以及数组转pandas的方法

    2021-11-12 12:12:09
  • 使用Filter实现信息的二次检索

    2007-10-08 19:19:00
  • go语言中排序sort的使用方法示例

    2023-09-01 00:07:22
  • asp之家 网络编程 m.aspxhome.com