当前位置:首页 > VUE

vue实现展开全部

2026-01-17 08:05:57VUE

Vue 实现展开全部功能

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

vue实现展开全部

<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>

动态内容截断实现

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

vue实现展开全部

<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 的动画特性和 SVG 技术,可以动态渲染冰墩墩的形象。以下是具体实现方法: 准备 SVG 素材 冰墩墩的形象通常由多个 SVG 路径组成,包括身体轮廓…

vue 实现blog

vue 实现blog

Vue 实现博客的基本步骤 使用 Vue 实现博客可以分为前端和后端两部分,前端使用 Vue.js 框架,后端可以选择 Node.js、Python 或其他服务端语言。以下是一个基于 Vue 的博客实…

vue实现input

vue实现input

Vue 实现 Input 输入框的方法 基本双向绑定 使用 v-model 指令实现双向数据绑定,适用于大多数表单场景: <template> <input v-model="…

vue实现图片

vue实现图片

Vue 实现图片功能的方法 静态图片引入 在 Vue 项目中,可以通过 src 属性直接引入静态图片。图片通常放在 public 或 assets 目录下。 <template> &…

vue轮询实现

vue轮询实现

Vue 轮询实现方法 在 Vue 中实现轮询可以通过以下几种方式: 使用 setInterval data() { return { pollInterval: null } },…

vue翻页实现

vue翻页实现

Vue翻页实现方法 基础分页组件实现 使用v-for和计算属性实现基础分页逻辑: <template> <div> <ul> <li…