zoukankan      html  css  js  c++  java
  • vue中移动端分页组件pagination

    最近项目需要用到很简单的vue移动端分页组件,网上找了找,没有特别适合的,根据网上找来的代码,自己写了个简单的分页

    根据设计稿,想要的就是最简单的,上一页,下一页,中间固定放三个显示页数的,不需要显示很多,也不需要省略号

    原博客:https://blog.csdn.net/freya_yyy/article/details/81227016

    效果图如下:

    代码如下:

    pagination.vue

    <template>
      <div class="pagination">
        <ul>
          <li v-if="currentPage > 1">
            <span @click="prevPage">上一页</span>
          </li>
          <li v-if="currentPage == 1">
            <span class="disabled">上一页</span>
          </li>
          <li v-for="item in indexs" v-bind:class="{'active':currentPage==item}" class="item">
            <span @click="btnClick(item)">{{item}}</span>
          </li>
          <li v-if="currentPage!=allPage">
            <span @click="nextPage">下一页</span>
          </li>
          <li v-if="currentPage==allPage">
            <span class="disabled">下一页</span>
          </li>
          <li><span>共<i>{{allPage}}</i>页</span></li>
        </ul>
      </div>
    </template>
    
    <script>
    export default {
      name: 'pagination',
      props: {
        currentPage: { // 当前第几页
          type: Number,
          default: 1
        },
        allPage: { // 总页数
          type: Number,
          default: 5
        },
        showIndex: { // 中间显示几个页数,要为奇数
          type: Number,
          default: 3
        }
      },
      methods: {
        nextPage () {
          this.$emit('setPage', this.currentPage + 1)
        },
        prevPage () {
          this.$emit('setPage', this.currentPage - 1)
        },
        btnClick (num) {
          if (num !== this.currentPage) {
            this.$emit('setPage', num)
          }
        }
      },
      computed: {
        indexs () {
          var left = 1
          var right = this.allPage
          var arr = []
          var index = parseInt(this.showIndex / 2)
          var middleIndex = index + 1
          if (this.allPage >= this.showIndex) {
            if (this.currentPage > middleIndex && this.currentPage < this.allPage - index) {
              left = this.currentPage - index
              right = this.currentPage + index
            } else if (this.currentPage <= middleIndex) {
              left = 1
              right = this.showIndex
            } else {
              left = this.allPage - (this.showIndex - 1)
              right = this.allPage
            }
          }
          while (left <= right) {
            arr.push(left)
            left++
          }
          return arr
        }
      }
    }
    </script>
    
    <style scoped lang="less">
    .pagination{
      ul{
        display: flex;
        justify-content: center;
        align-items: center;
        font-size: .24rem;
        li{
          height: .6rem;
          margin: .12rem;
          span{
            display: block;
            padding: 0 .12rem;
            height: 100%;
            text-align: center;
            line-height: .6rem;
            color: #E0224F;
            border: 1px solid #E0224F;
            &.disabled{
              color: #D8D8D8;
              border: 1px solid #D8D8D8;
            }
          }
          &.item{
            min- .6rem;
            span{
              padding: 0;
              color: #413134;
              border: 1px solid #fff;
            }
            &.active{
              span{
                color: #E0224F;
                border: 1px solid #E0224F;
              }
            }
          }
        }
      }
    }
    </style>

    使用:

    <template>
       <pagination :allPage="10" @setPage="setPage" :currentPage="currentPage" :showIndex="3"></pagination>
    </template>
    
    <script>
    import pagination from '@/components/pagination'
    
    export default {
      data () {
        return {
          currentPage: 1,
        }
      },
      methods: {
         setPage (page) {
            this.currentPage = page
            console.log(this.currentPage)
         }
      }
    }
    </script>
    

      

      

  • 相关阅读:
    Voice over IP
    [转】:TCP/IP详解学习笔记(5)
    windows phone 7 version: ObservableCollectionEx (1)
    MA0003 移动智能网原理
    TCP 网络书籍
    windows Phone 7如何实现background的情况下不丢失数据
    最近想要学习和了解的东东
    Windows phone 7 开发注意事项
    android Tab标签下得按钮
    新浪微博教程(一)
  • 原文地址:https://www.cnblogs.com/Anne3/p/11354091.html
Copyright © 2011-2022 走看看