讲师中心 微信公众号

扫码关注官方订阅号

注册 / 登录
首页
文章
后端开发 web前端 数据库 开发工具 php框架 常见问题 科技 Java 系统教程 电脑教程 硬件教程 手机教程 软件教程 游戏教程 自媒体 新闻
专题
后端开发 web前端 数据库 开发工具 php框架 科技 Java 系统教程 电脑教程 硬件教程 手机教程 软件教程 游戏教程 新闻
AI工具
AI 聊天问答 Agent智能体 AI 文本写作 AI 绘画作图 AI 设计工具 AI 视频创作 AI 音频制作 AI 办公学习 AI 编程开发 Prompt指令
学习
大前端 后端开发 数据库 移动端 运维开发 计算机基础
编程手册
大前端 后端开发 数据库 移动端 运维开发 计算机基础
下载
js特效 网站源码 工具下载 类库下载 网站素材 学习资源 插件扩展 手机游戏
最近更新
当前位置:首页 > web前端 > html教程 >

正文

0

0

前端页面加载动画的实现与自动隐藏

花韻仙語

花韻仙語

发布时间:2025-11-18 11:26:02

|

898人浏览过

|

来源于php中文网

原创

前端页面加载动画的实现与自动隐藏

本教程详细介绍了如何使用HTML、CSS和JavaScript创建并控制页面加载动画。通过定义加载层、应用CSS动画效果,并结合JavaScript的`window.onload`事件和`setTimeout`函数,实现加载动画在页面内容完全加载后自动隐藏,从而提升用户体验并平滑过渡到主内容。

在现代网页应用中,加载动画(Loading Animation)是提升用户体验的重要组成部分。当页面内容,特别是图片、视频或大量数据需要时间加载时,一个友好的加载动画可以有效缓解用户的等待焦虑,并告知用户页面正在积极响应。本文将深入探讨如何结合HTML结构、CSS样式与动画以及JavaScript逻辑,实现一个在页面内容加载完毕后自动隐藏的加载动画。

一、HTML结构:构建加载层

首先,我们需要一个HTML元素来承载加载动画。通常,这个元素会覆盖整个屏幕,确保在页面内容加载完成前,用户只能看到加载动画。




    
    
    加载动画示例
    


    
@@##@@ G R A V G I F T

欢迎来到主页面!

这是页面加载完成后显示的内容。

立即学习“前端免费学习笔记(深入)”;

@@##@@

在这个结构中:

  • .loading 是整个加载动画的容器,它将覆盖整个视口。
  • .loading-img 负责定位加载动画的中心内容。
  • 元素用于显示文本或图像,并可单独应用动画效果。这里我们使用了一个图片和一系列文字。

二、CSS样式与动画:美化加载效果

CSS是实现加载动画视觉效果的关键。我们将使用position: fixed来确保加载层覆盖整个屏幕,并利用@keyframes定义动画。

@import url(https://fonts.googleapis.com/css?family=Quattrocento+Sans);

body {
    margin: 0;
    font-family: "Quattrocento Sans", sans-serif;
    overflow: hidden; /* 初始隐藏滚动条,防止加载时内容闪现 */
}

.loading {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: #fff; /* 加载背景色 */
    z-index: 9999; /* 确保加载层在所有内容之上 */
    display: flex; /* 使用Flexbox居中内容 */
    justify-content: center;
    align-items: center;
    transition: opacity 0.5s ease-out; /* 添加淡出过渡效果 */
}

.loading-img {
    text-align: center;
    /* 移除绝对定位,让Flexbox处理居中 */
}

.loading-img-img {
    display: inline-block; /* 使图片能与文字对齐 */
    vertical-align: middle; /* 垂直对齐 */
    margin-right: 10px; /* 图片与文字间距 */
}

.loading-img span {
    display: inline-block;
    margin: 0 5px;
    font-size: 30px;
    vertical-align: middle; /* 垂直对齐 */
    filter: blur(0px); /* 初始模糊度 */
    /* 应用动画,使用不同的延迟创建交错效果 */
    animation: blur-img 1.5s infinite linear alternate;
}

/* 为每个文字span应用不同的动画延迟 */
.loading-img span:nth-child(2) { animation-delay: 0.2s; }
.loading-img span:nth-child(3) { animation-delay: 0.4s; }
.loading-img span:nth-child(4) { animation-delay: 0.6s; }
.loading-img span:nth-child(5) { animation-delay: 0.8s; }
.loading-img span:nth-child(6) { animation-delay: 1s; }
.loading-img span:nth-child(7) { animation-delay: 1.2s; }
.loading-img span:nth-child(8) { animation-delay: 1.4s; }
.loading-img span:nth-child(9) { animation-delay: 1.6s; }
.loading-img span:nth-child(10) { animation-delay: 1.8s; }

/* 定义模糊动画 */
@keyframes blur-img {
    0% { filter: blur(0px); }
    100% { filter: blur(4px); }
}

/* 主内容样式,初始隐藏 */
.main-content {
    padding: 20px;
    text-align: center;
}

关键CSS点:

  • position: fixed 和 z-index: 9999 确保加载层始终位于最顶层并覆盖整个视口。
  • display: flex 和 justify-content: center, align-items: center 用于将加载内容(.loading-img)精确居中。
  • @keyframes blur-img 定义了一个从无模糊到有模糊的动画效果。
  • animation-delay 属性在 nth-child 选择器中被巧妙使用,为每个文字 元素创建了交错的动画效果,使加载过程更具动感。
  • transition: opacity 0.5s ease-out; 为加载层添加了平滑的淡出效果,而不是生硬的消失。

三、JavaScript逻辑:控制加载动画的显示与隐藏

JavaScript是实现加载动画自动隐藏的核心。我们将利用window.onload事件来检测整个页面(包括所有图片、样式表、脚本等)是否已完全加载,然后通过setTimeout函数提供一个短暂的延迟,以确保动画有足够的时间播放,最后隐藏加载层并显示主内容。

灵迅企业网站系统1.0
灵迅企业网站系统1.0

主要功能:基本设置:站点常规属性设置。导航管理:添加/删除导航菜单,隐藏与显示。单页管理:增加修改单页,通过强大的编辑器可插入动画图片视频等内容。新闻管理:新闻分类管理,增加/删除/修改新闻。产品管理:产品二级分类,产品略缩图,产品推荐,增/删/改产品。订单管理:前台对相应的产品下订单,后台查看与处理订单信息。下载管理:下载分类管理,可做软件下载,文件下载等功能。幻灯管理:幻灯添加、幻灯修改等。招

下载
window.onload = function() {
    // 获取加载动画元素和主内容元素
    const loadingElement = document.querySelector(".loading");
    const mainContentElement = document.querySelector(".main-content");

    // 设置一个延迟,确保加载动画有足够时间播放
    // 即使页面内容加载很快,也可以保证动画的完整展示
    setTimeout(function() {
        // 1. 先设置透明度为0,触发CSS的淡出过渡
        loadingElement.style.opacity = '0';

        // 2. 在过渡完成后(或稍作延迟),再将display设置为none
        // 这样可以避免在过渡期间元素依然占据空间
        loadingElement.addEventListener('transitionend', function() {
            loadingElement.style.display = 'none';
            // 显示主内容
            mainContentElement.style.display = 'block';
            // 恢复body的滚动条
            document.body.style.overflow = 'auto';
        }, { once: true }); // 确保事件监听器只执行一次

        // 如果不希望等待CSS过渡完成,也可以直接在这里设置display: 'none';
        // loadingElement.style.display = 'none';
        // mainContentElement.style.display = 'block';
        // document.body.style.overflow = 'auto';

    }, 2000); // 这里的2000毫秒(2秒)是动画播放的最小持续时间
};

JavaScript逻辑详解:

  • window.onload = function() { ... };:这个事件在浏览器加载完所有内容(包括图片、CSS、JS文件等)后触发。这是确保页面完全就绪的最佳时机。
  • setTimeout(function() { ... }, 2000);:即使页面内容加载速度非常快,setTimeout也能保证加载动画至少播放2秒(或您设定的任何时间),从而避免加载动画一闪而过的情况,提升用户体验。
  • loadingElement.style.opacity = '0';:首先将加载层的透明度设置为0。由于我们在CSS中为.loading添加了transition: opacity 0.5s ease-out;,这将触发一个平滑的淡出效果。
  • loadingElement.addEventListener('transitionend', function() { ... }, { once: true });:监听opacity过渡完成的事件。当过渡结束后,我们才将display属性设置为none,彻底从文档流中移除加载层,并显示主内容。{ once: true }确保事件监听器只执行一次,避免内存泄漏。
  • mainContentElement.style.display = 'block';:显示之前被隐藏的页面主要内容。
  • document.body.style.overflow = 'auto';:恢复body的滚动条,允许用户滚动查看页面内容。

四、注意事项与最佳实践

  1. window.onload vs DOMContentLoaded:

    • DOMContentLoaded 事件在HTML文档被完全加载和解析完成时触发,不需要等待样式表、图片等完全加载。
    • window.onload 事件在页面所有资源(包括图片、样式表、脚本等)都加载完成后触发。
    • 对于加载动画,通常选择 window.onload 更合适,因为它能确保在所有视觉元素都准备好之前,加载动画一直显示。
  2. setTimeout 的作用:

    • setTimeout 的引入是为了给加载动画一个最小的展示时间。即使网络速度很快,页面内容瞬间加载完成,加载动画也能完整地播放一段设定的时间,避免动画效果过于短暂而用户未能察觉。
    • 根据动画的复杂度和用户的感知,合理设置延迟时间。
  3. 平滑过渡:

    • 通过CSS transition 结合 JavaScript 控制 opacity 属性,可以实现加载动画的平滑淡出,而不是突然消失,进一步提升用户体验。
  4. 性能考虑:

    • 复杂的CSS动画可能会消耗一定的CPU和GPU资源。在设计加载动画时,应尽量优化,避免过度复杂的动画效果,尤其是在移动设备上。
    • 确保加载动画的图片资源(如logo.png)经过优化,大小适中。
  5. 可访问性:

    • 对于屏幕阅读器用户,加载动画可能会造成困扰。可以考虑使用aria-live属性或在动画结束后将焦点转移到主内容区域,以提高可访问性。

总结

通过HTML构建加载层、CSS赋予视觉效果与动画、以及JavaScript控制显示与隐藏,我们可以实现一个功能完善且用户友好的页面加载动画。这种方法不仅能有效管理用户等待时间,还能通过平滑的过渡效果提升整体的网页体验。掌握这些技术,将使您的网页应用在用户交互方面更具专业性和吸引力。

Logo背景图片

相关文章

轮播图怎么制作html_轮播图制作html入门方法【基础】

猎豹浏览器如何开启html5硬件加速_猎豹浏览器开硬件加速法【优化】

html5网站模板怎样添加页面过渡动画_html5加过渡动画窍门【指南】

HTML怎样设背景图片径向渐变_HTML径向渐变背景图片法【光影】

HTML下拉框怎么设选中样式_CSS给HTML下拉框改选中项色【样式】

相关标签:

css javascript word java html js 前端 go 浏览器 ai win google JavaScript css html auto JS function 事件 选择器 样式表 display position overflow transition animation flex

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

上一篇:Flask应用中的CSRF防护:深入理解与Flask-WTForms实践 下一篇:构建可自动关闭的JavaScript弹窗:点击外部区域关闭实现指南

作者最新文章

Python 列表为空?警惕循环中意外重置变量的常见陷阱

2026-01-17 12:29

RTX50系显卡出货大砍!今年一整年恐无新显卡

2026-01-17 12:31

解析 Python 类型注解字符串以提取泛型参数(如 Tuple 中的子类型)

2026-01-17 12:32

Go 中 map 迭代顺序的不确定性与格式化动词无关

2026-01-17 12:34

如何通过按钮点击复制并重命名文件(PHP 实现)

2026-01-17 13:05

《生化危机9:安魂曲》回归浣熊市原因曝光!让系列重回主线

2026-01-17 13:06

如何用Python优雅实现逗号分隔列表(含“and”连接)

2026-01-17 13:09

《勇者斗恶龙7 Reimagined》职业系统/强敌怪物等介绍

2026-01-17 13:15

Go语言解析SOAP响应XML的完整教程:解决命名空间导致的结构体字段为空问题

2026-01-17 13:15

《上古卷轴4:湮灭重制版》在PS5平台卖出110万份

2026-01-17 13:28

热门AI工具

更多
DeepSeek

DeepSeek

幻方量化公司旗下的开源大模型平台

AI大模型

开放平台

豆包大模型

豆包大模型

字节跳动自主研发的一系列大型语言模型

AI大模型

通义千问

通义千问

阿里巴巴推出的全能AI助手

AI大模型

腾讯元宝

腾讯元宝

腾讯混元平台推出的AI助手

文档处理

Excel 表格

文心一言

文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

AI大模型

中文写作

讯飞写作

讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

中文写作

写作工具

即梦AI

即梦AI

一站式AI创作平台,免费AI图片和视频生成。

图片拼接

图画生成

ChatGPT

ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

AI大模型

中文写作

智谱清言 - 免费全能的AI助手

智谱清言 - 免费全能的AI助手

智谱清言 - 免费全能的AI助手

AI大模型

PDF 文档

相关专题

更多
js获取数组长度的方法
js获取数组长度的方法

在js中,可以利用array对象的length属性来获取数组长度,该属性可设置或返回数组中元素的数目,只需要使用“array.length”语句即可返回表示数组对象的元素个数的数值,也就是长度值。php中文网还提供JavaScript数组的相关下载、相关课程等内容,供大家免费下载使用。

554

2023.06.20

js刷新当前页面
js刷新当前页面

js刷新当前页面的方法:1、reload方法,该方法强迫浏览器刷新当前页面,语法为“location.reload([bForceGet]) ”;2、replace方法,该方法通过指定URL替换当前缓存在历史里(客户端)的项目,因此当使用replace方法之后,不能通过“前进”和“后退”来访问已经被替换的URL,语法为“location.replace(URL) ”。php中文网为大家带来了js刷新当前页面的相关知识、以及相关文章等内容

374

2023.07.04

js四舍五入
js四舍五入

js四舍五入的方法:1、tofixed方法,可把 Number 四舍五入为指定小数位数的数字;2、round() 方法,可把一个数字舍入为最接近的整数。php中文网为大家带来了js四舍五入的相关知识、以及相关文章等内容

732

2023.07.04

js删除节点的方法
js删除节点的方法

js删除节点的方法有:1、removeChild()方法,用于从父节点中移除指定的子节点,它需要两个参数,第一个参数是要删除的子节点,第二个参数是父节点;2、parentNode.removeChild()方法,可以直接通过父节点调用来删除子节点;3、remove()方法,可以直接删除节点,而无需指定父节点;4、innerHTML属性,用于删除节点的内容。

477

2023.09.01

JavaScript转义字符
JavaScript转义字符

JavaScript中的转义字符是反斜杠和引号,可以在字符串中表示特殊字符或改变字符的含义。本专题为大家提供转义字符相关的文章、下载、课程内容,供大家免费下载体验。

394

2023.09.04

js生成随机数的方法
js生成随机数的方法

js生成随机数的方法有:1、使用random函数生成0-1之间的随机数;2、使用random函数和特定范围来生成随机整数;3、使用random函数和round函数生成0-99之间的随机整数;4、使用random函数和其他函数生成更复杂的随机数;5、使用random函数和其他函数生成范围内的随机小数;6、使用random函数和其他函数生成范围内的随机整数或小数。

991

2023.09.04

如何启用JavaScript
如何启用JavaScript

JavaScript启用方法有内联脚本、内部脚本、外部脚本和异步加载。详细介绍:1、内联脚本是将JavaScript代码直接嵌入到HTML标签中;2、内部脚本是将JavaScript代码放置在HTML文件的`<script>`标签中;3、外部脚本是将JavaScript代码放置在一个独立的文件;4、外部脚本是将JavaScript代码放置在一个独立的文件。

657

2023.09.12

Js中Symbol类详解
Js中Symbol类详解

javascript中的Symbol数据类型是一种基本数据类型,用于表示独一无二的值。Symbol的特点:1、独一无二,每个Symbol值都是唯一的,不会与其他任何值相等;2、不可变性,Symbol值一旦创建,就不能修改或者重新赋值;3、隐藏性,Symbol值不会被隐式转换为其他类型;4、无法枚举,Symbol值作为对象的属性名时,默认是不可枚举的。

551

2023.09.20

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

43

2026.01.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板
  • [图片特效]jQuery可悬停控制图片轮播代码
  • [表单按钮]HTML5棱形动态背景登录框代码
  • [图片特效]LayerSlider带动画效果幻灯片
  • [表单按钮]jQuery掩码文本输入框 jQuery掩码文本输入框网页特效
  • [图片特效]旋转木马切换特效slick
  • [表单按钮]创意的熊猫遮眼登录框代码
  • [图片特效]js仿YOKA七日重头戏图片切换
  • [表单按钮]jQuery带步骤找回密码表单代码
  • [图片特效]jQuery图片滑动切换 jQuery图片滑动切换代码下载
  • [表单按钮]CSS3注册表单文本框占位符特效
  • [其它模板]思翔企(事)业单位文件柜 build 20080313
  • [企业站源码]雅龙智能装备工业设备类WordPress主题1.0
  • [电商源码]威发卡自动发卡系统
  • [电商源码]卡密分发系统
  • [电商源码]中华陶瓷网
  • [电商源码]简洁粉色食品公司网站
  • [电商源码]极速网店系统
  • [电商源码]淘宝妈妈_淘客推广系统
  • [电商源码]积客B2SCMS商城系统
  • [电商源码]CODEC2I 众筹系统
  • [网站素材]2026新春纳福金葫芦矢量素材
  • [网站素材]手机特价宣传海报PSD素材下载
  • [网站素材]游戏手柄特价折扣方形海报PSD下载
  • [网站素材]新春喜庆灯笼梅花边框矢量素材
  • [网站素材]周末美食折扣海报PSD设计源文件下载
  • [网站素材]手绘读书俱乐部海报矢量模板
  • [网站素材]商务名片展示样机PSD分层素材下载
  • [网站素材]扁平海边沙滩旅游风景矢量插画
  • [网站素材]超市购物特价产品宣传主图PSD素材下载
  • [网站素材]现代几何抽象飞鸟装饰矢量素材
  • [前端模板]驾照考试驾校HTML5网站模板
  • [前端模板]驾照培训服务机构宣传网站模板
  • [前端模板]HTML5房地产公司宣传网站模板
  • [前端模板]新鲜有机肉类宣传网站模板
  • [前端模板]响应式天气预报宣传网站模板
  • [前端模板]房屋建筑维修公司网站CSS模板
  • [前端模板]响应式志愿者服务网站模板
  • [前端模板]创意T恤打印店网站HTML5模板
  • [前端模板]网页开发岗位简历作品展示网页模板
  • [前端模板]响应式人力资源机构宣传网站模板

相关下载

更多
jquery实现鼠标左右移动动画特效

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 0.8万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 2.9万人学习

CSS教程
CSS教程

共754课时 | 19.9万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 7.5万人学习

最新ThinkPHP 5.1全球首发视频教程(60天成就PHP大牛线上培训班课)
最新ThinkPHP 5.1全球首发视频教程(60天成就PHP大牛线上培训班课)

共79课时 | 151.2万人学习

phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 53.4万人学习

最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 2.9万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 7.5万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

最新文章

更多
轮播图怎么制作html翻转切换_做html轮播图翻转效果法【翻转】
HTML5的Canvas能做啥_HTML绘图局限在哪【示例】
如何在表单中可靠提交大量复选框的选中/未选中状态
如何在表单提交中准确捕获所有复选框的选中与未选中状态
BIRT报表中有序列表(OL)的start属性在PDF导出时失效的解决方案
如何在用户悬停选择项时触发事件
如何在 React 中正确实现权限检查函数并返回布尔值
CSS 绝对定位元素在相对定位父容器中偏移的根源与修复方案
html轮播图怎么绑定事件_给html轮播图加触发事件法【事件】
html5网站模板如何修改下拉菜单展开方向_html5改菜单方向攻略【贴士】
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号

微信扫码
关注PHP中文网服务号

技术交流群

QQ扫码
加入技术交流群

PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • PHP学习

  • 技术支持

  • 返回顶部