新闻中心

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

2025-10-25
浏览次数:
返回列表

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

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

使用 sessionStorage 控制启动画面显示

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

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

代码实现

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

HTML:

Mureka Mureka

Mureka是昆仑万维最新推出的一款AI音乐创作工具,输入歌词即可生成完整专属歌曲。

Mureka 1091 查看详情 Mureka
<div class="splash">
    <h1 class="splash-content" id="content1">Sub</h1>
    <h1 class="splash-content" id="content2">Sub</h1>
    <h1 class="splash-content" id="content3">Sub</h1>
</div>

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;
    }
}

J*aScript:

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");
}

代码解释

  1. HTML 结构: 定义了一个 div 元素,类名为 splash,用于包含启动画面的内容。
  2. CSS 样式: 设置了 splash 元素的样式,包括背景颜色、层叠顺序、居中对齐等。display-none 类用于隐藏启动画面,post_animated类也是隐藏,但是使用了不同的逻辑。还定义了几个动画,使启动画面更加生动。
  3. J*aScript 代码:
    • 首先,通过 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 应用场景。

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


# 只在  # 珠海seo优化平台  # 广东法律网站建设  # 濮阳seo公司甄选20火星  # 嘉定区运动营销推广部  # 网络营销地区推广方案  # 海南seo入门推荐知乎  # 企业网站推广优惠方案模板  # 科研团队网站建设  # 营销推广方案设计例子  # 联投优化人员招聘网站官网  # 是一个  # 拖拽  # 开新  # 如何使用  # css  # 自定义  # 都能  # 复选框  # 加载  # 首次  # sessionstorage  # ai  # session  # ssl  # 浏览器  # html  # java  # javascript 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: 漫蛙manwa官网登录界面_漫蛙漫画网页版主站入口  精准捕获:如何在页面中监听除特定元素外的所有点击事件  zookeeper 都有哪些功能?  天猫双十一预售商品怎么退款_天猫双十一预售退款操作指南  vivo浏览器自带的下载器速度慢怎么办 vivo浏览器提升文件下载速度的技巧  如何使用Node.js csv 包按条件移除含空字段的CSV记录  Win11怎么设置鼠标主按键_Win11鼠标左右键功能互换  《刺客信条:影》PS5 Pro和Switch 2画面对比  Django AJAX 文件上传教程:解决图片无法保存到模型的常见问题  windows10怎么查看硬盘序列号_windows10硬盘id查询命令  Python大型XML文件高效流式解析教程  Bing引擎入口最新2025 Bing搜索免费官方登录  QQ邮箱官方网页版登录 QQ邮箱个人邮箱快速访问  浏览器打开即用 美图秀秀网页版入口  C++的std::mdspan是什么_C++23中用于操作多维数组的非拥有视图  顺丰快递查询系统 官方正版查询入口  J*aScript井字棋(Tic-Tac-Toe)核心交互逻辑实现教程  mc.js免安装版 mc.js一键畅玩入口  漫蛙2漫画入口 漫蛙正版网页漫画直达网址  FullCalendar 自定义按钮样式定制指南  微信网页版扫码登录入口 微信网页版二维码登录入口  抖音隐秘迷城小游戏入口_ 抖音冒险解谜小游戏秒玩  优化 Jest 模拟:强制未实现函数抛出错误以提升测试效率  在J*a里如何理解依赖关系的方向_依赖方向在模块结构中的作用  QQ邮箱网页版入口页面 QQ邮箱在线登录入口官网  J*aScript 字符串标签转换:使用正则表达式高效替换  高德地图家和公司地址在哪设置 高德地图通勤路线设置方法【超详细】  j*a toString()的覆盖  Windows电脑怎么截图最方便_系统自带截图工具的5种神仙用法【技巧】  如何将HTML表格多行数据保存到Google Sheet  Python:递归比较文件夹内容并找出特定类型文件的差异  Steam官网入口直达 Steam注册及登录步骤  动漫共和国防屏蔽稳定域名-动漫共和国官方正版直达通道  Win11怎么设置开机NumLock亮 Win11修改注册表InitialKeyboardIndicators值  c++中的std::launder有什么实际用途_c++对象生命周期与指针优化  J*a递归快速排序中静态变量导致数据累积问题的解决方案  Discord Slash 命令响应超时问题的异步解决方案  12306几点到几点不能订票? | 官方最新系统维护时间全解析  Composer如何处理Git子模块(submodule)依赖_Composer与Git Submodule的对比与选择  《铁拳8》黑皮辣妹新实机:元气满满的18岁少女!  python3时间如何用calendar输出?  html网页设计源代码怎么运行_运行html网页设计源代码步骤【指南】  CKEditor 5 自定义构建在React应用中渲染失败的调试与解决  Golang如何使用new_Go new分配内存机制讲解  Composer的 "check-platform-reqs" 命令有什么用_在部署前检查生产环境是否满足Composer依赖需求  解决Flask中Quill编辑器内容提交失败及TypeError的指南  谷歌google账号怎么注册账号 谷歌账号注册官方流程  React Hooks最佳实践:动态组件状态管理的组件化方案  Node.js 中使用 node-cron 实现定时 API 数据抓取与处理  《马克思佩恩3》早期版本曝光 UI设计曾多次调整! 

搜索