js实现开屏弹窗

各位上次教大家制作另一个简单的开屏弹窗,但是其中是有一点问题的。比如在刷新页面的时候开屏弹窗会再次出现,但是在现实情况中很少出现这种情况。那我们怎么做呢,这时候就需要用到我们之前学到的BOM中的临时存储了。直接展示好吧。

HTML

html 复制代码
<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="styles.css">
    <title>点击消失的开屏弹窗</title>
</head>
<body>

    <div class="splash-screen" id="splashScreen">
        <h1>欢迎来到我的网站</h1>
        <p>点击任意地方关闭此窗口</p>
    </div>

    <div class="content">
        <h2>主内容区域</h2>
        <p>这里是网站的主要内容。</p>
    </div>

    <script src="script.js"></script>
</body>
</html>

CSS (styles.css)

html 复制代码
* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

body {
    font-family: Arial, sans-serif;
}

.splash-screen {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0, 0, 0, 0.7);
    color: white;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    z-index: 9999; /* 确保在最上层 */
    transition: opacity 0.5s ease; /* 添加渐变效果 */
}

.content {
    padding: 20px;
}

JavaScript (script.js)

javascript 复制代码
// 获取弹窗元素
let splash = document.getElementById('splashScreen');

// 检查 sessionStorage 中是否已设置弹窗的显示状态
if (sessionStorage.getItem('splashScreenClosed') == '1') {
    splash.style.display = 'none'; // 如果已关闭,隐藏弹窗
} else {
    splash.style.display = 'flex'; // 否则显示弹窗
}

// 处理弹窗的点击事件
splash.addEventListener('click', function() {
    sessionStorage.setItem('splashScreenClosed', '1'); // 设置标志,表示弹窗已关闭
    splash.style.opacity = '0'; // 渐变消失
    setTimeout(() => {
        splash.style.display = 'none'; // 完全隐藏
    }, 500); // 与 CSS 中的过渡时间相同
});

ok了也是非常之简单,接下来带大家整理下整体思路

  1. HTML:

    • 创建了一个带有欢迎消息的弹窗和一个主内容区域。
  2. CSS:

    • 设置 .splash-screen 的样式,使其全屏覆盖并居中显示内容。
  3. JavaScript:

    • 使用 document.getElementById 获取弹窗元素。
    • 在页面加载时检查 sessionStorage 中的 splashScreenClosed 项:
      • 如果值为 '1',则隐藏弹窗。
      • 如果值不存在或不等于 '1',则显示弹窗。
    • 添加一个点击事件监听器,当用户点击弹窗时:
      • 将 splashScreenClosed 设置为 '1',表示弹窗已关闭。
      • 通过设置透明度并使用 setTimeout 来实现平滑的消失效果。
相关推荐
北京中科新远科技5 分钟前
高速交换机端口预算怎么做?下行、上联、拆分和冗余计算框架
开发语言·php
工控丫丫27 分钟前
帆软看板中经常使用的公式函数及经常搭的组合
前端·javascript·数据库
xiaoye-duck37 分钟前
《C++ 项目:手写大模型接入 SDK》DeepSeek接口设计(下):流式响应实现和测试
开发语言·网络·c++·语言模型
AI源码1 小时前
基于 Python 的短视频用户行为分析系统
开发语言·python
旖旎夜光2 小时前
【C++ 基础入门】类和对象(上):封装、对象模型与 this 指针
开发语言·c++·笔记·学习
揽星河..2 小时前
【C语言】结构体
c语言·开发语言
2601_966949652 小时前
如何封装 qd.klines.batch(),让批量 K 线查询函数在多个策略中复用?
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
Dream-Y.ocean3 小时前
鸿蒙PC平台星图遥感适配实战:基于 Electron 壳方案的纯 JavaScript 遥感图像处理引擎开发
javascript·electron·harmonyos
神仙别闹3 小时前
基于Python实现英词语自动对齐系统
开发语言·python
螺丝钉tina3 小时前
[Playwright ][16]Playwright + TypeScript API 自动化测试实战:API测试
前端·javascript·typescript