讲师中心 微信公众号

扫码关注官方订阅号

注册 / 登录
首页
文章
后端开发 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背景图片

相关文章

FIMO输出HTML包含渐变参数吗_FIMO输出HTML渐变信息详解【解析】

html个人页面hover效果怎么加_html悬停动画css写法【动效】

html5布局代码动态加载布局切换_html5布局代码动态切换法【教程】

html5可视化编辑怎么实现轮播图_html5可视化轮播制作教程【技巧】

html5滤镜如何实现酸性风格_html5酸性滤镜css写法【技巧】

相关标签:

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

作者最新文章

《控制》工作室被嘲讽:被卖了还帮数钱!

2026-01-24 09:57

Bootstrap 5 Tabs 首个标签页点击跳转顶部的解决方案

2026-01-24 09:59

《仁王3》官方17分长实机游玩视频公开

2026-01-24 10:02

如何在 Go 中使用 xlsx 库获取 Excel 表格中最后一个非空行的行号

2026-01-24 10:04

如何用 CSS 实现网格中行列等宽高的正方形布局

2026-01-24 10:08

如何正确将对象存入数组:Java中避免意外创建默认实例的实践指南

2026-01-24 10:09

如何在Python中正确使用pandas读取Excel文件

2026-01-24 10:15

OpenShift v0.3.3 样例应用中自签名证书验证失败的解决方法

2026-01-24 10:21

Java 中 Garage 类的汽车存储逻辑错误及修复指南

2026-01-24 10:24

XPath 表达式中基于子元素存在性筛选节点的写法

2026-01-24 10:32

热门AI工具

更多
DeepSeek
DeepSeek

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

AI 编程开发AI 聊天问答
豆包大模型
豆包大模型

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

AI 编程开发AI大模型
通义千问
通义千问

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

AI 编程开发Agent智能体
腾讯元宝
腾讯元宝

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

文档处理AI 聊天问答
文心一言
文心一言

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

AI 编程开发AI 文本写作
讯飞写作
讯飞写作

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

AI 文本写作中文写作
即梦AI
即梦AI

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

图片拼接图画生成
ChatGPT
ChatGPT

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

AI 编程开发AI 文本写作
智谱清言 - 免费全能的AI助手
智谱清言 - 免费全能的AI助手

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

AI 编程开发Agent智能体

相关专题

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

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

559

2023.06.20

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

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

438

2023.07.04

js四舍五入
js四舍五入

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

776

2023.07.04

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

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

480

2023.09.01

JavaScript转义字符
JavaScript转义字符

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

574

2023.09.04

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

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

1091

2023.09.04

如何启用JavaScript
如何启用JavaScript

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

659

2023.09.12

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

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

554

2023.09.20

拼多多赚钱的5种方法 拼多多赚钱的5种方法
拼多多赚钱的5种方法 拼多多赚钱的5种方法

在拼多多上赚钱主要可以通过无货源模式一件代发、精细化运营特色店铺、参与官方高流量活动、利用拼团机制社交裂变,以及成为多多进宝推广员这5种方法实现。核心策略在于通过低成本、高效率的供应链管理与营销,利用平台社交电商红利实现盈利。

31

2026.01.26

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板
  • [表单按钮]jQuery表单选择填写功能
  • [图片特效]CSS3悬挂的照片墙效果代码
  • [图片特效]html5 3d宽屏幻灯片代码
  • [图片特效]jQuery图片横向滚动
  • [表单按钮]四种用css3制作的弹窗表单插件
  • [图片特效]jQuery横向流动图片插件
  • [表单按钮]jquery女性月经安全期计算器代码
  • [表单按钮]jQuery仿魅族官网注册表单代码
  • [图片特效]jQuery移动端幻灯片插件swipeslider
  • [图片特效]jQuery数字按钮切换焦点图
  • [电商源码]openaishop
  • [其它模板]思翔企(事)业单位文件柜 build 20080313
  • [企业站源码]雅龙智能装备工业设备类WordPress主题1.0
  • [电商源码]威发卡自动发卡系统
  • [电商源码]卡密分发系统
  • [电商源码]中华陶瓷网
  • [电商源码]简洁粉色食品公司网站
  • [电商源码]极速网店系统
  • [电商源码]淘宝妈妈_淘客推广系统
  • [电商源码]积客B2SCMS商城系统
  • [网站素材]汉堡快餐美食宣传INS模板设计下载
  • [网站素材]可爱卡通萌系小马合集矢量素材
  • [网站素材]唯美中式古建筑夜景图矢量素材
  • [网站素材]冬季手绘毛衣热饮合集矢量素材
  • [网站素材]手绘热带菠萝水果合集矢量素材
  • [网站素材]3D礼物主题海报设计下载
  • [网站素材]2026马年线性装饰矢量素材
  • [网站素材]货币金融科技金融海报设计下载
  • [网站素材]水墨冬季寒梅傲雪风景矢量模板
  • [网站素材]清新拼贴自然环保海报矢量模板
  • [前端模板]驾照考试驾校HTML5网站模板
  • [前端模板]驾照培训服务机构宣传网站模板
  • [前端模板]HTML5房地产公司宣传网站模板
  • [前端模板]新鲜有机肉类宣传网站模板
  • [前端模板]响应式天气预报宣传网站模板
  • [前端模板]房屋建筑维修公司网站CSS模板
  • [前端模板]响应式志愿者服务网站模板
  • [前端模板]创意T恤打印店网站HTML5模板
  • [前端模板]网页开发岗位简历作品展示网页模板
  • [前端模板]响应式人力资源机构宣传网站模板

相关下载

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

精品课程

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

共14课时 | 0.8万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3万人学习

CSS教程
CSS教程

共754课时 | 24万人学习

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

共6课时 | 11.2万人学习

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

共79课时 | 151.6万人学习

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

共6课时 | 53.4万人学习

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

共4课时 | 21.9万人学习

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

共6课时 | 11.2万人学习

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

共13课时 | 0.9万人学习

最新文章

更多
html5布局代码flex与float区别_html5布局代码两者差异对比【解析】
如何修复 Viber 深度链接在移动设备上失效的问题
如何将嵌套数组数据按顺序注入同名类的多个 DOM 元素中
如何将嵌套数组数据按顺序注入同名 class 的多个 DOM 元素中
HTML 表格中仅首列支持水平滚动的实现方案
如何为按钮添加悬停时平滑移动到页面中央的动画效果
如何实现 HTML 表格中仅首列支持水平滚动
SVG 中使用 textPath 实现富文本效果的正确方法
Mapbox 中实现跟随动画标记的自由相机效果
如何为按钮添加悬停时向右平移至页面中心的动画效果
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号

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

技术交流群

QQ扫码
加入技术交流群

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

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

  • PHP学习

  • 技术支持

  • 返回顶部