在古代前端开发中,用户体验和性能优化始终是小伙伴们谋求的指标之一。骨架屏 (Skeleton Screen) 作为一种优化用户界面加载速度的办法,利用在各种(App/ 小程序 /h5)利用外面。本文将深入探讨骨架屏的最佳实际,联合代码案例,介绍如何实现和优化骨架屏。
什么是骨架屏?
骨架屏是一种在页面加载过程中,以占位符模式展现页面构造的技术。它通过显示简略的灰色块和线条,让用户在期待内容加载时取得视觉反馈,进步了用户的满意度。
为什么须要骨架屏?
在挪动设施和慢速网络环境下,页面加载速度变得尤为要害。用户不愿期待长时间能力看到页面内容。骨架屏可能在内容加载齐全之前疾速展现页面构造,让用户感触到页面加载的进度,从而进步了用户体验。
应用纯 CSS 实现骨架屏
实现骨架屏的办法有很多,能够应用纯 CSS,也能够应用 SVG,甚至还能够利用一些前端库。上面咱们以一个简略的纯 CSS 实现为例。
1、实现简略的 html 骨架页面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Skeleton Example</title>
</head>
<body>
<div class="skeleton">
<div class="skeleton-header"></div>
<div class="skeleton-body">
<div class="skeleton-line"></div>
<div class="skeleton-line"></div>
<div class="skeleton-line"></div>
</div>
</div>
</body>
</html>
2、实现骨架屏款式
/* skeleton.css */
.skeleton {
width: 300px;
padding: 20px;
background-color: #f6f7f8;
}
.skeleton-header {
width: 100%;
height: 200px;
background-color: #e0e0e0;
}
.skeleton-body .skeleton-line {
width: 100%;
height: 20px;
margin-top: 20px;
background-color: #e0e0e0;
}
实现成果如图,骨架屏尽管简略,但要做得好,还能够进一步优化。
3、骨架屏优化
/* CSS */
@keyframes shimmer {
0% {background-position: -468px 0;}
100% {background-position: 468px 0;}
}
.skeleton-header, .skeleton-body .skeleton-line {
animation-duration: 1.25s;
animation-fill-mode: forwards;
animation-iteration-count: infinite;
animation-name: shimmer;
animation-timing-function: linear;
background: #f6f7f8;
background: linear-gradient(to right, #eeeeee 8%, #dddddd 18%, #eeeeee 33%);
background-size: 800px 104px;
position: relative;
}
以上代码为骨架屏增加了一个流动光影的动画成果,使得骨架屏看起来更有生机。
基于预渲染的骨架屏
基于预渲染的骨架屏技术通过服务器端渲染(SSR)或动态站点生成(SSG)提前生成页面的骨架,而后在客户端加载时填充内容,从而进步性能和 SEO。
应用 react-loading-skeleton 创立骨架屏
import React from 'react';
import Skeleton from 'react-loading-skeleton';
function UserProfile() {
return (
<div>
<h2>User Profile</h2>
<div className="user-details">
<Skeleton height={100} width={100} circle={true} />
<div className="user-info">
<Skeleton height={20} width={200} />
<Skeleton height={20} width={200} />
<Skeleton height={20} width={200} />
</div>
</div>
</div>
);
}
export default UserProfile;
骨架屏的最佳实际
放弃骨架屏与理论内容的一致性
为了确保用户不会感知到内容的“跳动”,骨架屏的构造和款式应该与最终加载的内容统一。
应用占位符
占位符能够帮忙页面保持稳定的布局,避免内容在加载实现前产生大的布局变动。
优化骨架屏的性能
为了进步性能,应该减小骨架屏的大小,并确保它们以最快的速度加载。
总结
骨架屏技术是进步前端性能和用户体验的有要害一环。通过在加载过程中提供视觉反馈,骨架屏可能缩小用户等待时间,减少用户留存率,从而晋升了用户满意度。
无论你是在开发单页利用、多页利用,还是挪动利用,都能够思考将骨架屏技术融入你的我的项目中,为用户带来更疾速、更晦涩的体验。