当前位置:首页 > 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 是一个流行的前端框架,用于构建用户界面。以下是几种常见的实现方法: 数据绑定 使用 v-model 指令实现双向数据绑定,适用于表单输入元素。 <input v-m…

vue mvvm实现

vue mvvm实现

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

vue实现123456

vue实现123456

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

vue实现datalist

vue实现datalist

使用 Vue 实现 HTML5 的 datalist 功能 HTML5 的 <datalist> 元素提供了一种自动完成输入框的功能,允许用户在输入时从预定义的选项列表中选择。以下是几种在…

vue拼图实现

vue拼图实现

实现 Vue 拼图游戏的方法 使用 Vue 组件和动态数据绑定 创建一个 Vue 组件来管理拼图的状态和逻辑。通过 v-for 动态渲染拼图块,利用 v-bind 绑定样式和位置。拼图块的数据可以存储…

vue工序实现

vue工序实现

Vue 工序实现方法 在Vue中实现工序(或流程)功能,通常涉及状态管理、组件通信和动态渲染。以下是几种常见方法: 使用动态组件 通过Vue的<component :is="currentCo…