您好,登錄后才能下訂單哦!
利用html+vue.js 實現(xiàn)一個兼容IE瀏覽器的分頁功能?針對這個問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
先看一下實現(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" > </form> 頁 button @click="handleGoToPage">確定</button> </div> </div>
3.搞事情啦 ~~~~
首先分析一下分頁功能的實現(xiàn)思路:
首頁和尾頁始終顯示,
通過數(shù)據(jù)總條數(shù)dataListLength及每頁顯示條數(shù)pageSize,計算出總頁數(shù)pageTotalNum
監(jiān)聽watch一下,每頁顯示條數(shù)pageSize,重置當(dāng)前頁碼pageIndex=1
我設(shè)計的分頁每次最多顯示5個頁碼(大家可根據(jù)需求自行調(diào)整),剩余部分 ... 代替,并設(shè)置不可點擊,
根據(jù)不同的總頁數(shù)和當(dāng)前頁碼的切換,頁簽展示形態(tài)有所不同,展示形態(tài)如下圖對應(yīng)序號展示
總頁數(shù) <= 1,不顯示分頁器
總頁數(shù) <= 5 && 總頁數(shù) > 1,顯示全部頁碼
總頁數(shù) > 5 && 當(dāng)前頁面 <= 3 , 倒數(shù)第二個頁碼為...,頁碼從左往右計算
總頁數(shù) > 5 && 當(dāng)前頁面 > 3 && 當(dāng)前頁 < 總頁數(shù) - 3 , 正倒數(shù)第二個頁碼都為..., 頁碼以當(dāng)前頁碼計算,±1
總頁數(shù) > 5 && 當(dāng)前頁面 > 3 && 當(dāng)前頁 > 總頁數(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 && 當(dāng)前頁面<=3 return [1, 2, 3, 4, '...', t] } else if (l > 5 && c > 3 && c <= l - 2) { // 總頁數(shù) > 5 && 當(dāng)前頁面 > 3 && 當(dāng)前頁 < 總頁數(shù) - 3 return [1, '...', c - 2, c - 1, c, '...', t] } else { // 總頁數(shù) > 5 && 當(dāng)前頁面 > 3 && 當(dāng)前頁 > 總頁數(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瀏覽器的分頁功能問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。