html+vue.js 實現(xiàn)漂亮分頁功能可兼容IE
當功能比較簡單,在單一html中使用vue.js分頁展示數(shù)據(jù),并未安裝腳手架,或使用相關(guān)UI框架,此時需要手寫一個分頁器,不失為最合理最便捷的解決方案
先看一下實現(xiàn)效果:

上代碼:
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"><</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">></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>
跳至
<form id="frm1">
<input type="text" v-model="goToPage" style="text-align: center;">
</form>
頁
button @click="handleGoToPage">確定</button>
</div>
</div>
3.搞事情啦 ~~~~
首先分析一下分頁功能的實現(xiàn)思路:
-
首頁和尾頁始終顯示,
-
通過數(shù)據(jù)總條數(shù)dataListLength及每頁顯示條數(shù)pageSize,計算出總頁數(shù)pageTotalNum
-
監(jiān)聽watch一下,每頁顯示條數(shù)pageSize,重置當前頁碼pageIndex=1
-
我設計的分頁每次最多顯示5個頁碼(大家可根據(jù)需求自行調(diào)整),剩余部分 ... 代替,并設置不可點擊,
-
根據(jù)不同的總頁數(shù)和當前頁碼的切換,頁簽展示形態(tài)有所不同,展示形態(tài)如下圖對應序號展示
總頁數(shù) <= 1,不顯示分頁器
總頁數(shù) <= 5 && 總頁數(shù) > 1,顯示全部頁碼
總頁數(shù) > 5 && 當前頁面 <= 3 , 倒數(shù)第二個頁碼為...,頁碼從左往右計算
總頁數(shù) > 5 && 當前頁面 > 3 && 當前頁 < 總頁數(shù) - 3 , 正倒數(shù)第二個頁碼都為..., 頁碼以當前頁碼計算,±1
總頁數(shù) > 5 && 當前頁面 > 3 && 當前頁 > 總頁數(shù) - 3 , 正數(shù)第二個頁碼為..., 頁碼從右往左計算

<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) { // 總頁數(shù)<=5,顯示全部頁碼
return p
} else if (l > 5 && c <= 3) { // 總頁數(shù)>5 && 當前頁面<=3
return [1, 2, 3, 4, '...', t]
} else if (l > 5 && c > 3 && c <= l - 2) { // 總頁數(shù) > 5 && 當前頁面 > 3 && 當前頁 < 總頁數(shù) - 3
return [1, '...', c - 2, c - 1, c, '...', t]
} else { // 總頁數(shù) > 5 && 當前頁面 > 3 && 當前頁 > 總頁數(shù) - 3
return [1, '...', t - 3, t - 2, t - 1, t]
}
},
},
watch:{
pageSize:function(nv,ov){
this.pageIndex = 1
}
}
});
</script>
到此這篇關(guān)于html+vue.js 實現(xiàn)漂亮分頁功能可兼容IE的文章就介紹到這了,更多相關(guān)vue.js 分頁內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解vue開發(fā)中調(diào)用微信jssdk的問題
這篇文章主要介紹了vue開發(fā)中調(diào)用微信jssdk的問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-04-04
Vue3.0監(jiān)聽器watch與watchEffect詳解
在 Vue 3 中,watch 仍然是一種用于監(jiān)聽數(shù)據(jù)變化并執(zhí)行相應操作的方式,不過在組合式 API 中,watch 的使用方式與選項式 API 略有不同,這篇文章主要介紹了Vue3.0監(jiān)聽器watch與watchEffect,需要的朋友可以參考下2023-12-12
vue-cli開發(fā)環(huán)境實現(xiàn)跨域請求的方法
本篇文章主要介紹了vue-cli開發(fā)環(huán)境實現(xiàn)跨域請求的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-04-04
Vue+element 解決瀏覽器自動填充記住的賬號密碼問題
我們在做form表單的時候,會發(fā)現(xiàn),瀏覽器會自動的將我們之前保存的密碼,自動的填充到表單中input 為 type="password" 的框中,如何實現(xiàn)此功能呢,下面小編給大家介紹下,感興趣的朋友一起看看吧2019-06-06
VUE+Element-ui實戰(zhàn)之使用el-calendar日歷自定義顯示內(nèi)容
這篇文章主要介紹了VUE+Element-ui實戰(zhàn)之使用el-calendar日歷自定義顯示內(nèi)容方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-03-03

