httml+vue.jsは綺麗なページ機能を実現してIEに対応できます。
機能が比較的簡単である場合、単一のhtmlでvue.jsページの展示データを使用して、足場を設置していない、または関連UIフレームを使用している場合、改ページ器を手書きで書く必要があります。最も合理的で最も便利な解決策です。
まず効果を見てみます。
上のコード:
1.簡単にCSSをやってみます。ここのコードは折りたたみがあります。
2.簡単にHTMLを作る
まず、改ページ機能の実現構想を分析します。
最初のページと最後のページは常に表示されます。
データ総条数data ListLength及び各ページの表示条数pageSizeにより、総ページ数pageTotalNumを算出する。
ウォッチをモニターして、各ページにページ数pageSizeを表示し、現在のページ番号のPageIndex=1をリセットします。
私が設計したページは毎回最大5つのページ番号を表示します。(みんなは必要に応じて自分で調整できます。)
ページ総数と現在のページ番号の切り替えによって、ページの展示形態が異なります。
総ページ数<=1は、セパレータを表示しません。
総ページ数<=5&総ページ数>1は、すべてのページ番号を表示します。
総ページ数>5&&現在のページ<=3、最後から2番目のページ番号は…で、ページ番号は左から右へ計算します。
総ページ数>5&現在ページ>3&現在ページ<総ページ数-3、正後ろから2番目のページ番号は…で、ページ番号は現在のページ番号で計算されます。±1
総ページ数>5&現在ページ>3&現在ページ>総ページ数-3、正数第二のページ番号は…で、ページ番号は右から左へ計算されます。
まず効果を見てみます。
上のコード:
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.仕事をしましたまず、改ページ機能の実現構想を分析します。
最初のページと最後のページは常に表示されます。
データ総条数data ListLength及び各ページの表示条数pageSizeにより、総ページ数pageTotalNumを算出する。
ウォッチをモニターして、各ページにページ数pageSizeを表示し、現在のページ番号のPageIndex=1をリセットします。
私が設計したページは毎回最大5つのページ番号を表示します。(みんなは必要に応じて自分で調整できます。)
ページ総数と現在のページ番号の切り替えによって、ページの展示形態が異なります。
総ページ数<=5&総ページ数>1は、すべてのページ番号を表示します。
総ページ数>5&&現在のページ<=3、最後から2番目のページ番号は…で、ページ番号は左から右へ計算します。
総ページ数>5&現在ページ>3&現在ページ<総ページ数-3、正後ろから2番目のページ番号は…で、ページ番号は現在のページ番号で計算されます。±1
総ページ数>5&現在ページ>3&現在ページ>総ページ数-3、正数第二のページ番号は…で、ページ番号は右から左へ計算されます。
<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>
ここでhttml+vue.jsの綺麗なページ機能を実現するためのIE対応記事を紹介します。これまでの記事を検索したり、下記の関連記事を見たりしてください。これからもよろしくお願いします。