讲师中心 微信公众号

扫码关注官方订阅号

注册 / 登录
首页
文章
后端开发 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列表怎样用HTML5语义化优化_用ulolli规范层级关系【列表】

如何在页面跳转前完成 CSS 动画(阻止 href 默认跳转行为)

HTML5怎样插入背景图_HTML5插入背景图方式【CSS】

SonyVaio电脑怎样设html5播放比例_SonyVaio定html5比例【设定】

HTML5怎样让图片随文字环绕_HTML5图片随文字环绕技巧【混排】

相关标签:

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弹窗:点击外部区域关闭实现指南

作者最新文章

标题:为什么显式指定客户端本地端口会导致 TCP 连接挂起 30 秒?

2026-01-14 12:44

iPhone 18 Pro已打样:灵动岛变小了 史上首次

2026-01-14 12:47

动态禁用下拉菜单中与输入框内容匹配的选项(jQuery 实现)

2026-01-14 13:02

Go语言中 io/ioutil.NopCloser 的作用与使用详解

2026-01-14 13:03

Go 中的上下文感知变量:HTML 模板安全渲染的核心机制

2026-01-14 13:07

TCP客户端指定本地端口后出现30秒延迟的原因及解决方案

2026-01-14 13:08

任天堂2025年度回顾上线 可追溯至2017年NS首发记录

2026-01-14 13:12

Go语言中 io/ioutil.NopCloser 的作用与实用场景详解

2026-01-14 13:13

如何使用 CSS Grid 实现 Flex 包裹后子项自适应高度分配

2026-01-14 13:21

影视大全怎么查看法律条款?-影视大全查看法律条款的方法

2026-01-14 13:23

热门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四舍五入的相关知识、以及相关文章等内容

731

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函数和其他函数生成范围内的随机整数或小数。

990

2023.09.04

如何启用JavaScript
如何启用JavaScript

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

656

2023.09.12

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

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

551

2023.09.20

Golang gRPC 服务开发与Protobuf实战
Golang gRPC 服务开发与Protobuf实战

本专题系统讲解 Golang 在 gRPC 服务开发中的完整实践,涵盖 Protobuf 定义与代码生成、gRPC 服务端与客户端实现、流式 RPC(Unary/Server/Client/Bidirectional)、错误处理、拦截器、中间件以及与 HTTP/REST 的对接方案。通过实际案例,帮助学习者掌握 使用 Go 构建高性能、强类型、可扩展的 RPC 服务体系,适用于微服务与内部系统通信场景。

8

2026.01.15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板
  • [表单按钮]CSS3窗口登录表单带关闭按钮
  • [图片特效]CSS3绘制iPhoneX手机墙纸切换特效
  • [表单按钮]jQuery联系人生成二维码代码
  • [文字特效]10款鼠标悬停遮罩显示文字特效
  • [文字特效]HTML5 Canvas粒子文字特效
  • [表单按钮]jQuery橙色注册表单验证代码
  • [图片特效]jQuery大屏淡入淡出幻灯片
  • [图片特效]jquery底部带缩略图的幻灯片代码
  • [表单按钮]html5用手机号码注册表单代码
  • [文字特效]饮料瓶造型文字旋转特效
  • [其它模板]思翔企(事)业单位文件柜 build 20080313
  • [企业站源码]雅龙智能装备工业设备类WordPress主题1.0
  • [电商源码]威发卡自动发卡系统
  • [电商源码]卡密分发系统
  • [电商源码]中华陶瓷网
  • [电商源码]简洁粉色食品公司网站
  • [电商源码]极速网店系统
  • [电商源码]淘宝妈妈_淘客推广系统
  • [电商源码]积客B2SCMS商城系统
  • [电商源码]CODEC2I 众筹系统
  • [网站素材]极简线条玉兰花卉插画矢量素材
  • [网站素材]手绘烹饪调料香料合集矢量素材
  • [网站素材]惬意午后咖啡阅读时光矢量插画
  • [网站素材]中国宏伟古建筑矢量素材
  • [网站素材]黑色星期五耳机折扣横幅设计下载
  • [网站素材]国潮风莲花荷塘插画矢量素材
  • [网站素材]假日快乐烟花背景ps素材下载
  • [网站素材]新春喜庆剪纸喜鹊窗花矢量素材
  • [网站素材]绿色生态梯田自然风景矢量素材
  • [网站素材]紫色风格2026折扣横幅海报设计下载
  • [前端模板]驾照考试驾校HTML5网站模板
  • [前端模板]驾照培训服务机构宣传网站模板
  • [前端模板]HTML5房地产公司宣传网站模板
  • [前端模板]新鲜有机肉类宣传网站模板
  • [前端模板]响应式天气预报宣传网站模板
  • [前端模板]房屋建筑维修公司网站CSS模板
  • [前端模板]响应式志愿者服务网站模板
  • [前端模板]创意T恤打印店网站HTML5模板
  • [前端模板]网页开发岗位简历作品展示网页模板
  • [前端模板]响应式人力资源机构宣传网站模板

相关下载

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

精品课程

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

共14课时 | 0.8万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 2.9万人学习

CSS教程
CSS教程

共754课时 | 19.2万人学习

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

共6课时 | 7万人学习

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

共79课时 | 151.2万人学习

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

共6课时 | 53.4万人学习

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

共4课时 | 0.7万人学习

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

共6课时 | 7万人学习

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

共13课时 | 0.9万人学习

最新文章

更多
如何实现点击按钮后平滑滚动至预订模块顶部(避开固定头部)
如何实现响应式导航栏展开时主内容自动下移
如何将科学计数法数字格式化为固定小数位的常规十进制形式
如何精准定位下拉列表(UL)使其紧贴输入框底部对齐
如何将科学计数法数值格式化为固定小数位的十进制字符串
如何精准定位下拉列表(UL)于输入框正下方
如何正确实现下拉列表(UL)相对于输入框的精准定位
如何正确实现下拉列表(UL)相对于输入框的精确定位
如何将科学计数法数值格式化为固定小数位的常规数字
如何在 Django 中通过单一主表 ID 批量保存多个子表表单
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号

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

技术交流群

QQ扫码
加入技术交流群

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

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

  • PHP学习

  • 技术支持

  • 返回顶部