当前位置:首页 > VUE

Vue查看全文实现

2026-01-08 06:48:07VUE

Vue 查看全文实现方法

使用 v-showv-if 控制显示

通过 v-showv-if 指令控制文本的显示与隐藏。v-show 通过 CSS 的 display 属性切换,适合频繁切换的场景;v-if 会销毁和重建 DOM,适合不频繁切换的场景。

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

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

使用计算属性动态截断文本

通过计算属性动态生成截断后的文本,避免硬编码截断内容。

<template>
  <div>
    <p>{{ displayText }}</p>
    <button @click="isExpanded = !isExpanded">
      {{ isExpanded ? '收起' : '展开全文' }}
    </button>
  </div>
</template>

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

使用 CSS 控制文本行数

通过 CSS 的 -webkit-line-clamp 属性限制文本显示的行数,点击按钮后取消限制。

Vue查看全文实现

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

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

<style>
.truncate-text {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
</style>

使用第三方库(如 vue-text-clamp

对于更复杂的需求,可以使用第三方库如 vue-text-clamp,它提供了更灵活的文本截断和展开功能。

安装库:

Vue查看全文实现

npm install vue-text-clamp

使用示例:

<template>
  <div>
    <text-clamp 
      :text="fullText" 
      :max-lines="2" 
      :expanded="isExpanded"
      @clamp-change="handleClampChange"
    >
      <template #after="{ expand, collapse }">
        <button v-if="showMore" @click="expand">展开全文</button>
        <button v-else @click="collapse">收起</button>
      </template>
    </text-clamp>
  </div>
</template>

<script>
import TextClamp from 'vue-text-clamp'

export default {
  components: { TextClamp },
  data() {
    return {
      fullText: '这里是完整的文本内容,可能很长很长...',
      isExpanded: false,
      showMore: false
    }
  },
  methods: {
    handleClampChange({ clamped }) {
      this.showMore = clamped
    }
  }
}
</script>

结合动画效果

为文本展开和收起添加动画效果,提升用户体验。

<template>
  <div>
    <transition name="slide-fade">
      <p :key="isExpanded">{{ displayText }}</p>
    </transition>
    <button @click="isExpanded = !isExpanded">
      {{ isExpanded ? '收起' : '展开全文' }}
    </button>
  </div>
</template>

<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);
}
</style>

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

相关文章

用Vue实现

用Vue实现

Vue实现方法 安装Vue 确保已安装Node.js和npm。使用Vue CLI创建新项目: npm install -g @vue/cli vue create project-name cd p…

Vue实现ping

Vue实现ping

Vue实现ping功能的方法 在Vue中实现ping功能,可以通过调用操作系统的ping命令或使用JavaScript的WebSocket等方式。以下是几种常见的方法: 使用Node.js的chil…

Vue实现音乐列表

Vue实现音乐列表

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

Vue实现多个echarts排版

Vue实现多个echarts排版

实现多个 ECharts 实例的排版布局 在 Vue 中实现多个 ECharts 实例的排版布局,可以通过 CSS 布局结合 ECharts 的响应式设计来完成。以下是几种常见方法: 使用 Flex…

js 实现全文检索

js 实现全文检索

实现全文检索的方法 在JavaScript中实现全文检索通常涉及对文本数据进行索引和搜索。以下是几种常见的方法: 使用正则表达式进行简单搜索 通过正则表达式可以快速实现简单的全文检索功能。这种方法适…

用Vue实现

用Vue实现

以下是使用Vue实现功能的具体方法和代码示例: 安装Vue 通过CDN引入或使用npm安装Vue。CDN方式适合快速原型开发: <script src="https://unpkg.com/…