实现页面加载时播放启动画面,关闭标签页后重置

实现页面加载时播放启动画面,关闭标签页后重置

本文介绍如何使用 JavaScript 实现一个在页面首次加载时播放启动画面,并在用户关闭标签页后重置的功能。我们将探讨如何利用 `sessionStorage` API 来存储会话状态,从而控制启动画面的显示逻辑,确保每次用户打开新标签页时都能看到启动画面。

使用 sessionStorage 控制启动画面显示

在 Web 开发中,启动画面(Splash Screen)常用于在页面加载时提供视觉反馈,提升用户体验。通常我们希望启动画面只在用户首次访问页面时显示,避免重复出现。然而,当用户关闭标签页并重新打开时,我们可能希望启动画面再次显示。要实现这种效果,可以结合使用 sessionStorage API 和 JavaScript。

sessionStorage 与 localStorage 类似,都用于在浏览器中存储数据,但 sessionStorage 存储的数据只在当前会话(即浏览器标签页或窗口)有效。当用户关闭标签页或窗口时,sessionStorage 中的数据会被自动清除。这使得 sessionStorage 非常适合存储与当前会话相关的状态信息,例如启动画面是否已经播放过。

代码实现

以下是一个示例代码,演示如何使用 sessionStorage 来控制启动画面的显示:

HTML:

绘蛙AI修图 绘蛙AI修图

绘蛙平台AI修图工具,支持手脚修复、商品重绘、AI扩图、AI换色

绘蛙AI修图 279 查看详情 绘蛙AI修图

Sub

Sub

Sub

CSS:

.splash {    background: black;    z-index: 2;    text-align: center;    justify-content: center;    align-items: center;    width: 100%;    height: 100vh;    transition: 4s;}.splash-content {    color: white;    transform: translateY(11em);}.splash.display-none{    opacity: 0;    z-index: 0;    transform: translateY(-100%);    transition: 1.5s;}.splash.post_animated {    display: none;}#content1 {    animation: come-in-first 2s ease-in;}#content2 {    animation: come-in-second 3s ease-in;}#content3 {    transform: translate(4px, 11em);    animation: come-in-third 4s ease-in;}@keyframes come-in-first {    0% {        transform: translateY(13em);        opacity: 0;    }}@keyframes come-in-second {    0%, 50% {        transform: translateY(11.5em);        opacity: 0;    }}@keyframes come-in-third {    0%, 60% {        transform: translate(4px, 11.5em);        opacity: 0;    }}

JavaScript:

const splash = document.querySelector('.splash');document.addEventListener('DOMContentLoaded', (e) => {  setTimeout(() => {    splash.classList.add('display-none');  }, 6000);})var firstContainer = document.querySelector(".splash");var result = sessionStorage.getItem('hasRan');if (!result) {        sessionStorage.setItem('hasRan', true);} else {    firstContainer.classList.remove("animated");    firstContainer.classList.add("post_animated");}

代码解释

HTML 结构: 定义了一个 div 元素,类名为 splash,用于包含启动画面的内容。CSS 样式: 设置了 splash 元素的样式,包括背景颜色、层叠顺序、居中对齐等。display-none 类用于隐藏启动画面,post_animated类也是隐藏,但是使用了不同的逻辑。还定义了几个动画,使启动画面更加生动。JavaScript 代码:首先,通过 document.querySelector(‘.splash’) 获取 splash 元素。使用 sessionStorage.getItem(‘hasRan’) 检查 sessionStorage 中是否已存在名为 hasRan 的数据项。如果 hasRan 不存在(即用户首次访问页面),则使用 sessionStorage.setItem(‘hasRan’, true) 创建该数据项,并将值设置为 true。这意味着启动画面应该显示。如果 hasRan 已经存在(即用户不是首次访问页面),则移除 animated 类,并添加 post_animated 类。 这会隐藏启动画面。使用 setTimeout 函数,在 6 秒后给 splash 元素添加 display-none 类,从而隐藏启动画面。

注意事项

sessionStorage 存储的数据是字符串类型。如果需要存储其他类型的数据,需要进行类型转换。sessionStorage 的容量有限,通常为 5MB 左右。因此,不适合存储大量数据。sessionStorage 只能在同源的页面之间共享数据。

总结

通过使用 sessionStorage API,我们可以轻松地控制启动画面在页面加载时的显示逻辑,确保每次用户打开新标签页时都能看到启动画面,从而提升用户体验。这种方法简单有效,适用于各种 Web 应用场景。

以上就是实现页面加载时播放启动画面,关闭标签页后重置的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/714706.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月24日 12:01:46
下一篇 2025年11月24日 12:05:47

相关推荐

  • 如何将字符串转换为整型?

    在python中,将字符串转换为整型主要使用int()函数。1) 去除字符串中的空格,使用strip()方法;2) 处理带小数点的字符串,先转浮点数再转整型,或使用round()函数四舍五入;3) 处理带千位分隔符的字符串,使用replace()方法去除分隔符;4) 使用try-except块处理错…

    2025年12月10日
    000
  • PHP中如何实现数据加密?

    php中如何实现数据加密?在php中,可以使用openssl和mcrypt等内置函数和扩展库实现数据加密。1. 选择合适的加密算法,如aes或rsa。2. 使用aes加密时,需生成并管理初始化向量(iv)。3. 密钥管理至关重要,应安全存储并加密传输。4. rsa适用于小数据加密或密钥交换,但处理大…

    2025年12月10日
    000
  • PHP中foreach如何获取键和值?

    在php中,使用foreach循环可以遍历数组或对象,并获取键和值。1. 使用$key => $value语法可以同时获取键和值。2. 处理多维数组时,可以使用嵌套的foreach循环。3. 要修改原始数组,需要使用引用&$value。4. foreach通常比for循环更高效,尤其在…

    2025年12月10日
    000
  • PHP中如何实现数据验证?

    在php中实现数据验证可以使用手动验证、php内置函数和第三方库三种方法。1. 使用filter_var()等内置函数进行基本验证。2. 利用preg_match()进行正则表达式验证。3. 采用respectvalidation或symfonycomponentvalidator等第三方库简化复杂…

    2025年12月10日
    000
  • PHP中array_combine怎么合并键值?

    array_combine函数在php中用于将一个数组的元素作为键,另一个数组的元素作为值创建新数组。1)基本语法是$new_array = array_combine($keys, $values),确保$keys和$values长度相同。2)高级用法包括重新组织用户信息。3)注意事项:数组长度不…

    2025年12月10日
    000
  • PHP中字符串如何定义?

    php中定义字符串的方式有四种:1) 单引号字符串,不解析变量和转义字符;2) 双引号字符串,解析变量和某些转义字符;3) heredoc语法,允许变量解析,适合多行文本;4) nowdoc语法,不解析变量,类似单引号字符串。 在PHP中,字符串的定义方式多种多样,这让它既灵活又有趣。首先,最常见的…

    2025年12月10日
    000
  • PHP中索引数组和关联数组有什么区别?

    php中索引数组和关联数组的区别在于:索引数组使用数字作为键,适合存储相同类型的数据列表;关联数组使用字符串作为键,适合存储键值对数据。1. 索引数组简单高效,适用于用户列表等场景,但缺乏灵活性。2. 关联数组灵活且可读性高,适用于用户信息等复杂数据,但性能稍差。选择时需根据具体需求决定。 PHP中…

    2025年12月10日
    000
  • php可以做前端吗 php在前端开发中的作用和限制

    php可以做前端,但主要用于生成动态内容。1) php生成html、css和javascript,内容在服务器端生成后以静态形式发送到浏览器。2) 结合javascript可以实现更动态的交互和用户体验。 当然可以用PHP做前端,但这并不是最常见的做法。让我先回答你的问题:PHP可以做前端吗?答案是…

    2025年12月10日
    000
  • PHP中如何实现数据同步?

    在php中实现数据同步可以使用以下方法:1. 使用cron作业,通过定时执行php脚本实现数据同步,适合数据更新频率不高的场景。2. 使用消息队列,如rabbitmq,适用于需要实时同步的场景。3. 使用触发器和存储过程,利用数据库功能实现实时数据同步,但需考虑对数据库性能的影响。 在PHP中实现数…

    2025年12月10日
    000
  • PHP中如何实现多线程?

    php不支持多线程,但可以通过以下方法实现类似效果:1. 使用pcntl扩展创建多进程,适用于简单并行任务,但不支持windows。2. 使用pthread扩展实现真正的多线程,但可能遇到兼容性和调试问题。3. 使用reactphp库进行异步并发处理,适合高并发场景,但学习曲线较陡。 在PHP中实现…

    2025年12月10日
    000
  • PHP中如何验证ISWC字符串?

    在php中验证iswc字符串的方法是:1. 使用正则表达式验证格式”t-xxx.yyy.z”。2. 计算校验位,通过去掉”t-“和点后,按权重计算总和,取余数并计算校验位,最后与字符串最后一位比较。 在PHP中验证ISWC(International …

    2025年12月10日
    000
  • php是前端还是后端 一文带你了解php在前端和后端开发中的角色

    php主要用于后端开发。1)php是一种强大的服务器端脚本语言,用于生成动态网页内容,处理表单数据、与数据库交互等。2)php在前端的应用包括生成javascript代码或嵌入html进行客户端操作。 PHP是前端还是后端?这个问题其实很好解答:PHP主要是用于后端开发。不过,PHP在前端和后端的角…

    2025年12月10日
    000
  • PHP中单引号和双引号字符串的区别?

    PHP中单引号和双引号字符串的区别?在PHP中,单引号和双引号字符串看似简单,但它们之间的差异却常常让开发者陷入困惑。单引号和双引号的选择不仅仅是个人偏好,它直接影响到代码的性能和功能。让我们深入探讨一下这些差异,以及在实际开发中如何选择合适的引号类型。 首先要明确的是,单引号字符串在处理时更快,因…

    2025年12月10日
    000
  • php数据库增删改查语句 php数据库操作的基本语句教程

    需要掌握数据库操作的基本语句,因为它们能使数据处理更灵活、高效,并优化数据库设计和应用性能。在php中,这些操作包括:1. 插入数据,使用insert into语句;2. 查询数据,使用select语句;3. 更新数据,使用update语句;4. 删除数据,使用delete语句。 在学习PHP数据库…

    2025年12月10日
    000
  • PHP中如何实现文件上传功能?

    在php中实现文件上传需要使用$_files超级全局数组处理文件,并通过move_uploaded_file()函数将文件移动到指定位置。具体步骤包括:1. 在html表单中设置enctype=”multipart/form-data”。2. 使用$_files数组获取文件信…

    2025年12月10日
    000
  • PHP中如何实现策略模式?

    在php中实现策略模式可以通过以下步骤:1. 定义策略接口,如paymentstrategy。2. 创建具体策略类,如creditcardstrategy和alipaystrategy。3. 实现上下文类,如shoppingcart,用于动态设置和使用策略。策略模式使代码扩展性和复用性增强,但需注意…

    2025年12月10日
    000
  • PHP中__construct和__destruct的作用?

    在php中,__construct是对象的构造函数,用于初始化对象属性;__destruct是对象的析构函数,用于清理资源。1.__construct方法在对象创建时自动调用,初始化对象属性,如设置用户初始状态。2.__destruct方法在对象销毁时自动调用,进行清理工作,如关闭数据库连接,避免资…

    2025年12月10日
    000
  • php后缀文件怎么打开 快速打开php后缀文件的几种方法

    打开php文件的方法有四种:1. 使用文本编辑器,如notepad++或sublime text,适合查看和编辑代码;2. 在本地服务器环境中使用xampp或wamp,适合查看执行结果;3. 利用ide如phpstorm或vs code,适合专业开发;4. 在线代码编辑器如repl.it或codep…

    2025年12月10日
    000
  • PHP中如何实现数据导出?

    在php中实现数据导出的基本方法是通过服务器端脚本生成文件内容,然后通过http头部信息告诉浏览器将其作为文件下载。1. csv文件导出使用fputcsv函数生成,需注意http头部设置和字段转义处理。2. excel文件导出使用phpspreadsheet库,支持复杂格式但资源消耗高。3. 大数据…

    2025年12月10日
    000
  • php技术栈的常见三个步骤 php开发中的核心技术栈解析

    在php开发中,常见的三个步骤是:1. 设计:使用uml和mvc模式规划系统架构,提高代码可维护性。2. 开发:关注代码实现,确保安全性,使用composer管理依赖。3. 部署:利用docker容器化应用,简化部署过程。 在PHP开发中,常见的三个步骤是什么?这是一个非常好的问题,答案并不简单,因…

    2025年12月10日
    000

发表回复

登录后才能评论
关注微信