【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子

简介: 【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子

【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子

开发背景

由于看到C站有个任务是上传新年主题相关的代码可以+6分,为了这6分必须拼一下子,要知道C站挣6分是有多么难的,优雅草央千澈是要冲刺全国排名的人那必须去争取一下,ok我们废话不多说开始实战吧,本次开发技术栈采用html5+div+CSS+JavaScript,用html给写一个新年放烟花并且领取一个随机新年礼物的小代码供大家送给自己心上人礼物-为了完成C站的新年主题任务-优雅草央千澈-做一条关于新年的代码分享给你们,章节共计5篇。

本文还有个事情声明下,优雅草央千澈还是改名为优雅草卓伊凡,本身自己的笔名是卓伊凡,但是酷爱霹雳侠影中的角色央千澈,因此之前一直以央千澈为名字,但是随着目前人气的升高,不免这样会影响到偶像这个名字重名,让很多道友不小心搜到我,这样不太好,因此后续所有的文章均改名为卓伊凡。

章节

【01】完成新年倒计时页面-蛇年新年快乐倒计时

效果实时演示地址

https://happynewyear.youyacao.com/

gitee开源地址

https://gitee.com/youyacao/happynewyear

实战开发

养成好习惯,先建库-clone-本地

构思:

本代码主要想实现2个内容就可以了,我想了下,实现第一个是新年除夕夜倒计时,倒计时完成后,跳出来新年快乐(对应蛇年新年快乐的图),再然后点击新年快乐,领取我的蛇年专属礼物,这个礼物可以有好几个图标,然后做几个选项,用一个特效效果来表示这个礼物的生产过程,最终在弹出您的新年礼物,大概就是这样的构思。

功能点:

1,除夕夜新年倒计时,(大家可以自行设置)
2,倒计时到点后放烟花。
3,提示领取新年礼物。
4,一个随机的新年礼物伴随着动画出来。
5,为了防止作弊需要做个反作弊机制。

实战开发

进入vscode 建立第一个index.html

做一个倒计时先:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>2025年蛇年-新年倒计时-优雅草央千澈</title>
    <style>
        #countdown {
            font-size: 24px;
            font-weight: bold;
            text-align: center;
            margin-top: 50px;
        }
    </style>
</head>
<body>
    <div id="countdown"></div>
    <script>
        // 设置目标日期为1月28日
        const targetDate = new Date(new Date().getFullYear(), 0, 28).getTime();
        // 更新倒计时的函数
        function updateCountdown() {
            const now = new Date().getTime();
            const distance = targetDate - now;
            // 计算天、小时、分钟和秒
            const days = Math.floor(distance / (1000 * 60 * 60 * 24));
            const hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
            const minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
            const seconds = Math.floor((distance % (1000 * 60)) / 1000);
            // 显示倒计时
            document.getElementById("countdown").innerHTML = 
                days + "天 " + hours + "小时 " + minutes + "分钟 " + seconds + "秒 ";
            // 如果倒计时结束,显示提示信息
            if (distance < 0) {
                clearInterval(countdownInterval);
                document.getElementById("countdown").innerHTML = "新年快乐!";
            }
        }
        // 每秒更新一次倒计时
        const countdownInterval = setInterval(updateCountdown, 1000);
    </script>
</body>
</html>

我们完成了新年倒计时,有点空白,优雅草央千澈决定加个背景图,AI生成一张图,

选择4:3的尺寸,暂时用可灵AI来生成一下图,

妈呀这不是太诡异了吗,重新组织了下措辞,然后再次生成,

满意,取这第四张,现在我们将这张图做成背景,养成习惯建立资源文件夹 assets\img\ ,加入背景

书写代码:

body {
            background-image: url('assets/img/bg.png');
            background-size: cover; /* 使背景图片覆盖整个页面 */
            background-position: center; /* 将背景图片居中 */
            background-repeat: no-repeat; /* 防止背景图片重复 */
            margin: 0; /* 去除默认的body边距 */
            height: 100vh; /* 使body高度占满整个视口 */
        }

不过我发现倒计时看不见了,

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>2025年蛇年-新年倒计时-优雅草央千澈</title>
    <style>
        body {
            background-image: url('assets/img/bg.png');
            background-size: cover; /* 使背景图片覆盖整个页面 */
            background-position: center; /* 将背景图片居中 */
            background-repeat: no-repeat; /* 防止背景图片重复 */
            margin: 0; /* 去除默认的body边距 */
            height: 100vh; /* 使body高度占满整个视口 */
            display: flex; /* 使用flex布局 */
            justify-content: center; /* 水平居中 */
            align-items: center; /* 垂直居中 */
            font-family: 'Arial', sans-serif; /* 设置字体 */
        }
        #countdown {
            font-size: 48px; /* 增大字体 */
            font-weight: bold;
            text-align: center;
            color: #ffcc00; /* 选择一个显眼的颜色,类似时钟 */
            text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.5); /* 添加阴影效果 */
            background-color: rgba(0, 0, 0, 0.5); /* 添加背景颜色,使文字更突出 */
            padding: 20px; /* 添加内边距 */
            border-radius: 10px; /* 添加圆角 */
        }
    </style>
</head>
<body>
    <div id="countdown"></div>
    <script>
        // 设置目标日期为1月28日
        const targetDate = new Date(new Date().getFullYear(), 0, 28).getTime();
        // 更新倒计时的函数
        function updateCountdown() {
            const now = new Date().getTime();
            const distance = targetDate - now;
            // 计算天、小时、分钟和秒
            const days = Math.floor(distance / (1000 * 60 * 60 * 24));
            const hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
            const minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
            const seconds = Math.floor((distance % (1000 * 60)) / 1000);
            // 显示倒计时
            document.getElementById("countdown").innerHTML = 
                days + "天 " + hours + "小时 " + minutes + "分钟 " + seconds + "秒 ";
            // 如果倒计时结束,显示提示信息
            if (distance < 0) {
                clearInterval(countdownInterval);
                document.getElementById("countdown").innerHTML = "新年快乐!";
            }
        }
        // 每秒更新一次倒计时
        const countdownInterval = setInterval(updateCountdown, 1000);
    </script>
</body>
</html>

这样看起来差不多了,文字我再修改下为2025年蛇年除夕夜倒计时这个主题文字加倒计时头部。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>2025年蛇年-新年倒计时-优雅草央千澈</title>
    <style>
        body {
            background-image: url('assets/img/bg.png');
            background-size: cover; /* 使背景图片覆盖整个页面 */
            background-position: center; /* 将背景图片居中 */
            background-repeat: no-repeat; /* 防止背景图片重复 */
            margin: 0; /* 去除默认的body边距 */
            height: 100vh; /* 使body高度占满整个视口 */
            display: flex; /* 使用flex布局 */
            justify-content: center; /* 水平居中 */
            align-items: center; /* 垂直居中 */
            font-family: 'Arial', sans-serif; /* 设置字体 */
        }
        #countdown-container {
            text-align: center;
        }
        #countdown-title {
            font-size: 32px; /* 设置标题字体大小 */
            font-weight: bold;
            color: #ffcc00; /* 选择一个显眼的颜色,类似时钟 */
            text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.5); /* 添加阴影效果 */
            margin-bottom: 20px; /* 添加底部外边距 */
        }
        #countdown {
            font-size: 48px; /* 增大字体 */
            font-weight: bold;
            text-align: center;
            color: #ffcc00; /* 选择一个显眼的颜色,类似时钟 */
            text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.5); /* 添加阴影效果 */
            background-color: rgba(0, 0, 0, 0.5); /* 添加背景颜色,使文字更突出 */
            padding: 20px; /* 添加内边距 */
            border-radius: 10px; /* 添加圆角 */
        }
    </style>
</head>
<body>
    <div id="countdown-container">
        <div id="countdown-title">2025年蛇年除夕夜倒计时</div>
        <div id="countdown"></div>
    </div>
    <script>
        // 设置目标日期为1月28日
        const targetDate = new Date(new Date().getFullYear(), 0, 28).getTime();
        // 更新倒计时的函数
        function updateCountdown() {
            const now = new Date().getTime();
            const distance = targetDate - now;
            // 计算天、小时、分钟和秒
            const days = Math.floor(distance / (1000 * 60 * 60 * 24));
            const hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
            const minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
            const seconds = Math.floor((distance % (1000 * 60)) / 1000);
            // 显示倒计时
            document.getElementById("countdown").innerHTML = 
                days + "天 " + hours + "小时 " + minutes + "分钟 " + seconds + "秒 ";
            // 如果倒计时结束,显示提示信息
            if (distance < 0) {
                clearInterval(countdownInterval);
                document.getElementById("countdown").innerHTML = "新年快乐!";
            }
        }
        // 每秒更新一次倒计时
        const countdownInterval = setInterval(updateCountdown, 1000);
    </script>
</body>
</html>

稍微有点单调,我们在左下角和右下角加入小烟花吧,小烟花动态效果,这样看上去是活的。

然后我们再加入一个欢快的新年气氛音乐,至于音乐吗,因为避免版权问题,那就刚好了,卓伊凡是一位音乐人,避免版权问题,直接做一首(一位强大的程序员再加上AI魔法加上自己的乐感对音乐的理解,创作一首普普通通的新年歌还不是信手拈来),

新建sounds文件夹,加入happy new year.mp3 文件,再加入播放器代码,并且自动播放音乐。

@keyframes explode {
            0% {
                transform: scale(1);
                opacity: 1;
            }
            50% {
                transform: scale(2);
                opacity: 0.5;
            }
            100% {
                transform: scale(3);
                opacity: 0;
            }
        }
        #audio-player {
            position: absolute;
            bottom: 20px;
            left: 50%;
            transform: translateX(-50%);
            background-color: rgba(0, 0, 0, 0.5); /* 半透明背景 */
            padding: 10px;
            border-radius: 10px;
            z-index: 2; /* 确保音乐播放器在烟花之上 */
        }
        #audio-player audio {
            width: 100%;
        }
          <div id="audio-player">
        <audio id="background-music" autoplay loop>
            <source src="assets/sounds/happy new year.mp3" type="audio/mpeg">
            您的浏览器不支持 audio 元素。
        </audio>
    </div>

半透明的播放器代码,html中使用 audio元素即可,非常简单,查看效果,非常棒!

发现音乐没有自动播放

自动播放音频在现代浏览器中受到严格的限制,以提升用户体验并减少不必要的干扰。通常,浏览器会阻止自动播放带有声音的音频,除非用户与页面进行了交互(例如点击页面)。为了确保音乐能够自动播放,可以采取以下几种方法:

  1. 静音自动播放:将音频设置为静音状态,这样可以绕过浏览器的自动播放限制。
  2. 用户交互触发:在用户与页面进行交互(如点击按钮)后播放音频。
  3. 使用 muted 属性:在 <audio> 标签中添加 muted 属性,允许音频静音自动播放。

因此改造下:
发现加了muted 还是不得行,报错
播放音乐时出错: NotAllowedError: play() failed because the user didn’t interact with the document first. {code: 0, name: ‘NotAllowedError’, message: “play() failed because the user didn’t interact with the document first.”}

既然如此我们就加上播放按钮吧,于是我们继续改造

我们把播放器放在新年倒计时的下方,并且播放器的高度限制为120px,给播放器一个宽度数值,播放器的宽度不能超过倒计时文字的宽度,并且为播放器增加播放按钮,增加上一首下一首按钮,

满意 ,并且可以播放音乐,本篇完成,喜欢就请关注点赞+收藏,优雅草卓伊凡-只肝干货

目录
相关文章
|
1月前
|
前端开发 算法 Java
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(二):CSS伪类:UI伪类、结构化伪类;通过伪类获得子元素的第n个元素;创建一个伪元素展示在页面中;获得最后一个元素;处理聚焦元素的样式
伪类:伪类这个叫法源自于它们跟类相似,但实际上并没有类会附加到标记中的标签上。 伪类分为两种(以及新增的伪类选择器): UI伪类:会在HTML元素处于某种状态时(例如:鼠标指针位于连接上),为该元素应用CSS样式。 :hover 结构化伪类:会在标记中存在某种结构上的关系时 例如: 某元素是一组元素中的第一个或最后一个,为该元素应用CSS样式。 :not和:target(CSS3新增的两个特殊的伪类选择器)
153 1
|
2月前
|
JavaScript 前端开发 安全
【逆向】Python 调用 JS 代码实战:使用 pyexecjs 与 Node.js 无缝衔接
本文介绍了如何使用 Python 的轻量级库 `pyexecjs` 调用 JavaScript 代码,并结合 Node.js 实现完整的执行流程。内容涵盖环境搭建、基本使用、常见问题解决方案及爬虫逆向分析中的实战技巧,帮助开发者在 Python 中高效处理 JS 逻辑。
|
4月前
|
JavaScript 前端开发 算法
流量分发代码实战|学会用JS控制用户访问路径
流量分发工具(Traffic Distributor),又称跳转器或负载均衡器,可通过JavaScript按预设规则将用户随机引导至不同网站,适用于SEO优化、广告投放、A/B测试等场景。本文分享一段不到百行的JS代码,实现智能、隐蔽的流量控制,并附完整示例与算法解析。
144 1
|
5月前
|
JavaScript 前端开发
怀孕b超单子在线制作,p图一键生成怀孕,JS代码装逼娱乐
模拟B超单的视觉效果,包含随机生成的胎儿图像、医疗文本信息和医院标志。请注意这仅用于前端开发学习
|
5月前
|
JavaScript
JS代码的一些常用优化写法
JS代码的一些常用优化写法
108 0
|
7月前
|
存储 JavaScript 前端开发
在NodeJS中使用npm包进行JS代码的混淆加密
总的来说,使用“javascript-obfuscator”包可以帮助我们在Node.js中轻松地混淆JavaScript代码。通过合理的配置,我们可以使混淆后的代码更难以理解,从而提高代码的保密性。
686 9
|
Web App开发
MVC3中,在control里面三种Html代码输出形式
MVC3中,在control里面三种Html代码输出形式:ViewData["msg"] = " Title "; 1、页面显示效果: @Html.Raw() : 不直接输出html代码,常用场合(使用编辑器 保存文章图片等时)    Title    使用:@Html.
790 0
|
5月前
|
移动开发 前端开发 JavaScript
征信报告修改器,征信报告生成器,制作软件无痕修改软件【js+html+css】
本项目为信用评分模拟器教学工具,采用HTML5实现,仅供学习参考。核心功能通过JavaScript构建,包含虚拟数据生成、权重分配及信用因素分析(如还款记录、信用使用率等)。
|
5月前
|
存储 自然语言处理 前端开发
抖音快手小红书虚拟评论截图生成器,模拟对话制作工具,html+js+css
这是一款纯前端实现的多平台虚拟评论生成器,支持抖音、快手、小红书风格,适用于产品演示与UI设计。采用Vanilla JS与Flexbox布局,利用IndexedDB存储数据,CSS Variables切换主题。
|
5月前
|
前端开发 JavaScript
个人征信电子版无痕修改, 个人信用报告pdf修改,js+html+css即可实现【仅供学习用途】
本代码展示了一个信用知识学习系统的前端实现,包含评分计算、因素分析和建议生成功能。所有数据均为模拟生成