当前位置:首页 > VUE

vue 实现文字折叠

2026-02-19 22:47:34VUE

Vue 实现文字折叠的方法

在 Vue 中实现文字折叠功能可以通过动态控制 CSS 类或样式来实现。以下是几种常见的方法:

使用 v-showv-if 控制显示

通过 Vue 的指令 v-showv-if 可以轻松实现文字的折叠与展开。v-show 通过切换 display 属性控制显示,而 v-if 会直接移除或添加 DOM 元素。

<template>
  <div>
    <p v-show="isCollapsed">{{ text }}</p>
    <button @click="isCollapsed = !isCollapsed">
      {{ isCollapsed ? '收起' : '展开' }}
    </button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isCollapsed: false,
      text: '这里是需要折叠的长文本内容...'
    };
  }
};
</script>

使用 CSS max-height 过渡效果

如果需要平滑的折叠动画效果,可以通过动态设置 max-height 实现。初始时设置一个较小的 max-height,展开时设置为足够大的值。

<template>
  <div>
    <div 
      class="collapse-content" 
      :style="{ maxHeight: isCollapsed ? '100px' : '0' }"
    >
      {{ text }}
    </div>
    <button @click="isCollapsed = !isCollapsed">
      {{ isCollapsed ? '收起' : '展开' }}
    </button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isCollapsed: false,
      text: '这里是需要折叠的长文本内容...'
    };
  }
};
</script>

<style>
.collapse-content {
  overflow: hidden;
  transition: max-height 0.3s ease;
}
</style>

使用第三方库(如 vue-collapse

如果需要更复杂的功能(如多级折叠),可以使用第三方库如 vue-collapse

安装:

npm install vue-collapse

使用:

<template>
  <div>
    <vue-collapse v-model="isCollapsed">
      <div>{{ text }}</div>
    </vue-collapse>
    <button @click="isCollapsed = !isCollapsed">
      {{ isCollapsed ? '收起' : '展开' }}
    </button>
  </div>
</template>

<script>
import { VueCollapse } from 'vue-collapse';

export default {
  components: {
    VueCollapse
  },
  data() {
    return {
      isCollapsed: false,
      text: '这里是需要折叠的长文本内容...'
    };
  }
};
</script>

动态截断文本

如果只需要部分显示文本,可以通过计算属性动态截断内容。

vue 实现文字折叠

<template>
  <div>
    <p>{{ displayedText }}</p>
    <button @click="isCollapsed = !isCollapsed">
      {{ isCollapsed ? '收起' : '展开' }}
    </button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isCollapsed: false,
      text: '这里是需要折叠的长文本内容...',
      maxLength: 50
    };
  },
  computed: {
    displayedText() {
      return this.isCollapsed 
        ? this.text 
        : this.text.slice(0, this.maxLength) + '...';
    }
  }
};
</script>

注意事项

  • 使用 v-show 时,DOM 元素始终存在,只是通过 CSS 控制显示。
  • 使用 v-if 时,DOM 元素会被移除或重新创建,适合内容较多或初始化成本高的场景。
  • 使用 CSS 过渡效果时,确保 max-height 的初始值和展开值合理,避免动画卡顿。
  • 动态截断文本时,需注意多语言或特殊字符的处理。

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

相关文章

代码实现vue

代码实现vue

创建Vue项目 使用Vue CLI快速初始化项目,确保已安装Node.js和npm/yarn: npm install -g @vue/cli vue create my-vue-project c…

vue实现动画

vue实现动画

Vue 实现动画的方法 Vue 提供了多种方式来实现动画效果,包括内置的过渡系统、第三方动画库以及直接操作 CSS 或 JavaScript 动画。 使用 Vue 内置过渡系统 Vue 的 <…

vue mvvm实现

vue mvvm实现

Vue MVVM 实现原理 Vue.js 是一个基于 MVVM(Model-View-ViewModel)模式的框架,其核心是通过数据绑定和响应式系统实现视图与数据的自动同步。以下是 Vue 实现 M…

vue 实现搜索

vue 实现搜索

实现 Vue 搜索功能 在 Vue 中实现搜索功能通常涉及以下几个关键步骤: 数据绑定与输入监听 使用 v-model 双向绑定搜索输入框的值,监听用户输入: <template>…

vue实现队列

vue实现队列

Vue 实现队列功能 在 Vue 中实现队列功能可以通过多种方式完成,以下是几种常见的方法: 使用数组模拟队列 队列遵循先进先出(FIFO)原则,可以用数组的 push 和 shift 方法模拟入队…

自实现vue

自实现vue

实现 Vue 的核心功能 要实现一个简化版的 Vue,需要理解其核心功能:数据响应式、模板编译、虚拟 DOM 和组件系统。以下是关键步骤的分解: 数据响应式 Vue 使用 Object.define…