Element UI 通用图片骨架屏组件
近年来,骨架屏(Skeleton)逐渐成为一种流行的加载动画,其显著增强了用户等待过程中的体验。本文实现了 Vue.js + Element UI 的通用图片骨架屏组件。
感谢 @小灰灰 在研究过程中提供的帮助和创新,编写了组件的部分内容,作了大量重要的工作。
效果预览
源码
1 |
|
使用
使用时只需传递相应参数即可:
1 |
|
若需要修改图片的样式,只需传递 class
或 id
从外部使用 v-deep
设置 css 即可。
1 |
|
1 |
|
原理解析
该组件主要由两大功能组成,一是加载图片并切换骨架屏显示,二是智能高度调整。
加载功能
由于默认 loading
为 true
,所以 <img>
并不会显示,浏览器也不会请求图片资源。我们在 mounted
时使用 js 请求图片资源。当图片加载完成后,将 loading
设置为 false
且更新 <img>
。
1 |
|
智能高度调整
骨架的高度遵循以下规则:
- 若传递了高度参数,使用参数设置高度;
mounte
之前使用200px
作为默认高度;mounte
之后获取宽度,以16:9
计算默认高度。
References
- Skeleton 骨架屏. Element. [2022-11-16]. (原始内容存档于2022-11-16). ↩
Element UI 通用图片骨架屏组件
https://blog.zhanganzhi.com/zh-CN/2022/11/92e7bb97253e/