美文网首页前端必知必会
前端性能优化必杀技:骨架屏让你快人一步

前端性能优化必杀技:骨架屏让你快人一步

作者: 码农说 | 来源:发表于2023-09-20 23:00 被阅读0次

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

骨架屏的最佳实践

保持骨架屏与实际内容的一致性

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

使用占位符

占位符可以帮助页面保持稳定的布局,防止内容在加载完成前发生大的布局变化。

优化骨架屏的性能

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

总结

骨架屏技术是提高前端性能和用户体验的有关键一环。通过在加载过程中提供视觉反馈,骨架屏能够减少用户等待时间,增加用户留存率,从而提升了用户满意度。

无论你是在开发单页应用、多页应用,还是移动应用,都可以考虑将骨架屏技术融入你的项目中,为用户带来更快速、更流畅的体验。

相关文章

  • 前端性能优化(中)

    性能优化调研系列文章 《前端性能优化(上)》 《前端性能优化(中)》 《前端性能优化(下)》 《前端性能优化(上)...

  • 前端性能优化(下)

    性能优化调研系列文章 《前端性能优化(上)》 《前端性能优化(中)》 《前端性能优化(下)》 《前端性能优化(中)...

  • 前端性能优化(上)

    性能优化调研系列文章 《前端性能优化(上)》 《前端性能优化(中)》 《前端性能优化(下)》 为什么要进行前端性能...

  • 前端面试必问及加分点---性能优化篇

    如何进行网站性能优化 你有用过哪些前端性能优化的方法? 谈谈性能优化问题 代码层面的优化 前端性能优化最佳实践

  • 前端性能优化 - 首屏渲染优化实现及其必要性

    前端性能优化,不得不提的就是这个首屏渲染优化 首屏渲染优化 其实更具体点,应该是:首次加载首屏渲染优化,原因是某些...

  • 前端优化之骨架屏探索

    首屏渲染问题 首屏渲染问题一直单页面应用的问题,如果网速慢或者服务器响应慢的话,页面没有做一些交互处理,就会出现长...

  • 移动web相关(二)

    首屏优化 前端性能 我们所说的前端性能一般包括:加载性能;渲染速度;用户交互响应速度;动画流畅性;DOM操作无闪动...

  • 前端性能优化概述

    前端性能优化概述 前言 性能优化是一个让人很纠结的话题,每一个前端工程师都知道前端性能优化是很重要都一个环节。但是...

  • JavaScript

    前端 优化策略-自查表 前端性能优化常用总结鸟瞰前端 , 再论性能优化 跨域,你需要知道的全在这里内存分析与内存泄...

  • 关于前端性能优化

    前端性能优化: 前端性能优化是个经久不息的话题,也是面试常客,今天简单总结下,让大家有初步的了解 1.代码级的优化...

网友评论

    本文标题:前端性能优化必杀技:骨架屏让你快人一步

    本文链接:https://www.haomeiwen.com/subject/fzbavdtx.html