如何用Vue.js在IE浏览器上实现兼容的漂亮分页功能?

2026-04-02 10:221阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1193个文字,预计阅读时间需要5分钟。

如何用Vue.js在IE浏览器上实现兼容的漂亮分页功能?

当功能比较简单时,在单一HTML中使用Vue.js分页展示数据,无需安装任何脚手架或相关UI框架,需要手动编写一个分页器。以下是一个简单的实现方案:

Vue.js 分页器示例 {{ item.name }} 第 {{ currentPage }} 页,共 {{ totalPages }} 页

这段代码创建了一个简单的Vue.js分页器,可以在不使用任何外部框架的情况下实现数据分页。它包含了基本的前进和后退按钮,以及当前页码和总页码的显示。

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

先看一下实现效果:

上代码:

如何用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 , 正数第二个页码为..., 页码从右往左计算

<script src="img.558idc.com/uploadfile/allimg/210405/1HU94Z3-2.jpg"></script> <script src="img.558idc.com/uploadfile/allimg/210405/1HU959E-3.jpg"></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>

到此这篇关于html+vue.js 实现漂亮分页功能可兼容IE的文章就介绍到这了,更多相关vue.js 分页内容请搜索易盾网络以前的文章或继续浏览下面的相关文章希望大家以后多多支持易盾网络!

本文共计1193个文字,预计阅读时间需要5分钟。

如何用Vue.js在IE浏览器上实现兼容的漂亮分页功能?

当功能比较简单时,在单一HTML中使用Vue.js分页展示数据,无需安装任何脚手架或相关UI框架,需要手动编写一个分页器。以下是一个简单的实现方案:

Vue.js 分页器示例 {{ item.name }} 第 {{ currentPage }} 页,共 {{ totalPages }} 页

这段代码创建了一个简单的Vue.js分页器,可以在不使用任何外部框架的情况下实现数据分页。它包含了基本的前进和后退按钮,以及当前页码和总页码的显示。

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

先看一下实现效果:

上代码:

如何用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 , 正数第二个页码为..., 页码从右往左计算

<script src="img.558idc.com/uploadfile/allimg/210405/1HU94Z3-2.jpg"></script> <script src="img.558idc.com/uploadfile/allimg/210405/1HU959E-3.jpg"></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>

到此这篇关于html+vue.js 实现漂亮分页功能可兼容IE的文章就介绍到这了,更多相关vue.js 分页内容请搜索易盾网络以前的文章或继续浏览下面的相关文章希望大家以后多多支持易盾网络!