乐趣区

关于程序员:前端性能优化必杀技骨架屏让你快人一步

在古代前端开发中,用户体验和性能优化始终是小伙伴们谋求的指标之一。骨架屏 (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;

骨架屏的最佳实际

放弃骨架屏与理论内容的一致性

为了确保用户不会感知到内容的“跳动”,骨架屏的构造和款式应该与最终加载的内容统一。

应用占位符

占位符能够帮忙页面保持稳定的布局,避免内容在加载实现前产生大的布局变动。

优化骨架屏的性能

为了进步性能,应该减小骨架屏的大小,并确保它们以最快的速度加载。

总结

骨架屏技术是进步前端性能和用户体验的有要害一环。通过在加载过程中提供视觉反馈,骨架屏可能缩小用户等待时间,减少用户留存率,从而晋升了用户满意度。

无论你是在开发单页利用、多页利用,还是挪动利用,都能够思考将骨架屏技术融入你的我的项目中,为用户带来更疾速、更晦涩的体验。

退出移动版