当前位置:首页 > VUE

Vue查看全文实现

2026-02-10 22:03:27VUE

Vue 查看全文实现方法

使用 v-ifv-else 控制显示

通过 v-ifv-else 指令切换显示全文和部分内容。定义一个布尔值变量 isExpanded 控制显示状态。

<template>
  <div>
    <p v-if="isExpanded">{{ fullText }}</p>
    <p v-else>{{ truncatedText }}</p>
    <button @click="isExpanded = !isExpanded">
      {{ isExpanded ? '收起' : '展开' }}
    </button>
  </div>
</template>

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

使用 CSS 控制文本溢出

通过 CSS 的 text-overflowwhite-space 属性实现文本截断,结合 Vue 动态切换类名。

<template>
  <div>
    <p :class="{ 'truncate': !isExpanded }">{{ fullText }}</p>
    <button @click="isExpanded = !isExpanded">
      {{ isExpanded ? '收起' : '展开' }}
    </button>
  </div>
</template>

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

<style>
.truncate {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
</style>

使用第三方库 vue-truncate-collapsed

对于更复杂的需求,可以使用第三方库如 vue-truncate-collapsed 实现更灵活的截断和展开功能。

安装库:

npm install vue-truncate-collapsed

使用示例:

<template>
  <div>
    <truncate :length="50" :text="fullText" />
  </div>
</template>

<script>
import Truncate from 'vue-truncate-collapsed';

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

动态计算截断位置

根据容器宽度动态计算截断位置,适用于响应式布局。

<template>
  <div ref="container">
    <p ref="text">{{ fullText }}</p>
    <button v-if="needsTruncation" @click="isExpanded = !isExpanded">
      {{ isExpanded ? '收起' : '展开' }}
    </button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      fullText: '这里是完整的文本内容,可能很长很长...',
      isExpanded: false,
      needsTruncation: false
    };
  },
  mounted() {
    this.checkTruncation();
    window.addEventListener('resize', this.checkTruncation);
  },
  beforeDestroy() {
    window.removeEventListener('resize', this.checkTruncation);
  },
  methods: {
    checkTruncation() {
      const container = this.$refs.container;
      const text = this.$refs.text;
      this.needsTruncation = text.scrollWidth > container.offsetWidth;
    }
  }
};
</script>

结合过渡动画

为展开和收起添加过渡效果,提升用户体验。

Vue查看全文实现

<template>
  <div>
    <transition name="fade">
      <p v-if="isExpanded" key="full">{{ fullText }}</p>
      <p v-else key="truncated">{{ truncatedText }}</p>
    </transition>
    <button @click="isExpanded = !isExpanded">
      {{ isExpanded ? '收起' : '展开' }}
    </button>
  </div>
</template>

<style>
.fade-enter-active, .fade-leave-active {
  transition: opacity 0.5s;
}
.fade-enter, .fade-leave-to {
  opacity: 0;
}
</style>

以上方法可以根据具体需求选择或组合使用,实现灵活的查看全文功能。

标签: 全文Vue
分享给朋友:

相关文章

Vue实现画布

Vue实现画布

Vue 实现画布的方法 在 Vue 中实现画布功能可以通过 HTML5 的 <canvas> 元素结合 Vue 的响应式特性来完成。以下是几种常见的实现方式: 使用原生 <canv…

Vue怎么实现rem

Vue怎么实现rem

Vue中实现rem适配的方法 在Vue项目中实现rem适配,可以通过以下步骤完成。rem(root em)是相对于根元素(html)字体大小的单位,常用于移动端适配。 安装postcss-pxtor…

Vue实现音乐列表

Vue实现音乐列表

Vue 实现音乐列表的方法 数据准备与绑定 在 Vue 中实现音乐列表,首先需要准备音乐数据。可以通过数组形式存储音乐信息,例如歌曲名称、歌手、封面图片和播放链接。数据可以存储在组件的 data 属性…

Vue实现鼠标悬浮

Vue实现鼠标悬浮

鼠标悬浮效果实现方法 在Vue中实现鼠标悬浮效果可以通过多种方式完成,以下是几种常见方法: 使用v-on指令绑定事件 通过@mouseenter和@mouseleave事件可以实现悬浮效果…

Vue实现词云图

Vue实现词云图

Vue 中实现词云图的方法 使用第三方库 vue-wordcloud vue-wordcloud 是一个专为 Vue 设计的轻量级词云组件,支持自定义颜色、大小和交互事件。 安装依赖: npm i…

Vue实现禁止截屏

Vue实现禁止截屏

防止截屏的常见方法 在Vue中实现禁止截屏的功能,可以通过以下几种方式来实现。需要注意的是,完全防止截屏在技术上是不现实的,但可以增加截屏的难度或通过其他手段进行限制。 使用CSS禁止用户选择文本和…