当前位置:首页 > VUE

vue实现翻页效果

2026-03-28 03:40:13VUE

实现基础翻页功能

在Vue中实现翻页效果通常需要结合v-for指令和计算属性。以下是一个基础实现示例:

<template>
  <div>
    <ul>
      <li v-for="item in paginatedData" :key="item.id">{{ item.name }}</li>
    </ul>
    <button @click="prevPage" :disabled="currentPage === 1">上一页</button>
    <span>第 {{ currentPage }} 页</span>
    <button @click="nextPage" :disabled="currentPage >= totalPages">下一页</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      items: [...], // 你的数据数组
      currentPage: 1,
      itemsPerPage: 10
    }
  },
  computed: {
    totalPages() {
      return Math.ceil(this.items.length / this.itemsPerPage)
    },
    paginatedData() {
      const start = (this.currentPage - 1) * this.itemsPerPage
      const end = start + this.itemsPerPage
      return this.items.slice(start, end)
    }
  },
  methods: {
    nextPage() {
      if (this.currentPage < this.totalPages) {
        this.currentPage++
      }
    },
    prevPage() {
      if (this.currentPage > 1) {
        this.currentPage--
      }
    }
  }
}
</script>

使用分页组件库

对于更复杂的需求,可以考虑使用现成的Vue分页组件:

  1. Element UI Pagination:

    <el-pagination
    @current-change="handleCurrentChange"
    :current-page="currentPage"
    :page-size="pageSize"
    :total="totalItems">
    </el-pagination>
  2. Vue Paginate:

    vue实现翻页效果

    npm install vue-paginate
import VuePaginate from 'vue-paginate'
Vue.use(VuePaginate)
<paginate
  :page-count="totalPages"
  :click-handler="changePage"
  :prev-text="'上一页'"
  :next-text="'下一页'">
</paginate>

实现带页码跳转的分页

对于需要直接跳转到指定页码的场景:

<input 
  type="number" 
  v-model.number="jumpPage" 
  min="1" 
  :max="totalPages">
<button @click="goToPage">跳转</button>
methods: {
  goToPage() {
    if (this.jumpPage >= 1 && this.jumpPage <= this.totalPages) {
      this.currentPage = this.jumpPage
    }
  }
}

分页样式优化

为分页控件添加基本样式:

vue实现翻页效果

.pagination {
  display: flex;
  justify-content: center;
  margin-top: 20px;
}
.pagination button {
  margin: 0 5px;
  padding: 5px 10px;
  cursor: pointer;
}
.pagination button:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

服务器端分页

当数据量很大时,需要实现服务器端分页:

methods: {
  async fetchData(page) {
    const response = await axios.get(`/api/items?page=${page}&size=${this.itemsPerPage}`)
    this.items = response.data.items
    this.totalItems = response.data.total
  },
  handlePageChange(page) {
    this.fetchData(page)
  }
}

分页与路由结合

将当前页码同步到URL路由:

watch: {
  currentPage(newVal) {
    this.$router.push({ query: { page: newVal } })
  }
},
created() {
  this.currentPage = parseInt(this.$route.query.page) || 1
}

响应式分页

根据屏幕尺寸调整每页显示数量:

data() {
  return {
    itemsPerPage: window.innerWidth < 768 ? 5 : 10
  }
},
created() {
  window.addEventListener('resize', this.handleResize)
},
methods: {
  handleResize() {
    this.itemsPerPage = window.innerWidth < 768 ? 5 : 10
  }
}

标签: 翻页效果
分享给朋友:

相关文章

vue实现拖拉效果

vue实现拖拉效果

实现拖拽效果的基本方法 在Vue中实现拖拽效果可以通过原生HTML5的拖拽API或第三方库如vuedraggable来完成。以下是两种常见方法的详细说明。 使用HTML5拖拽API HTML5提供了…

vue实现吸附效果

vue实现吸附效果

实现吸附效果的基本思路 吸附效果通常指当页面滚动到某个位置时,元素固定在视口的特定位置。Vue中可以通过监听滚动事件结合CSS的position: sticky或动态样式切换实现。 使用CSS的po…

如何实现翻页式h5

如何实现翻页式h5

翻页式H5的实现方法 翻页式H5通常指通过滑动或点击切换页面的交互形式,常用于营销活动、产品展示等场景。以下是几种常见的实现方式: 使用HTML5和CSS3实现基础翻页 通过CSS3的transfo…

vue实现翻页时钟

vue实现翻页时钟

Vue 实现翻页时钟 翻页时钟是一种视觉效果类似于传统翻页日历的时钟,数字会通过翻转动画切换。以下是基于 Vue 的实现方法: 基本结构 使用 Vue 的单文件组件结构,包含模板、脚本和样式部分。时…

vue实现移动效果

vue实现移动效果

使用 CSS 过渡实现移动效果 在 Vue 中,可以通过 v-bind:class 或 v-bind:style 结合 CSS 过渡实现移动效果。定义一个 CSS 类,包含 transition 属性…

vue实现题目翻页

vue实现题目翻页

Vue实现题目翻页功能 使用v-for和计算属性实现分页 在Vue中可以通过计算属性对题目列表进行分页处理,结合v-for渲染当前页的题目。定义currentPage和pageSize控制分页逻辑。…