前端骨架怎样实现
前端骨架屏(Skeleton Screen)是一种优化页面加载体验的技术,通常在内容加载时展示一个简易的占位符,避免用户看到空白页面。骨架屏通过展示页面结构的骨架样式,让用户有页面正在加载的感觉,而不是等待内容加载完毕。常见的骨架屏实现方式有两种:使用 CSS 动画和使用 JavaScript 组件。
基本实现步骤:
-
设计骨架结构
骨架屏的结构应该根据你页面的内容来设计,常见的有文本框、头像、图片等元素。可以使用灰色或浅色背景来模拟真实内容的占位。 -
使用 CSS 实现动画效果
使用@keyframes来创建渐变动画效果,使骨架屏看起来更流畅。 -
用 React 组件动态渲染骨架屏
使用React或其他框架,基于数据加载状态(如loading)来控制显示骨架屏还是实际内容。
例子:用 React 和 CSS 实现一个简单的骨架屏
1. 创建骨架屏组件
import React from 'react';
import './Skeleton.css';const Skeleton = () => {return (<div className="skeleton-wrapper"><div className="skeleton-avatar"></div><div className="skeleton-text"></div><div className="skeleton-text"></div><div className="skeleton-button"></div></div>);
}export default Skeleton;
2. 添加 CSS 样式
.skeleton-wrapper {display: flex;flex-direction: column;gap: 12px;
}.skeleton-avatar {width: 60px;height: 60px;background: #e0e0e0;border-radius: 50%;animation: skeleton-loading 1.5s infinite ease-in-out;
}.skeleton-text {width: 100%;height: 20px;background: #e0e0e0;border-radius: 4px;animation: skeleton-loading 1.5s infinite ease-in-out;
}.skeleton-button {width: 120px;height: 36px;background: #e0e0e0;border-radius: 6px;animation: skeleton-loading 1.5s infinite ease-in-out;
}@keyframes skeleton-loading {0% {background: #e0e0e0;}50% {background: #f0f0f0;}100% {background: #e0e0e0;}
}
3. 使用骨架屏组件
在你加载数据时,使用骨架屏作为占位符,直到数据加载完毕。
import React, { useState, useEffect } from 'react';
import Skeleton from './Skeleton';const UserProfile = () => {const [data, setData] = useState(null);useEffect(() => {setTimeout(() => {setData({avatar: 'https://randomuser.me/api/portraits/men/1.jpg',name: 'John Doe',bio: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.',});}, 2000); // 模拟延迟加载}, []);return (<div>{data ? (<div><img src={data.avatar} alt="Avatar" /><h2>{data.name}</h2><p>{data.bio}</p></div>) : (<Skeleton />)}</div>);
};export default UserProfile;
其他优化
- 骨架屏类型:
- 灰度骨架屏:展示灰色或其他单色块,不显示内容。
- 内容骨架屏:以实际内容的格式展示占位符,如模拟列表、文章的标题和段落。
- 库支持:如果想要一个更精细的骨架屏,可以使用一些现成的库,比如
react-loading-skeleton或@mui/material自带的骨架屏组件。
参考库
- react-loading-skeleton: 提供了简单的骨架屏组件,支持自定义样式和动画效果。
- @mui/material Skeleton: Material UI 的骨架屏组件,适用于 Material Design 风格的应用。
这样可以大大提升用户体验,避免长时间等待内容加载时的空白页面。你目前有在做这个功能吗?
相关文章:
前端骨架怎样实现
前端骨架屏(Skeleton Screen)是一种优化页面加载体验的技术,通常在内容加载时展示一个简易的占位符,避免用户看到空白页面。骨架屏通过展示页面结构的骨架样式,让用户有页面正在加载的感觉,而不是等待内容加…...
AI前端开发的学习成本与回报——效率革命的曙光
近年来,人工智能技术飞速发展,深刻地改变着各行各业。在软件开发领域,AI写代码工具的出现更是掀起了一场效率革命。AI前端开发,作为人工智能技术与前端开发技术的完美结合,正展现出巨大的发展潜力,为开发者…...
[NOIP2007 普及组] 奖学金 题解
(一)读懂题目 关键句:期末,每个学生都有3门课的成绩:语文、数学、英语。先按总分从高到低排序,如果两个同学总分相同,再按语文成绩从高到低排序,如果两个同学总分和语文成绩都相同,…...
[创业之路-297]:经济周期与股市、行业的关系
目录 一、经济周期的种类 1、短周期(基钦周期) 2、中周期(朱格拉周期) 3、长周期(康德拉季耶夫周期) 当下处于康波周期的哪个阶段? 4、建筑周期(库涅茨周期) 二、…...
Dav_笔记14:优化程序提示 HINTs -3
查询转换的提示 以下每个提示都指示优化程序使用特定的SQL查询转换: ■NO_QUERY_TRANSFORMATION ■USE_CONCAT ■NO_EXPAND ■REWRITE和NO_REWRITE ■MERGE和NO_MERGE ■STAR_TRANSFORMATION和NO_STAR_TRANSFORMATION ■事实和NO_FACT ■UNNEST和NO_UNNEST…...
递归乘法算法
文章目录 递归乘法题目链接题目详解解题思路:代码实现: 结语 欢迎大家阅读我的博客,给生活加点impetus!! 让我们进入《题海探骊》,感受算法之美!! 递归乘法 题目链接 在线OJ 题目…...
从当下到未来:蓝耘平台和 DeepSeek 应用实践的路径探索,勾勒 AI 未来新蓝图
我的个人主页 我的专栏:人工智能领域,希望能帮助到大家!!!点赞👍收藏❤ 引言:AI 浪潮中的双引擎 在人工智能蓬勃发展的时代,蓝耘平台与 DeepSeek 宛如推动这一浪潮前进的双引擎。…...
非标准纸张Word文件无损转换为A4标准纸张的完整教程
在日常办公中,常会遇到需要将非标准纸张大小的Word文档(如A3、B5等)调整为A4标准尺寸的需求。直接修改Word页面设置可能导致排版错乱,而通过 Adobe Acrobat 的印前检查功能可实现内容格式无损缩放。以下是详细操作流程: 一、Word转PDF:保留原始布局 保存为PDF格式 在Word…...
Xlua中C#引用Lua变量,导致Lua侧的GC无法回收的原因及解决方法
1. 引用关系导致: 在 XLua 中,当 C# 端引用了 Lua 变量时,Lua 的垃圾回收器(GC)不会回收这些被引用的变量。这是因为 Lua 的 GC 机制是基于引用计数和标记 - 清除算法的。当 C# 端持有对 Lua 变量的引用时,…...
38.日常算法
1.最短无序连续子数组 题目来源 给你一个整数数组 nums ,你需要找出一个 连续子数组 ,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。请你找出符合题意的 最短 子数组,并输出它的长度。 示例 1: 输入…...
Leetcode 算法题 9 回文数
起因, 目的: 数学法。 % 求余数, 拆开组合,组合拆开。 这个题,翻来覆去,拆开组合, 组合拆开。构建的过程。 题目来源,9 回文数: https://leetcode.cn/problems/palindrome-number…...
docker compose部署flink集群
本次部署2个jobmanager和3个taskmanager 一、部署zookeeper集群 flink使用zookeeper用作高可用 部署集群参考:docker compose部署zookeeper集群-CSDN博客 二、创建目录及配置文件 创建timezone文件,内容填写Asia/Shanghai 手动创建目录:…...
树和二叉树_13
树和二叉树_13 一、HZOJ-245二、题解1.引库2.代码 一、HZOJ-245 货仓选址 在一条数轴上有 N 家商店,他们的坐标分别为 A[1]−A[N]。现在需要在数轴上建立一家货仓,每天清晨,从货仓到每家商店都要运送一车商品。为了提高效率,求…...
常用架构图:业务架构、产品架构、系统架构、数据架构、技术架构、应用架构、功能架构及信息架构
文章目录 引言常见的架构图I 业务架构图-案例模块功能说明1. 用户界面层 (UI)2. 应用服务层3. 数据管理层4. 基础设施层业务流程图示例技术实现II 功能架构图 -案例功能模块说明1. 船舶监控模块2. 报警管理模块3. 应急响应模块4. 通信管理模块5. 数据分析模块数据管理层基础设施…...
AI前端开发:解放创造力,而非取代它
近年来,人工智能技术飞速发展,深刻地改变着各行各业,前端开发领域也不例外。越来越多的AI写代码工具涌现,为开发者带来了前所未有的效率提升。很多人担心AI会取代程序员的创造力,但事实并非如此。本文将探讨AI辅助前端…...
qt的QMainWindow保存窗口和恢复窗口状态
保存窗口状态 QSettings settings("MyCompany", "MyApp"); // 指定存储的应用信息 settings.setValue("mainWindowState", saveState());saveState() 返回一个 QByteArray,包含 所有停靠窗口和工具栏的状态。QSettings 用于存储数据…...
Linux下使用poll函数编写UDP客户端、服务器程序
一、UDP服务器与客户端的区别 对于UDP服务器与客户端,两者都可以通过sendto和recvfrom函数收发数据,它们的主要区别是: 1.服务器一般是等待并响应来自客户端的请求,客户端则是主动发送请求并且等待服务器的响应。 2.服务器端要…...
算法17(力扣217)存在重复元素
1、问题 给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false 。 2、示例 (1) 示例 1: 输入:nums [1,2,3,1] 输出:…...
NO.16十六届蓝桥杯备战|for循环|七道习题|ceil|floor|pow(C++)
for循环 for循环语法形式 for 循环是三种循环中使⽤最多的, for 循环的语法形式如下: //形式1 for(表达式1; 表达式2; 表达式3) 语句;//形式2 //如果循环体想包含更多的语句,可以加上⼤括号 for(表达式1; 表达式2; 表达式3) { …...
深度学习实战基础案例——卷积神经网络(CNN)基于DenseNet的眼疾检测|第4例
文章目录 前言一、数据准备二、项目实战2.1 设置GPU2.2 数据加载2.3 数据预处理2.4 数据划分2.5 搭建网络模型2.6 构建densenet1212.7 训练模型2.8 结果可视化 三、UI设计四、结果展示总结 前言 在当今社会,眼科疾病尤其是白内障对人们的视力健康构成了严重威胁。白…...
(一)Axure制作移动端登录页面
你知道如何利用Axure制作移动端登录页面吗?Axure除了可以制作Web端页面,移动端也是可以的哦,下面我们就一起来看一下Axure制作移动端登录页面的过程吧。 第一步:从元件中拖入一个矩形框,并设置其尺寸为:37…...
C# 上位机--常量
引言 在 C# 上位机开发过程中,常量是一个基础且重要的概念。合理使用常量可以提高代码的可读性、可维护性和安全性。本文将深入探讨 C# 上位机中常量的定义、使用场景以及相关的示例程序,并通过图文结合的方式让读者更直观地理解常量的作用。 一、什么…...
【Linux】【进程】epoll内核实现
【Linux】【进程】epoll内核实现 1 epoll提供的三个函数 1.1 epoll_create(int size); epoll_create()成功返回内核事件表的文件描述符,失败返回-1size 参数现在并不起作用 1.2 epoll_ctl(int epfd, int op, int fd, struct epoll_event *event); epoll_ctl()成…...
ICRA-2025 | 具身导航如何跨越地形障碍?SARO:通过视觉语言模型实现地形穿越
作者:Shaoting Zhu, Derun Li, Linzhan Mou, Yong Liu, Ningyi Xu, Hang Zhao 单位:清华大学交叉信息研究院,上海交通大学电子信息与电气工程学院,浙江大学计算机科学与技术学院,宾夕法尼亚大学GRASP实验室࿰…...
当 LSTM 遇上 ARIMA!!
大家好,我是小青 ARIMA 和 LSTM 是两种常用于时间序列预测的模型,各有优劣。 ARIMA 擅长捕捉线性关系,而 LSTM 擅长处理非线性和长时间依赖的关系。将ARIMA 和 LSTM 融合,可以充分发挥它们各自的优势,构建更强大的时…...
终结磁盘空间紧张局面,针对性处理重复、无用文件
软件介绍 在如今这个数字化浪潮汹涌的时代,咱们的电脑存储空间就像一个杂乱无章的储物间,被各种各样的重复文件塞得满满当当。这些重复文件,犹如隐藏在暗处的 “空间小偷”,悄无声息地吞噬着宝贵的硬盘空间,使得原本井…...
DeepSeek全生态接入指南:官方通道+三大云平台
DeepSeek全生态接入指南:官方通道三大云平台 一、官方资源入口 1.1 核心交互平台 🖥️ DeepSeek官网: https://chat.deepseek.com/ (体验最新对话模型能力) 二、客户端工具 OllamaChatboxCherry StudioAnythingLLM …...
高校LabVIEW开发调试中的常见问题
在高校进行LabVIEW开发调试时,常常面临硬件选型不当、方案设计不合理、布线不专业以及人员流动性强等问题。这些问题可能影响项目的进展和质量。本文将总结这些问题,并给出具体的解决方案,帮助学生和团队更高效地开展开发工作。 1. 硬件选…...
【故障处理】- RMAN-06593: platform name ‘Linux x86 64-bitElapsed: 00:00:00.00‘
【故障处理】- RMAN-06593: platform name Linux x86 64-bitElapsed: 00:00:00.00 一、概述二、报错原因三、解决方法 一、概述 使用xtts迁移,在目标端进行恢复时,遇到RMAN-06593: platform name Linux x86 64-bitElapsed: 00:00:00.00’报错。 二、报错…...
K8S下载离线安装包所需文件
下载相关文件 官网下载地址集合https://kubernetes.io/zh-cn/releases/download/ 下载相关镜像 官网镜像描述 所有 Kubernetes 容器镜像都被部署到 registry.k8s.io 容器镜像仓库。 容器镜像支持架构registry.k8s.io/kube-apiserver:v1.32.0amd64, arm, arm64, ppc64le, …...
