当前位置:首页 > VUE

vue实现展开全部

2026-01-17 08:05:57VUE

Vue 实现展开全部功能

通过 v-show 或 v-if 控制元素的显示与隐藏,结合按钮切换状态实现展开/收起功能。

<template>
  <div>
    <p v-show="isExpanded || !isExpandable">完整内容</p>
    <p v-show="!isExpanded && isExpandable">部分内容...</p>
    <button @click="toggleExpand" v-if="isExpandable">
      {{ isExpanded ? '收起' : '展开全部' }}
    </button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isExpanded: false,
      isExpandable: true
    }
  },
  methods: {
    toggleExpand() {
      this.isExpanded = !this.isExpanded
    }
  }
}
</script>

动态内容截断实现

对于动态内容,先计算内容高度决定是否需要显示展开按钮。

<template>
  <div>
    <div ref="content" :class="{ 'line-clamp': !isExpanded }">
      {{ longText }}
    </div>
    <button 
      v-if="showToggle"
      @click="isExpanded = !isExpanded"
    >
      {{ isExpanded ? '收起' : '展开全部' }}
    </button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isExpanded: false,
      showToggle: false,
      longText: '...长文本内容...'
    }
  },
  mounted() {
    this.checkOverflow()
  },
  methods: {
    checkOverflow() {
      const element = this.$refs.content
      this.showToggle = element.scrollHeight > element.clientHeight
    }
  }
}
</script>

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

使用第三方组件

安装 vue-truncate-collapsed 等专门处理截断展开的组件。

npm install vue-truncate-collapsed
<template>
  <truncate :length="100" :ellipsis="'...'" :less="'收起'" :more="'展开全部'">
    {{ longText }}
  </truncate>
</template>

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

export default {
  components: {
    Truncate
  },
  data() {
    return {
      longText: '...长文本内容...'
    }
  }
}
</script>

列表数据展开实现

对于列表数据,控制显示条目数量实现展开全部功能。

<template>
  <div>
    <ul>
      <li v-for="(item, index) in visibleItems" :key="index">
        {{ item }}
      </li>
    </ul>
    <button @click="toggleItems">
      {{ showAll ? '收起' : '展开全部' }}
    </button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      items: ['项目1', '项目2', '项目3', '项目4', '项目5'],
      showAll: false,
      defaultCount: 3
    }
  },
  computed: {
    visibleItems() {
      return this.showAll 
        ? this.items 
        : this.items.slice(0, this.defaultCount)
    }
  },
  methods: {
    toggleItems() {
      this.showAll = !this.showAll
    }
  }
}
</script>

vue实现展开全部

标签: 全部vue
分享给朋友:

相关文章

vue 表格实现

vue 表格实现

Vue 表格实现方法 在 Vue 中实现表格功能可以通过多种方式完成,以下介绍几种常见的方法: 使用原生 HTML 表格 最简单的表格可以通过 Vue 模板中的原生 HTML 表格元素实现: &l…

vue实现选择分类

vue实现选择分类

Vue 实现选择分类的方法 使用 v-model 绑定选择值 在 Vue 中可以通过 v-model 指令实现双向数据绑定,适用于下拉选择框(<select>)。以下是一个基本示例: &…

vue实现多选联动

vue实现多选联动

vue实现多选联动的方法 使用v-model绑定数组 在Vue中,可以通过v-model绑定一个数组来实现多选联动。当复选框被选中或取消选中时,数组会自动更新。 <template>…

vue实现裁剪头像

vue实现裁剪头像

Vue 实现头像裁剪功能 实现头像裁剪功能通常需要结合第三方库如 cropperjs 或 vue-cropper。以下是两种常见实现方式: 使用 vue-cropper 库 安装依赖: np…

在线脑图 vue 实现

在线脑图 vue 实现

在线脑图 Vue 实现方案 使用开源库实现 推荐使用 mind-elixir 或 jsmind 这类开源库,它们专为脑图设计且支持 Vue 集成。 安装依赖: npm install mi…

vue设计与实现 书

vue设计与实现 书

vue设计与实现 书 《Vue.js设计与实现》是一本深入探讨Vue.js框架内部原理和设计思想的书籍,适合希望深入理解Vue.js的开发者。以下是关于这本书的详细信息: 书籍内容 《Vue…