html+vue.js 예 쁜 페이지 기능 구현 IE 호 환 가능

기능 이 비교적 간단 할 때 단일 html 에서 vue.js 페이지 를 사용 하여 데 이 터 를 보 여 줍 니 다.비계 가 설치 되 어 있 지 않 거나 관련 UI 프레임 워 크 를 사용 하지 않 았 을 때 손 으로 페이지 나 누 기 기 를 써 야 합 니 다.가장 합 리 적 이 고 편리 한 해결 방안 이 라 고 할 수 있 습 니 다.
먼저 실현 효 과 를 살 펴 보 자.
 
 상위 코드:
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.일 을 한다~~~
먼저 페이지 기능 의 실현 방향 을 분석 해 보 자.

  • 첫 페이지 와 끝 페이지 가 항상 표 시 됩 니 다.

  • 데이터 총 갯 수 dataList Length 및 각 페이지 에 표시 되 는 갯 수 pageSize 를 통 해 총 페이지 수 pageTotalNum 을 계산 합 니 다.

  • 감청 watch,각 페이지 에 페이지 수 를 표시 합 니 다 pageSize,현재 페이지 번호 pageIndex=1 리 셋

  • 제 가 디자인 한 페이지 는 매번 최대 5 개의 페이지 를 표시 합 니 다.(여러분 은 수요 에 따라 스스로 조정 할 수 있 습 니 다)나머지 부분 은...대신 클릭 할 수 없 는 설정 을 합 니 다.

  • 서로 다른 총 페이지 수 와 현재 페이지 번호 의 전환 에 따라 페이지 서명 전시 형태 가 다 르 고 전시 형 태 는 아래 그림 과 대응 하 는 번호 전시 와 같다.
  • 총 페이지 수<=1,페이지 표시 하지 않 음
    총 페이지 수<=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 페이지 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

    좋은 웹페이지 즐겨찾기