当前位置:首页 > VUE

vue实现文本折叠

2026-02-17 16:36:16VUE

实现文本折叠的基本思路

在Vue中实现文本折叠功能,通常需要控制文本的显示高度,通过"展开/收起"按钮切换状态。核心是结合CSS的max-heightoverflow属性,配合Vue的数据绑定。

基础实现方法

模板部分

<template>
  <div>
    <div 
      class="text-content" 
      :class="{ 'collapsed': isCollapsed }"
      ref="content"
    >
      {{ longText }}
    </div>
    <button @click="toggleCollapse">
      {{ isCollapsed ? '展开' : '收起' }}
    </button>
  </div>
</template>

样式部分

.text-content {
  overflow: hidden;
  transition: max-height 0.3s ease;
}

.collapsed {
  max-height: 60px; /* 折叠后的高度 */
  display: -webkit-box;
  -webkit-line-clamp: 3; /* 显示行数 */
  -webkit-box-orient: vertical;
}

脚本部分

export default {
  data() {
    return {
      isCollapsed: true,
      longText: '这里是很长的文本内容...'
    }
  },
  methods: {
    toggleCollapse() {
      this.isCollapsed = !this.isCollapsed
    }
  }
}

动态计算折叠高度

对于动态内容,可以使用clientHeight获取实际高度:

export default {
  mounted() {
    this.contentHeight = this.$refs.content.clientHeight
  },
  data() {
    return {
      contentHeight: 0,
      isCollapsed: true
    }
  }
}

更新CSS部分:

.collapsed {
  max-height: 60px;
}

使用第三方库

对于更复杂的需求,可以考虑使用vue-text-collapse等专门库:

安装:

npm install vue-text-collapse

使用:

<template>
  <text-collapse 
    :text="longText" 
    :length="100"
  />
</template>

<script>
import TextCollapse from 'vue-text-collapse'
export default {
  components: { TextCollapse }
}
</script>

多行文本省略方案

纯CSS实现多行省略(兼容性较好方案):

.text-content {
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
  text-overflow: ellipsis;
}

动画效果增强

添加平滑的展开/收起动画:

.text-content {
  transition: max-height 0.5s ease-in-out;
}

通过调整max-height的值实现动画效果,注意设置足够大的最终高度值。

vue实现文本折叠

标签: 文本vue
分享给朋友:

相关文章

vue循环数组实现

vue循环数组实现

vue循环数组的实现方法 在Vue中循环数组主要通过v-for指令实现,以下是几种常见用法: 基本数组循环 使用v-for指令遍历数组,可以通过(item, index)的语法获取当前项和索引值:…

vue实现多层评论回复

vue实现多层评论回复

Vue 实现多层评论回复 数据结构设计 多层评论通常采用嵌套结构,每个评论对象包含子评论数组。示例数据结构如下: comments: [ { id: 1, content: '…

vue实现星星

vue实现星星

实现星星评分的Vue组件 使用Vue实现星星评分功能可以通过组件化方式完成,以下是一个完整的实现方案: 模板部分 <template> <div class="star-ra…

vue实现遮罩

vue实现遮罩

Vue 实现遮罩层的方法 在 Vue 中实现遮罩层可以通过多种方式完成,以下是几种常见的方法: 方法一:使用 v-show 或 v-if 控制显示 通过 Vue 的指令动态控制遮罩层的显示与隐藏。…

vue实现翻译

vue实现翻译

Vue 实现翻译功能的方法 使用 i18n 插件实现多语言切换 安装 vue-i18n 插件: npm install vue-i18n 创建语言资源文件(如 en.json 和 zh.json):…

vue原理实现

vue原理实现

Vue 原理实现的核心机制 Vue.js 的核心原理基于响应式系统、虚拟 DOM 和模板编译。以下是其核心实现机制的分解: 响应式系统 Vue 使用 Object.defineProperty(Vu…