Skeleton骨架屏在Vue中怎么实现动态高度?
我用Vue做列表加载,想加个骨架屏,但每个item的高度不一样,写死height又不灵活。
试过用:style="{ height: loading ? '60px' : 'auto' }",但切换时会跳动,体验很差。有没有办法让骨架屏自动撑开真实内容的高度?
现在骨架屏组件是这样写的:
<template>
<div v-if="loading" class="skeleton-item"></div>
<div v-else class="real-content">{{ item.text }}</div>
</template>
<style scoped>
.skeleton-item {
background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);
animation: shimmer 1.5s infinite;
border-radius: 4px;
}
</style>
这样加载时骨架屏高度就和真实内容一致了,切换不会跳。懒得监听数据变化的话mounted里直接写死也行。