当前位置:首页 > 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>

列表数据展开实现

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

vue实现展开全部

<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中实现轮询可以通过setInterval或setTimeout配合递归调用完成。轮询通常用于定期向服务器请求数据更新。 使用setInterval的简单示例: data…

vue实现主页

vue实现主页

Vue 实现主页的基本步骤 创建一个 Vue 主页通常涉及以下几个关键步骤,从项目初始化到页面布局和功能实现。 初始化 Vue 项目 使用 Vue CLI 或 Vite 初始化项目。Vue CLI…

vue 实现打印

vue 实现打印

Vue 实现打印功能的方法 在Vue项目中实现打印功能,可以通过以下几种方式实现: 使用window.print()方法 通过调用浏览器的原生打印API实现基础打印功能,适用于简单内容打印。 //…

vue实现tabbar

vue实现tabbar

Vue 实现 TabBar 的方法 使用 Vue Router 实现基础 TabBar 安装 Vue Router 依赖: npm install vue-router 创建路由配置文件(route…

vue怎么实现加减

vue怎么实现加减

Vue实现加减功能的方法 使用v-model绑定数据 在Vue中可以通过v-model双向绑定数据,结合methods方法实现加减功能。定义一个数字变量,通过按钮触发增减方法。 <templa…

vue实现部门树

vue实现部门树

Vue 实现部门树的方法 使用递归组件实现树形结构 递归组件是 Vue 中实现树形结构的常见方式。通过组件自身调用自身,可以轻松构建多层级的部门树。 <template> <d…