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"><</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.일 을 한다~~~먼저 페이지 기능 의 실현 방향 을 분석 해 보 자.
첫 페이지 와 끝 페이지 가 항상 표 시 됩 니 다.
데이터 총 갯 수 dataList Length 및 각 페이지 에 표시 되 는 갯 수 pageSize 를 통 해 총 페이지 수 pageTotalNum 을 계산 합 니 다.
감청 watch,각 페이지 에 페이지 수 를 표시 합 니 다 pageSize,현재 페이지 번호 pageIndex=1 리 셋
제 가 디자인 한 페이지 는 매번 최대 5 개의 페이지 를 표시 합 니 다.(여러분 은 수요 에 따라 스스로 조정 할 수 있 습 니 다)나머지 부분 은...대신 클릭 할 수 없 는 설정 을 합 니 다.
서로 다른 총 페이지 수 와 현재 페이지 번호 의 전환 에 따라 페이지 서명 전시 형태 가 다 르 고 전시 형 태 는 아래 그림 과 대응 하 는 번호 전시 와 같다.
총 페이지 수<=5&&총 페이지 수>1,모든 페이지 표시
총 페이지 수>5&&현재 페이지<=3,마지막 두 번 째 페이지 수 는...,페이지 수 는 왼쪽 에서 오른쪽으로 계산 합 니 다.
총 페이지 수>5&&현재 페이지>3&현재 페이지<총 페이지 수-3,정 꼴찌 두 번 째 페이지 는 모두...,페이지 수 는 현재 페이지 로 계산,±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>
html+vue.js 가 예 쁜 페이지 기능 을 실현 하여 IE 를 호 환 할 수 있 는 이 글 을 소개 합 니 다.더 많은 vue.js 페이지 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[백견불여일타/Vue.js] 4장 - 입력 폼 데이터 가져오기v-model 데이터 입력 select 지난 장에서는 v-bind를 이용해서 HTML 태그 속성 값을 Vue로 다루는 법을 배웠습니다. 이번에는 사용자가 입력한 데이터를 Vue로 가져오는 법에 대해 다룹니다. 웹 페...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.