当前位置:首页 > uni-app

uniapp分页样式

2026-03-05 08:20:45uni-app

分页样式实现方法

在UniApp中实现分页样式通常涉及前端页面布局和数据分页加载逻辑。以下是常见的实现方式:

基础分页组件样式 使用<view><text>组合实现基础分页器:

<view class="pagination">
  <text @click="prevPage" :class="{disabled: currentPage === 1}">上一页</text>
  <text v-for="page in pageCount" 
        @click="goToPage(page)"
        :class="{active: currentPage === page}">
    {{page}}
  </text>
  <text @click="nextPage" :class="{disabled: currentPage === pageCount}">下一页</text>
</view>

CSS样式示例

.pagination {
  display: flex;
  justify-content: center;
  margin-top: 20px;
}
.pagination text {
  padding: 8px 12px;
  margin: 0 5px;
  border: 1px solid #ddd;
  cursor: pointer;
}
.pagination .active {
  background-color: #007AFF;
  color: white;
}
.pagination .disabled {
  color: #ccc;
  cursor: not-allowed;
}

滚动加载分页样式

对于滚动分页(无限加载)场景:

<scroll-view 
  scroll-y 
  @scrolltolower="loadMore"
  style="height: 100vh">
  <!-- 内容列表 -->
  <view v-for="item in list">{{item.name}}</view>

  <!-- 加载状态 -->
  <view v-if="loading" class="loading">加载中...</view>
  <view v-if="noMore" class="no-more">没有更多了</view>
</scroll-view>

滚动加载样式

.loading, .no-more {
  text-align: center;
  padding: 10px;
  color: #999;
}

数据加载逻辑

分页数据请求示例:

data() {
  return {
    list: [],
    currentPage: 1,
    pageSize: 10,
    total: 0,
    loading: false,
    noMore: false
  }
},
methods: {
  async fetchData() {
    if (this.loading || this.noMore) return;

    this.loading = true;
    try {
      const res = await uni.request({
        url: 'api/list',
        data: {
          page: this.currentPage,
          size: this.pageSize
        }
      });

      this.list = [...this.list, ...res.data.list];
      this.total = res.data.total;
      this.noMore = this.list.length >= this.total;
    } finally {
      this.loading = false;
    }
  },

  loadMore() {
    if (!this.noMore) {
      this.currentPage++;
      this.fetchData();
    }
  }
}

组件库分页方案

使用uni-ui组件库的分页器:

<uni-pagination 
  :total="total" 
  :current="currentPage"
  :pageSize="pageSize"
  @change="pageChange"
/>

uni-pagination参数说明

  • show-icon: 显示首页末页图标
  • prev-text: 上一页文字
  • next-text: 下一页文字
  • pageSize: 每页数量

平台差异处理

处理不同平台的分页样式差异:

uniapp分页样式

/* #ifdef H5 */
.pagination {
  padding-bottom: 20px;
}
/* #endif */

/* #ifdef MP-WEIXIN */
.pagination text {
  padding: 6px 10px;
}
/* #endif */

以上方案可根据具体项目需求进行组合或调整,实现适合不同场景的分页效果。

标签: 分页样式
分享给朋友:

相关文章

js实现分页

js实现分页

实现分页的基本思路 分页功能通常需要处理数据分割、页码生成和用户交互。核心逻辑包括计算总页数、根据当前页截取数据、渲染页码按钮等。 前端分页实现(静态数据) 假设已有全部数据,仅需前端分页展示:…

h5实现表格样式

h5实现表格样式

实现H5表格样式的方法 使用HTML和CSS创建基础表格 在HTML中,表格通过<table>标签定义,配合<tr>(行)、<td>(单元格)和<th>…

vue加载实现分页

vue加载实现分页

Vue 实现分页加载的方法 使用 Element UI 的分页组件 安装 Element UI 后,可以直接使用其分页组件。在模板中添加分页组件,并绑定相关事件和数据。 <template&g…

vue分页实现原理

vue分页实现原理

Vue 分页实现原理 Vue 分页的核心原理是通过计算当前页的数据范围,动态渲染数据列表并控制分页组件的交互。以下是关键实现步骤: 数据分片计算 分页需要根据当前页码和每页条数截取数据。假设原始数据…

vue完整实现分页

vue完整实现分页

Vue 分页组件实现 分页组件模板 分页组件通常包含页码按钮、上一页/下一页按钮和跳转功能。以下是一个基础模板结构: <template> <div class="pagina…

vue怎么实现分页

vue怎么实现分页

Vue 分页实现方法 基于 Element UI 的分页组件 Element UI 提供了现成的分页组件 el-pagination,适合快速集成。 安装 Element UI: npm inst…