当前位置:首页 > VUE

vue实现小说目录

2026-03-09 05:54:22VUE

Vue 实现小说目录的方法

数据准备

需要准备小说章节数据,通常是一个数组,每个元素包含章节标题和内容。数据结构可以如下:

chapters: [
  { title: "第一章", content: "..." },
  { title: "第二章", content: "..." }
]

目录组件

创建一个目录组件,用于显示所有章节标题。使用 v-for 遍历章节数据:

<template>
  <div class="catalog">
    <ul>
      <li v-for="(chapter, index) in chapters" :key="index">
        <a @click="selectChapter(index)">{{ chapter.title }}</a>
      </li>
    </ul>
  </div>
</template>

章节选择功能

在目录组件中添加方法,处理章节选择事件,并通知父组件:

methods: {
  selectChapter(index) {
    this.$emit('chapter-selected', index);
  }
}

内容显示组件

创建内容显示组件,接收当前章节索引并显示对应内容:

<template>
  <div class="content">
    <h2>{{ currentChapter.title }}</h2>
    <p>{{ currentChapter.content }}</p>
  </div>
</template>

<script>
export default {
  props: ['chapters', 'currentIndex'],
  computed: {
    currentChapter() {
      return this.chapters[this.currentIndex];
    }
  }
}
</script>

父组件整合

在父组件中整合目录和内容显示,管理当前章节索引:

<template>
  <div class="reader">
    <Catalog :chapters="chapters" @chapter-selected="changeChapter" />
    <Content :chapters="chapters" :current-index="currentIndex" />
  </div>
</template>

<script>
export default {
  data() {
    return {
      chapters: [...],
      currentIndex: 0
    }
  },
  methods: {
    changeChapter(index) {
      this.currentIndex = index;
    }
  }
}
</script>

样式优化

添加基础样式改善用户体验:

vue实现小说目录

.catalog {
  width: 200px;
  float: left;
}
.catalog ul {
  list-style: none;
  padding: 0;
}
.catalog li a {
  cursor: pointer;
  padding: 5px;
  display: block;
}
.catalog li a:hover {
  background-color: #f0f0f0;
}
.content {
  margin-left: 220px;
}

进阶功能

  1. 添加滚动定位:在内容组件中使用 refscrollIntoView 实现平滑滚动
  2. 阅读进度保存:使用 localStorage 记录当前阅读章节
  3. 响应式设计:通过媒体查询适配移动设备

这种实现方式保持了组件间的松耦合,便于维护和扩展。目录组件只负责显示和触发事件,内容组件专注展示,父组件管理状态。

标签: 目录小说
分享给朋友:

相关文章

uniapp 目录

uniapp 目录

uniapp 目录结构 uniapp 的目录结构遵循 Vue.js 项目的规范,同时包含一些特有的文件和目录。以下是典型的 uniapp 项目目录结构及其说明: project-name/ ├──…

vue实现层级目录

vue实现层级目录

Vue 实现层级目录的方法 使用递归组件实现层级目录 递归组件是处理层级数据的常见方式,适用于目录结构不固定或深度未知的场景。 组件代码示例: <template> <ul&…

css制作目录

css制作目录

CSS 制作目录的方法 使用 CSS 可以创建一个美观且功能性的目录(TOC),以下是几种常见方法: 使用无序列表和样式 通过 <ul> 和 <li> 标签创建目录结构,并…

vue实现目录

vue实现目录

Vue 实现目录功能 在 Vue 中实现目录功能通常需要结合动态路由、组件递归或第三方库。以下是几种常见方法: 基于路由的目录结构 适用于需要与路由绑定的目录(如文档站点): // router.…

vue设计与实现目录

vue设计与实现目录

《Vue设计与实现》目录概览 该书深入解析Vue.js框架的设计思想与实现原理,以下是典型章节结构(具体可能因版本差异略有调整): 响应式系统 响应式数据的基本原理 依赖收集与触发机制…

vue 实现文件目录

vue 实现文件目录

使用 Vue 实现文件目录 Vue 可以通过递归组件或第三方库实现文件目录结构。以下是两种常见方法: 递归组件实现 递归组件适合展示嵌套的目录结构。通过组件调用自身实现无限层级渲染。 <te…