当前位置:首页 > VUE

vue 实现更多展开

2026-01-19 01:56:16VUE

Vue 实现更多展开功能

在 Vue 中实现“更多展开”功能可以通过多种方式完成,以下是几种常见的实现方法:

使用 v-show 或 v-if 控制显示

通过 Vue 的指令 v-showv-if 动态控制内容的显示与隐藏。

vue 实现更多展开

<template>
  <div>
    <p>{{ truncatedText }}</p>
    <button @click="toggleExpand">
      {{ isExpanded ? '收起' : '展开更多' }}
    </button>
    <p v-show="isExpanded">{{ fullText }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      fullText: '这里是完整的长文本内容...',
      isExpanded: false,
    };
  },
  computed: {
    truncatedText() {
      return this.fullText.slice(0, 50) + '...';
    },
  },
  methods: {
    toggleExpand() {
      this.isExpanded = !this.isExpanded;
    },
  },
};
</script>

使用 CSS 控制文本溢出

通过 CSS 的 text-overflowmax-height 属性实现展开与收起的效果。

vue 实现更多展开

<template>
  <div>
    <p :class="{ 'expanded': isExpanded }">{{ fullText }}</p>
    <button @click="toggleExpand">
      {{ isExpanded ? '收起' : '展开更多' }}
    </button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      fullText: '这里是完整的长文本内容...',
      isExpanded: false,
    };
  },
  methods: {
    toggleExpand() {
      this.isExpanded = !this.isExpanded;
    },
  },
};
</script>

<style>
p {
  max-height: 60px;
  overflow: hidden;
  text-overflow: ellipsis;
  transition: max-height 0.3s ease;
}

p.expanded {
  max-height: 1000px;
}
</style>

使用第三方库

如果需要更复杂的功能(如动画、多行截断等),可以使用第三方库如 vue-show-morevue-truncate-collapse

<template>
  <div>
    <vue-show-more :text="fullText" :lines="2" />
  </div>
</template>

<script>
import VueShowMore from 'vue-show-more';

export default {
  components: {
    VueShowMore,
  },
  data() {
    return {
      fullText: '这里是完整的长文本内容...',
    };
  },
};
</script>

动态计算文本高度

通过动态计算文本高度实现展开与收起的效果。

<template>
  <div>
    <p ref="content" :style="{ height: contentHeight }">{{ fullText }}</p>
    <button @click="toggleExpand">
      {{ isExpanded ? '收起' : '展开更多' }}
    </button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      fullText: '这里是完整的长文本内容...',
      isExpanded: false,
      contentHeight: '60px',
    };
  },
  methods: {
    toggleExpand() {
      this.isExpanded = !this.isExpanded;
      this.contentHeight = this.isExpanded ? 'auto' : '60px';
    },
  },
};
</script>

以上方法可以根据具体需求选择使用,灵活调整实现方式。

标签: 更多vue
分享给朋友:

相关文章

vue异步组建实现原理

vue异步组建实现原理

Vue 异步组件实现原理 Vue 的异步组件允许将组件按需加载,通常用于代码分割或延迟加载非关键组件。其核心原理基于 Promise 和动态导入。 基本实现方式 通过 defineAsyncComp…

vue vnode实现

vue vnode实现

Vue VNode 实现原理 VNode(Virtual Node)是 Vue 的核心概念之一,用于描述真实 DOM 的轻量级虚拟表示。VNode 的实现涉及以下关键点: VNode 的基本结构 V…

vue实现ppt

vue实现ppt

Vue 实现 PPT 的功能 Vue 可以结合第三方库或自定义组件实现类似 PPT 的演示效果。以下是几种常见的方法: 使用第三方库 reveal.js reveal.js 是一个流行的演示框架,支…

vue实现画廊

vue实现画廊

Vue实现画廊的基本方法 使用Vue.js实现画廊功能可以通过多种方式完成,以下是一种常见的实现方案: 安装必要依赖 npm install vue-gallery --save 引入组件并注册…

vue列表查询实现

vue列表查询实现

实现 Vue 列表查询功能 基础列表渲染 在 Vue 中可以通过 v-for 指令实现列表渲染,结合计算属性动态过滤数据: <template> <div> &l…

vue实现右滑

vue实现右滑

Vue 实现右滑功能 右滑功能通常用于移动端应用,实现手势操作。以下是几种常见的实现方法: 使用 Hammer.js 库 Hammer.js 是一个专门处理手势的库,可以方便地实现右滑功能。 im…