当前位置:首页 > 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 主页通常涉及以下几个关键步骤,从项目初始化到页面布局和功能实现。 初始化 Vue 项目 使用 Vue CLI 或 Vite 初始化项目。Vue CLI…

vue 实现级联

vue 实现级联

Vue 实现级联选择器 级联选择器(Cascader)常用于省市区选择、分类选择等场景。Vue 中可以通过 Element UI、Ant Design Vue 等 UI 库实现,也可以手动封装。 使…

vue 实现关闭

vue 实现关闭

Vue 实现关闭功能的方法 在Vue中实现关闭功能通常涉及组件销毁、模态框隐藏或路由跳转等场景。以下是几种常见实现方式: 销毁当前组件 使用v-if或v-show控制组件显示/隐藏,适用于局部组件:…

vue实现setinterval

vue实现setinterval

在 Vue 中使用 setInterval Vue 中可以通过生命周期钩子和方法结合 setInterval 实现定时任务。以下是一个完整的实现示例: <template> <…

vue grid实现

vue grid实现

Vue Grid 实现方法 在 Vue 中实现网格布局可以通过多种方式完成,包括使用原生 CSS Grid、第三方组件库或自定义组件。以下是几种常见方法: 使用原生 CSS Grid 通过 Vue…

vue实现选择

vue实现选择

Vue 实现选择功能的方法 在 Vue 中实现选择功能可以通过多种方式完成,以下介绍几种常见的实现方法。 使用 v-model 绑定单选 通过 v-model 可以轻松实现单选功能。以下是一个简单的…