当前位置:首页 > VUE

vue实现小说分页

2026-03-28 22:56:23VUE

Vue 实现小说分页功能

核心思路

通过计算文本总长度和每页字符数动态分割文本,结合 Vue 的响应式特性实现分页切换功能。

数据结构准备

data() {
  return {
    fullText: '',       // 完整小说文本
    pageSize: 500,      // 每页字符数
    currentPage: 1,     // 当前页码
    totalPages: 1,      // 总页数
    pages: []           // 分页后的数组
  }
}

文本分页方法

methods: {
  splitTextToPages() {
    this.pages = [];
    for (let i = 0; i < this.fullText.length; i += this.pageSize) {
      this.pages.push(this.fullText.slice(i, i + this.pageSize));
    }
    this.totalPages = this.pages.length;
  }
}

生命周期调用

mounted() {
  // 假设通过接口获取小说内容
  fetchNovelContent().then(text => {
    this.fullText = text;
    this.splitTextToPages();
  });
}

模板渲染部分

<template>
  <div class="reader-container">
    <div class="page-content">
      {{ pages[currentPage - 1] }}
    </div>

    <div class="page-controls">
      <button 
        @click="currentPage--" 
        :disabled="currentPage <= 1">
        上一页
      </button>

      <span>{{ currentPage }} / {{ totalPages }}</span>

      <button 
        @click="currentPage++" 
        :disabled="currentPage >= totalPages">
        下一页
      </button>
    </div>
  </div>
</template>

样式优化建议

.reader-container {
  max-width: 800px;
  margin: 0 auto;
  font-size: 18px;
  line-height: 1.6;
}

.page-content {
  min-height: 60vh;
  padding: 20px;
  background: #f8f5ee;
  border-radius: 4px;
}

.page-controls {
  display: flex;
  justify-content: center;
  margin-top: 20px;
  gap: 20px;
}

高级功能扩展

  1. 记住阅读进度

    watch: {
    currentPage(newVal) {
     localStorage.setItem('lastReadPage', newVal);
    }
    }
  2. 调整字体大小

    vue实现小说分页

    data() {
    return {
     fontSize: 16
    }
    }
<div class="font-controls">
  <button @click="fontSize--">A-</button>
  <button @click="fontSize++">A+</button>
</div>

<div class="page-content" :style="{ fontSize: fontSize + 'px' }">
  {{ pages[currentPage - 1] }}
</div>
  1. 夜间模式切换
    data() {
    return {
     darkMode: false
    }
    }
.night-mode {
  background-color: #222;
  color: #ddd;
}
<div class="reader-container" :class="{ 'night-mode': darkMode }">
  <button @click="darkMode = !darkMode">
    {{ darkMode ? '日间模式' : '夜间模式' }}
  </button>
</div>

标签: 分页小说
分享给朋友:

相关文章

php实现分页

php实现分页

PHP实现分页的基本方法 使用LIMIT和OFFSET进行数据库查询分页。通过计算当前页码和每页显示数量,动态生成SQL语句。 $page = isset($_GET['page']) ? (int…

js实现分页

js实现分页

分页的基本实现思路 在JavaScript中实现分页功能通常需要结合前端和后端逻辑。前端负责渲染分页控件和处理用户交互,后端负责提供分页数据。 前端分页实现 纯前端分页适用于数据量较小的情况,可以直…

分页实现vue

分页实现vue

分页实现方法(Vue) 使用Element UI分页组件 安装Element UI库后,可以直接使用其分页组件。在模板中添加el-pagination,通过v-model绑定当前页码,设置page-s…

h5实现左右分页

h5实现左右分页

实现左右分页的HTML5方法 在HTML5中实现左右分页效果可以通过多种方式完成,以下是几种常见的方法: 使用CSS Flexbox布局 Flexbox是一种现代的布局方式,可以轻松实现左右分页效果…

vue elementui实现分页

vue elementui实现分页

Vue + ElementUI 分页实现方法 安装与引入 确保已安装 ElementUI,可通过 npm 或 yarn 安装: npm install element-ui 在 main.js 中全…

vue 实现数据分页

vue 实现数据分页

实现数据分页的基本思路 在Vue中实现数据分页通常需要结合前端分页逻辑和后端API支持。前端分页适合数据量较小的情况,后端分页适合大数据量场景。 前端分页实现 创建一个计算属性来分割当前页数据:…