HTML之拜年/跨年APP(改进版)

目录:

一:目录

二:效果

三:页面分析/开发逻辑

1.页面详细分析:

2.开发逻辑:

四:完整代码(不多废话)

index.html部分

app.json部分

二:效果

 三:页面分析/开发逻辑

1.页面详细分析:

(1) 页面标题为“拜年跨年倒计时”,表明该页面的主要功能是提供两个倒计时:一个用于拜年,另一个用于跨年。

(2) 页面显示了两个倒计时的时间:距离2025年拜年还有8天14时13分23秒,距离2026年跨年还有345天14时13分23秒。

(3)页面底部显示了版权信息,表明该页面是由宁夏线上海原编程培训中心/研发/开发工作室开发的。

2.开发逻辑:

1. 首先,需要获取当前的日期和时间。

2. 然后,计算距离2025年拜年和2026年跨年的剩余时间。

3. 将剩余时间以天、小时、分钟和秒的形式显示在页面上。

4. 最后,更新版权信息,显示开发者的名称和联系方式。

四:完整代码(不多废话)

index.html部分

<!doctype html>
<html>

<head>
    <meta charset="UTF-8">
    <meta name="viewport" id="viewport" content="width=device-width, initial-scale=1, user-scalable=0">
    <title>拜年跨年倒计时</title>
    <link rel="icon" href="images/favicon.jpg" type="image/x-icon">
    <style>
        #body {
            position: fixed;
            background-image: linear-gradient(to bottom right, #FFEB3B, #F44336, #FFEB3B);
            height: 100%;
            width: 100%;
            left: 0;
            top: 0;
            overflow: scroll;
        }

        .container {
            position: fixed;
            left: 0;
            top: 0;
            width: 100%;
            height: 100%;
            overflow: scroll;
            z-index: 2024;
        }

        .title {
            margin-top: 10%;
            text-align: center;
            font-size: 32px;
            color: white;
            text-shadow: 0 0 16px black;
            animation-name: title;
            animation-duration: 0.5s;
            animation-fill-mode: forwards;
            animation-delay: 0.1s;
            transform: translateX(64px);
            opacity: 0;
        }

        @keyframes title {
            from {
                transform: translateY(64px);
                opacity: 0;
            }

            to {
                transform: translateY(0);
                opacity: 1;
            }
        }

        .ydcard,
        .cjcard {
            width: 80%;
            height: 30%;
            background-color: #FBE9E7;
            background-clip: padding-box;
            border-radius: 8px;
            border: 16px solid rgba(255, 255, 255, 0.5);
            animation-name: card;
            animation-duration: 0.5s;
            animation-fill-mode: forwards;
            opacity: 0;
            margin-top: 64px;
            margin-bottom: 64px;
            max-width: 600px;
            max-height: 225px;
            transform: scale(0.85);
        }

        @keyframes card {
            from {
                opacity: 0;
                margin-top: 64px;
                margin-bottom: 64px;
                transform: scale(0.85);
            }

            to {
                opacity: 1;
                margin-top: 16px;
                margin-bottom: 16px;
                transform: scale(1);
            }
        }

        .jl1,
        .jl2 {
            font-size: 16px;
            margin-top: 8px;
            margin-left: 8px;
            opacity: 0;
            animation-name: opacity;
            animation-duration: 0.5s;
            animation-fill-mode: forwards;
        }

        .jlyd,
        .jlcj {
            font-size: 24px;
            font-weight: bolder;
            text-align: center;
            opacity: 0;
            animation-name: opacity;
            animation-duration: 0.5s;
            animation-fill-mode: forwards;
            color: transparent;
            -webkit-background-clip: text;
            text-shadow: 0 12px 16px #F44336;
        }

        @keyframes opacity {
            from {
                opacity: 0;
            }

            to {
                opacity: 1;
            }
        }

        .jl1 {
            animation-delay: 0.4s;
        }

        .jl2 {
            animation-delay: 0.6s;
        }

        .sign {
            margin: 16px;
            font-size: 16px;
            color: white;
            text-shadow: 0 0 8px black;
            animation-name: opacity;
            animation-duration: 0.5s;
            animation-fill-mode: forwards;
            animation-delay: 0.8s;
            opacity: 0;
            text-align: center;
        }

        .firework {
            width: 8px;
            height: 8px;
            border-radius: 8px;
            background: #000;
            position: fixed;
            bottom: 0;
            animation-name: blossom;
            animation-delay: .6s;
            animation-duration: .5s;
            animation-fill-mode: forwards;
            transition-property: margin-bottom, transform, filter;
            transition-duration: 1s, .5s, .5s;
        }

        @keyframes blossom {
            0% {}

            50% {
                opacity: 1;
                transform: scale(1);
            }

            75% {
                opacity: .7;
            }

            100% {
                opacity: 0;
                transform: scale(50);
            }
        }
    </style>
</head>

<body>
    <div id="body">
        <div class="container">
            <div class="title">拜年倒计时</div>
            <div class="ydcard" id="ydcard">
                <div class="jl1">距离 2025 年拜年:</div>
                <div id="jlyd" class="jlyd"></div>
            </div>
            <div class="cjcard" id="cjcard">
                <div class="jl2">距离 2026 年跨年:</div>
                <div id="jlcj" class="jlyd"></div>
            </div>
            <div class="sign">版权©️宁夏线上海原编程培训中心/研发/开发工作室.</div>
        </div>
    </div>
    <script>
        //卡片定位
        var ydcard = document.getElementById('ydcard');
        var cjcard = document.getElementById('cjcard');

        function kpdw() {
            ydcard.style = "margin-left: calc(50% - " + (ydcard.clientWidth / 2 + 16) + "px);animation-delay: 0.2s;";
            cjcard.style = "margin-left: calc(50% - " + (cjcard.clientWidth / 2 + 16) + "px);animation-delay: 0.3s;";
            jlyd.style = "margin-top: calc(" + (ydcard.clientHeight / 2 - 52) + "px);animation-delay: 0.5s;background-image: linear-gradient(to right, #FFC107, #FF6F00);";
            jlcj.style = "margin-top: calc(" + (cjcard.clientHeight / 2 - 52) + "px);animation-delay: 0.7s;background-image: linear-gradient(to right, #FF5722, #BF360C);";
        }
        window.setInterval('kpdw();', 10); //每隔10毫秒定位一次卡片
     <!-- 杜洛码农部 -->
     <!--  杜洛码农部-->
        function freshTime() {
            var ydTime = new Date("2025/1/29,00:00:00"); //拜年时间
            var cjTime = new Date("2026/1/1,00:00:00"); //跨年节时间
            var nowTime = new Date(); //当前时间
            var ydLeftTime = parseInt((ydTime.getTime() - nowTime.getTime()) / 1000); //距离拜年的时间
            var cjLeftTime = parseInt((cjTime.getTime() - nowTime.getTime()) / 1000); //距离跨年的时间
            ydD = parseInt(ydLeftTime / (24 * 60 * 60));
            cjD = parseInt(cjLeftTime / (24 * 60 * 60));
            ydH = parseInt(ydLeftTime / (60 * 60) % 24);
            cjH = parseInt(cjLeftTime / (60 * 60) % 24);
            ydM = parseInt(ydLeftTime / 60 % 60);
            cjM = parseInt(cjLeftTime / 60 % 60);
            ydS = parseInt(ydLeftTime % 60);
            cjS = parseInt(cjLeftTime % 60);
            document.getElementById("jlyd").innerHTML = ydD + " 天 " + ydH + " 时 " + ydM + " 分 " + ydS + " 秒"; //输出距离拜年的时间
            document.getElementById("jlcj").innerHTML = cjD + " 天 " + cjH + " 时 " + cjM + " 分 " + cjS + " 秒"; //输出距离跨年的时间
            //当拜年到达时
            if (ydLeftTime <= 0) {
                document.getElementById("jlyd").innerHTML = "拜年已至!";
            }
            //当跨年到达时
            if (cjLeftTime <= 0) {
                document.getElementById("jlcj").innerHTML = "跨年已至!";
            }
        }
        freshTime()
        var sh;
        sh = setInterval(freshTime, 10); //每隔10毫秒刷新一次时间
        //函数:随机颜色
        function randomColor() {
            r = Math.random() * 255;
            g = Math.random() * 255;
            b = Math.random() * 255;
            return "rgb(" + r + ", " + g + ", " + b + ")";
        }
        //延时执行:播放烟花效果
        window.setTimeout(function() {
            window.setInterval(function() {
                var firework = document.createElement("div");
                firework.style.left = Math.random() * screen.width + "px";
                firework.style.backgroundColor = randomColor();
                brightness = (Math.random() * 1 + 1);
                firework.style.filter = "brightness(" + brightness + ")";
                document.getElementById("body").appendChild(firework);
                firework.classList.add("firework");
                firework.style.transform = "scale(1,4) translateY(24px)";
                window.setTimeout(function() {
                    firework.style.marginBottom = Math.random() * screen.height + "px";
                }, 99);<!--杜洛码农部  -->
                window.setTimeout(function() {
                    document.body.removeChild(firework);
                }, 1500);
            }, Math.random() * 200 + 300);
        }, 2000);
    </script>
</body>

</html>

app.json部分

{
    "appName": "拜年跨年倒计时APP",
    "appIconPath": "favicon.png",
    "splashPath": "favicon.png",
    "packageName" : "com.mycomapny.mywebapp",
    "versionName" : "1.0.0",
    "versionCode" : 1,
    "isFullscreen" : false,
    "isHideTitleBar" : false,
    "titleBarBackgroundColor" : "#3F51B5",
    "isAllowLongClick" : true,
    "isShowLoadingUI" : true,
    "isAllowZoom" : true,
    "isPCMode" : false,
    "isAllowAutoplay" : false,
    "homePage" : "index.html",
    "withPHPEnv": false,
    "PHPPort": 57249,
    "isAllowSwipeRefresh": true,
    "screenRotationMethod": 0,
    "isAllowCamera": false,
    "isAllowMicrophone": false
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/957041.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

PostgreSQL的学习心得和知识总结(一百六十六)|深入理解PostgreSQL数据库之\watch元命令的实现原理

目录结构 注&#xff1a;提前言明 本文借鉴了以下博主、书籍或网站的内容&#xff0c;其列表如下&#xff1a; 1、参考书籍&#xff1a;《PostgreSQL数据库内核分析》 2、参考书籍&#xff1a;《数据库事务处理的艺术&#xff1a;事务管理与并发控制》 3、PostgreSQL数据库仓库…

使用 Parcel 和 NPM 脚本进行打包

使用 Parcel 和 NPM 脚本进行打包 Parcel Parcel 是一个零配置的网页应用程序打包工具&#xff0c;主要用于快速构建现代 JavaScript 应用。 我们可以使用npm直接安装它 npm install --save-dev parcel //这将把 Parcel 添加到 devDependencies 中&#xff0c;表明它是一个…

项目实战--网页五子棋(游戏大厅)(3)

我们的游戏大厅界面主要需要包含两个功能&#xff0c;一是显示用户信息&#xff0c;二是匹配游戏按钮 1. 页面实现 hall.html <!DOCTYPE html> <html lang"ch"> <head><meta charset"UTF-8"><meta name"viewport"…

网络安全VS数据安全

关于网络安全和数据安全&#xff0c;我们常听到如下两种不同声音&#xff1a; 观点一&#xff1a;网络安全是数据安全的基础&#xff0c;把当年做网络安全的那一套用数据安全再做一遍。 观点二&#xff1a;数据安全如今普遍以为是网络安全的延伸&#xff0c;实际情况是忽略数据…

React 中hooks之useDeferredValue用法总结

目录 概述基本用法与防抖节流的区别使用场景区分过时内容最佳实践 概述 什么是 useDeferredValue? useDeferredValue 是 React 18 引入的新 Hook&#xff0c;用于延迟更新某个不那么重要的部分。它接收一个值并返回该值的新副本&#xff0c;新副本会延迟更新。这种延迟是有…

浅谈 JVM

JVM 内存划分 JVM 内存划分为 四个区域&#xff0c;分别为 程序计数器、元数据区、栈、堆 程序计数器是记录当前指令执行到哪个地址 元数据区存储存储的是当前类加载好的数据&#xff0c;包括常量池和类对象的信息&#xff0c;.java 编译之后产生 .class 文件&#xff0c;运…

HTTP / 2

序言 在之前的文章中我们介绍过了 HTTP/1.1 协议&#xff0c;现在再来认识一下迭代版本 2。了解比起 1.1 版本&#xff0c;后面的版本改进在哪里&#xff0c;特点在哪里&#xff1f;话不多说&#xff0c;开始吧⭐️&#xff01; 一、 HTTP / 1.1 存在的问题 很多时候新的版本的…

使用vscode在本地和远程服务器端运行和调试Python程序的方法总结

1 官网下载 下载网址&#xff1a;https://code.visualstudio.com/Download 如下图所示&#xff0c;可以分别下载Windows,Linux,macOS版本 历史版本下载链接: https://code.visualstudio.com/updates 2 安装Python扩展工具 打开 VS Code&#xff0c;安装 Microsoft 提供的官…

免费为企业IT规划WSUS:Windows Server 更新服务 (WSUS) 之快速入门教程(一)

哈喽大家好&#xff0c;欢迎来到虚拟化时代君&#xff08;XNHCYL&#xff09;&#xff0c;收不到通知请将我点击星标&#xff01;“ 大家好&#xff0c;我是虚拟化时代君&#xff0c;一位潜心于互联网的技术宅男。这里每天为你分享各种你感兴趣的技术、教程、软件、资源、福利…

Ubuntu 24.04 LTS 安装 tailscale 并访问 SMB共享文件夹

Ubuntu 24.04 LTS 安装 tailscale 安装 Tailscale 官方仓库 首先&#xff0c;确保系统包列表是最新的&#xff1a; sudo apt update接下来&#xff0c;安装 Tailscale 所需的仓库和密钥&#xff1a; curl -fsSL https://tailscale.com/install.sh | sh这会自动下载并安装 …

基于python+Django+mysql鲜花水果销售商城网站系统设计与实现

博主介绍&#xff1a;黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者&#xff0c;CSDN博客专家&#xff0c;在线教育专家&#xff0c;CSDN钻石讲师&#xff1b;专注大学生毕业设计教育、辅导。 所有项目都配有从入门到精通的基础知识视频课程&#xff…

“AI人工智能内容辅助创作平台:让创意不再“卡壳”

在如今这个信息爆炸的时代&#xff0c;内容创作成了每个人的“必修课”。无论是自媒体大V、文案策划&#xff0c;还是普通学生写作文&#xff0c;大家都会遇到一个让人抓狂的问题——“创意枯竭”。有时候&#xff0c;脑袋里空空如也&#xff0c;一个字都写不出来&#xff0c;那…

【计算机网络】传输层协议TCP与UDP

传输层 传输层位于OSI七层网络模型的第四层&#xff0c;主要负责端到端通信&#xff0c;可靠性保障&#xff08;TCP&#xff09;&#xff0c;流量控制(TCP)&#xff0c;拥塞控制(TCP)&#xff0c;数据分段与分组&#xff0c;多路复用与解复用等&#xff0c;通过TCP与UDP协议实现…

基础入门-传输加密数据格式编码算法密文存储代码混淆逆向保护安全影响

知识点&#xff1a; 1、传输格式&传输数据-类型&编码&算法 2、密码存储&代码混淆-不可逆&非对称性 一、演示案例-传输格式&传输数据-类型&编码&算法 传输格式 JSON XML WebSockets HTML 二进制 自定义 WebSockets&#xff1a;聊天交互较常…

DenseNet-密集连接卷积网络

DenseNet&#xff08;Densely Connected Convolutional Network&#xff09;是近年来图像识别领域中一种创新且高效的深度卷积神经网络架构。它通过引入密集连接的设计&#xff0c;极大地提高了特征传递效率&#xff0c;减缓了梯度消失问题&#xff0c;促进了特征重用&#xff…

记一次数据库连接 bug

整个的报错如下&#xff1a; com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up. at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Metho…

Docker:基于自制openjdk8镜像 or 官方openjdk8镜像,制作tomcat镜像

一、制作openjdk8基础镜像【基于自定义alpine-3.18.0:v1 】 docker pull maven:3.5.0-jdk-8-alpine 78.56 MB https://hub.docker.com/_/maven/tagspage8&namealpine openjdk二进制下载地址 https://blog.csdn.net/fenglllle/article/details/124786948 https://adoptope…

vue 入门到实战 一

目录 第1章 初始Vue.js 1.1 网站交互方式 1.2 MVVM模式 1.3 Vue.js是什么 1.4 安装Vue.js 1.5 第一个Vue.js程序 1.6 插值与表达式 第1章 初始Vue.js 1.1 网站交互方式 Web网站有单页应用程序&#xff08;SPA&#xff0c;Single-page Application&#xff09;和多页应用…

【2024 年度总结】从小白慢慢成长

【2024 年度总结】从小白慢慢成长 1. 加入 CSDN 的契机2. 学习过程2.1 万事开头难2.2 下定决心开始学习2.3 融入技术圈2.4 完成万粉的目标 3. 经验分享3.1 工具的选择3.2 如何提升文章质量3.3 学会善用 AI 工具 4. 保持初心&#xff0c;继续前行 1. 加入 CSDN 的契机 首次接触…

Apache SeaTunnel 2.3.9 正式发布:多项新特性与优化全面提升数据集成能力

近日&#xff0c;Apache SeaTunnel 社区正式发布了最新版本 2.3.9。本次更新新增了Helm 集群部署、Transform 支持多表、Zeta新API、表结构转换、任务提交队列、分库分表合并、列转多行 等多个功能更新&#xff01; 作为一款开源、分布式的数据集成平台&#xff0c;本次版本通过…