当前位置:首页 > 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 属性限制文本显示的行数,点击按钮后取消限制。

<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,它提供了更灵活的文本截断和展开功能。

安装库:

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>

结合动画效果

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

Vue查看全文实现

<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拖拽怎么实现

Vue拖拽怎么实现

Vue拖拽实现方法 使用Vue实现拖拽功能可以通过原生HTML5的拖拽API或第三方库如vuedraggable来实现。以下是两种常见的方法: 使用HTML5拖拽API HTML5提供了原生的拖拽A…

Vue实现滚动字幕

Vue实现滚动字幕

Vue实现滚动字幕的方法 使用CSS动画实现 通过CSS的@keyframes和transform属性实现水平滚动效果,结合Vue的动态绑定控制内容。 <template> <…

Vue实现图片随机滑动

Vue实现图片随机滑动

Vue实现图片随机滑动效果 使用CSS动画和Vue数据绑定 通过Vue管理图片数据数组,结合CSS的transform和transition实现滑动动画效果。在data中定义图片列表和随机位置,通过方…

Vue实现首次登录弹窗

Vue实现首次登录弹窗

Vue实现首次登录弹窗的方法 使用本地存储(localStorage)记录登录状态 在用户首次登录时,通过检查localStorage中是否存在特定标记来判断是否需要显示弹窗。如果标记不存在,则显示…

使用Vue实现洗牌动画

使用Vue实现洗牌动画

使用CSS和Vue实现洗牌动画 洗牌动画可以通过CSS过渡和Vue的动态数据绑定实现。以下是实现步骤: 准备数据 data() { return { cards: [ {…