当前位置:首页 > VUE

vue 实现文字折叠

2026-01-19 06:25:32VUE

Vue 实现文字折叠的方法

使用 v-showv-if 控制显示

通过绑定一个布尔值变量,利用 v-showv-if 动态控制文字的显示与隐藏。v-show 通过 CSS 的 display 属性切换,适合频繁切换的场景;v-if 会直接销毁或重建 DOM 节点,适合条件变化较少的场景。

<template>
  <div>
    <button @click="toggleFold">{{ isFolded ? '展开' : '折叠' }}</button>
    <div v-show="!isFolded">这里是需要折叠的文字内容。</div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isFolded: false
    };
  },
  methods: {
    toggleFold() {
      this.isFolded = !this.isFolded;
    }
  }
};
</script>

结合 CSS 过渡效果

通过 Vue 的 <transition> 组件实现折叠/展开的动画效果,提升用户体验。可以自定义过渡的 CSS 类名(如 slide-fade)。

vue 实现文字折叠

<template>
  <div>
    <button @click="toggleFold">{{ isFolded ? '展开' : '折叠' }}</button>
    <transition name="slide-fade">
      <div v-show="!isFolded" class="content">这里是带动画的文字内容。</div>
    </transition>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isFolded: false
    };
  },
  methods: {
    toggleFold() {
      this.isFolded = !this.isFolded;
    }
  }
};
</script>

<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);
}
.content {
  padding: 10px;
  background: #f5f5f5;
}
</style>

动态控制文本高度

通过绑定行内样式或类名,动态修改 max-heightheight 实现折叠效果。适用于需要部分展示内容的场景(如“显示更多”)。

<template>
  <div>
    <button @click="toggleFold">{{ isFolded ? '显示更多' : '收起' }}</button>
    <div :style="{ maxHeight: isFolded ? '60px' : 'none', overflow: 'hidden' }">
      这里是长文本内容,超过指定高度时会隐藏。这里是长文本内容,超过指定高度时会隐藏。
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isFolded: true
    };
  },
  methods: {
    toggleFold() {
      this.isFolded = !this.isFolded;
    }
  }
};
</script>

使用第三方库(如 vue-show-more

vue 实现文字折叠

对于复杂需求(如多行文本截断、自定义折叠按钮),可以使用现成的 Vue 插件。例如 vue-show-more 提供开箱即用的文本折叠功能。

安装:

npm install vue-show-more

使用示例:

<template>
  <vue-show-more :text="longText" :max-height="'100px'" />
</template>

<script>
import VueShowMore from 'vue-show-more';
export default {
  components: { VueShowMore },
  data() {
    return {
      longText: '这里是需要折叠的长文本内容...'
    };
  }
};
</script>

注意事项

  • 性能考虑:频繁切换时优先使用 v-show 而非 v-if
  • 无障碍访问:为按钮添加 aria-expanded 属性,提示屏幕阅读器当前状态。
  • 移动端适配:动画过渡时间建议控制在 300ms 以内,避免卡顿。

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

相关文章

vue实现评论编辑

vue实现评论编辑

Vue 实现评论编辑功能 数据绑定与表单结构 使用 v-model 双向绑定评论内容到表单输入框,确保编辑时能显示原内容并同步修改。示例模板结构: <template> <d…

vue实现年历

vue实现年历

Vue 实现年历的方法 使用 Vue 实现年历可以通过组件化开发方式,结合日期计算和动态渲染完成。以下是两种常见的实现方式: 基于原生 Vue 的日历组件 创建 Calendar.vue 组件文件…

vue使用vr实现标注

vue使用vr实现标注

Vue 中使用 VR 实现标注的方法 在 Vue 项目中结合 VR 技术实现标注功能,可以通过 WebXR 和 Three.js 等库实现。以下为具体实现方法: 安装依赖 确保项目中已安装 Thre…

vue实现文章锚点定位

vue实现文章锚点定位

实现文章锚点定位的方法 在Vue中实现文章锚点定位可以通过多种方式完成,以下是几种常见的方法: 使用原生HTML锚点 通过HTML的id属性和<a>标签的href属性实现锚点跳转。在V…

vue 实现

vue 实现

Vue 实现的基本步骤 安装 Vue.js 可以通过 npm 或 CDN 引入。使用 npm 安装适合大型项目,CDN 适合快速原型开发。 npm install vue 在 HTML 文件中引入…

vue实现积分

vue实现积分

Vue 实现积分功能 在 Vue 中实现积分功能通常涉及前端展示、交互逻辑以及与后端 API 的通信。以下是常见的实现方法和步骤: 积分展示组件 创建一个积分展示组件,用于显示当前用户的积分。可以使…