vue实现查看更多
Vue 实现“查看更多”功能
实现“查看更多”功能通常涉及动态显示和隐藏内容,可以通过 Vue 的 v-if、v-show 或动态绑定类名来实现。以下是几种常见方法:
使用 v-show 控制显示隐藏
通过布尔值控制内容的展开与折叠:

<template>
<div>
<p v-show="isExpanded">{{ longText }}</p>
<button @click="isExpanded = !isExpanded">
{{ isExpanded ? '收起' : '查看更多' }}
</button>
</div>
</template>
<script>
export default {
data() {
return {
isExpanded: false,
longText: '这里是需要折叠的长文本内容...'
};
}
};
</script>
使用 v-if 动态渲染内容
适合需要频繁切换的场景:

<template>
<div>
<p v-if="isExpanded">{{ longText }}</p>
<button @click="toggleExpand">
{{ isExpanded ? '收起' : '查看更多' }}
</button>
</div>
</template>
<script>
export default {
data() {
return {
isExpanded: false,
longText: '长文本内容...'
};
},
methods: {
toggleExpand() {
this.isExpanded = !this.isExpanded;
}
}
};
</script>
结合 CSS 过渡效果
通过动态类名实现平滑过渡:
<template>
<div>
<p :class="{ 'expanded': isExpanded }">{{ truncatedText }}</p>
<button @click="isExpanded = !isExpanded">
{{ isExpanded ? '收起' : '查看更多' }}
</button>
</div>
</template>
<script>
export default {
data() {
return {
isExpanded: false,
fullText: '长文本内容...',
maxLength: 100
};
},
computed: {
truncatedText() {
return this.isExpanded
? this.fullText
: this.fullText.slice(0, this.maxLength) + '...';
}
}
};
</script>
<style>
.expanded {
transition: max-height 0.3s ease;
max-height: 1000px; /* 根据内容调整 */
}
</style>
列表数据的分页加载
适用于长列表的分批加载:
<template>
<div>
<ul>
<li v-for="(item, index) in visibleItems" :key="index">{{ item }}</li>
</ul>
<button
v-if="hasMore"
@click="loadMore"
>查看更多</button>
</div>
</template>
<script>
export default {
data() {
return {
allItems: ['Item 1', 'Item 2', ...], // 完整数据
visibleCount: 5,
increment: 5
};
},
computed: {
visibleItems() {
return this.allItems.slice(0, this.visibleCount);
},
hasMore() {
return this.visibleCount < this.allItems.length;
}
},
methods: {
loadMore() {
this.visibleCount += this.increment;
}
}
};
</script>
关键点总结
- 性能选择:
v-show通过 CSS 切换显示,适合频繁切换;v-if会销毁/重建 DOM,适合条件变化少的场景。 - 动画优化:通过 CSS 过渡或 Vue 的
<transition>组件可添加展开/折叠动画。 - 列表分页:大数据量时建议分页或懒加载,避免一次性渲染过多 DOM 节点。
以上方法可根据实际需求组合使用,例如同时实现文本折叠和列表分页。






