当前位置:首页 > VUE

Vue查看全文实现

2026-01-08 06:48:07VUE

Vue 查看全文实现方法

使用 v-showv-if 控制显示

通过 v-showv-if 指令控制文本的显示与隐藏。v-show 通过 CSS 的 display 属性切换,适合频繁切换的场景;v-if 会销毁和重建 DOM,适合不频繁切换的场景。

<template>
  <div>
    <p>{{ isExpanded ? fullText : truncatedText }}</p>
    <button @click="isExpanded = !isExpanded">
      {{ isExpanded ? '收起' : '展开全文' }}
    </button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      fullText: '这里是完整的文本内容,可能很长很长...',
      truncatedText: '这里是截断的文本内容...',
      isExpanded: false
    }
  }
}
</script>

使用计算属性动态截断文本

通过计算属性动态生成截断后的文本,避免硬编码截断内容。

<template>
  <div>
    <p>{{ displayText }}</p>
    <button @click="isExpanded = !isExpanded">
      {{ isExpanded ? '收起' : '展开全文' }}
    </button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      fullText: '这里是完整的文本内容,可能很长很长...',
      maxLength: 20,
      isExpanded: false
    }
  },
  computed: {
    displayText() {
      return this.isExpanded 
        ? this.fullText 
        : this.fullText.slice(0, this.maxLength) + '...'
    }
  }
}
</script>

使用 CSS 控制文本行数

通过 CSS 的 -webkit-line-clamp 属性限制文本显示的行数,点击按钮后取消限制。

Vue查看全文实现

<template>
  <div>
    <p :class="{ 'truncate-text': !isExpanded }">{{ fullText }}</p>
    <button @click="isExpanded = !isExpanded">
      {{ isExpanded ? '收起' : '展开全文' }}
    </button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      fullText: '这里是完整的文本内容,可能很长很长...',
      isExpanded: false
    }
  }
}
</script>

<style>
.truncate-text {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
</style>

使用第三方库(如 vue-text-clamp

对于更复杂的需求,可以使用第三方库如 vue-text-clamp,它提供了更灵活的文本截断和展开功能。

安装库:

Vue查看全文实现

npm install vue-text-clamp

使用示例:

<template>
  <div>
    <text-clamp 
      :text="fullText" 
      :max-lines="2" 
      :expanded="isExpanded"
      @clamp-change="handleClampChange"
    >
      <template #after="{ expand, collapse }">
        <button v-if="showMore" @click="expand">展开全文</button>
        <button v-else @click="collapse">收起</button>
      </template>
    </text-clamp>
  </div>
</template>

<script>
import TextClamp from 'vue-text-clamp'

export default {
  components: { TextClamp },
  data() {
    return {
      fullText: '这里是完整的文本内容,可能很长很长...',
      isExpanded: false,
      showMore: false
    }
  },
  methods: {
    handleClampChange({ clamped }) {
      this.showMore = clamped
    }
  }
}
</script>

结合动画效果

为文本展开和收起添加动画效果,提升用户体验。

<template>
  <div>
    <transition name="slide-fade">
      <p :key="isExpanded">{{ displayText }}</p>
    </transition>
    <button @click="isExpanded = !isExpanded">
      {{ isExpanded ? '收起' : '展开全文' }}
    </button>
  </div>
</template>

<style>
.slide-fade-enter-active, .slide-fade-leave-active {
  transition: all 0.3s ease;
}
.slide-fade-enter, .slide-fade-leave-to {
  opacity: 0;
  transform: translateY(-10px);
}
</style>

标签: 全文Vue
分享给朋友:

相关文章

Vue实现word导入

Vue实现word导入

Vue 中实现 Word 文件导入的方法 使用文件上传组件 在 Vue 中可以通过 <input type="file"> 或第三方组件(如 Element UI 的 Upload 组件)…

Vue数据依赖实现

Vue数据依赖实现

Vue数据依赖实现原理 Vue的数据依赖实现基于响应式系统,核心是通过Object.defineProperty或Proxy拦截数据变化,结合发布-订阅模式实现依赖收集和更新触发。 核心机制 依赖…

Vue实现word导入

Vue实现word导入

Vue实现Word导入的方法 在Vue项目中实现Word文档导入功能,通常需要借助第三方库或插件。以下是几种常见的实现方式: 使用docx-parser库 安装docx-parser库: npm…

Vue实现歌曲列表

Vue实现歌曲列表

Vue实现歌曲列表的方法 使用Vue实现歌曲列表可以通过组件化开发、数据绑定和事件处理来完成。以下是具体实现步骤: 数据准备 定义一个包含歌曲信息的数组,每个元素包含歌曲名称、歌手、时长等属性。数据…

Vue实现图片 放大

Vue实现图片 放大

Vue实现图片放大功能 使用v-viewer插件 安装v-viewer插件: npm install v-viewer 在main.js中引入并配置: import Viewer from '…

Vue 实现左右滑动

Vue 实现左右滑动

Vue 实现左右滑动的方法 使用 touch 事件监听 通过监听 touchstart、touchmove 和 touchend 事件实现基础滑动逻辑。在 Vue 组件中声明这些事件处理函数,计算滑动…