当前位置:首页 > 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;
}

动画效果增强

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

vue实现文本折叠

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

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

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

相关文章

vue实现下拉框删除

vue实现下拉框删除

Vue 实现下拉框删除功能 在Vue中实现下拉框的删除功能通常涉及以下步骤: 数据绑定与渲染 在Vue组件中定义数据数组用于存储下拉框选项: data() { return { op…

vue 实现jqslidedown

vue 实现jqslidedown

在 Vue 中实现类似 jQuery 的 slideDown 效果,可以通过 Vue 的过渡系统或 CSS 动画结合动态样式绑定来实现。以下是几种实现方式: 使用 Vue Transition 组件…

vue实现123456

vue实现123456

Vue 实现数字 123456 的显示 在 Vue 中显示数字 123456 非常简单,可以通过以下方法实现: 方法一:直接在模板中显示 <template> <div>…

vue实现mui

vue实现mui

使用 Vue 实现 MUI(Material-UI)风格的界面 Vue 本身不直接提供 MUI(Material Design)组件,但可以通过集成第三方库或手动实现来达到类似效果。以下是几种常见方法…

vue网页实现

vue网页实现

Vue 网页实现指南 环境准备 安装 Node.js 和 npm/yarn,确保环境配置正确。使用 Vue CLI 或 Vite 创建项目框架,快速搭建开发环境。 npm install -g @v…

vue实现幻灯

vue实现幻灯

Vue实现幻灯片的基础方法 使用Vue实现幻灯片功能可以通过多种方式完成,以下是几种常见方案: 方案一:基于Vue的过渡动画 通过Vue的<transition>或<transit…