【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,给播放器一个宽度数值,播放器的宽度不能超过倒计时文字的宽度,并且为播放器增加播放按钮,增加上一首下一首按钮,

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

目录
相关文章
|
5月前
|
编解码 前端开发 JavaScript
js react antd 实现页面低分变率和高分变率下字体大小自适用,主要是配置antd
在React中结合Ant Design与媒体查询,通过less变量和响应式断点动态调整`@font-size-base`,实现多分辨率下字体自适应,提升跨设备体验。
260 2
|
5月前
|
JavaScript 前端开发 安全
【逆向】Python 调用 JS 代码实战:使用 pyexecjs 与 Node.js 无缝衔接
本文介绍了如何使用 Python 的轻量级库 `pyexecjs` 调用 JavaScript 代码,并结合 Node.js 实现完整的执行流程。内容涵盖环境搭建、基本使用、常见问题解决方案及爬虫逆向分析中的实战技巧,帮助开发者在 Python 中高效处理 JS 逻辑。
|
7月前
|
JavaScript 前端开发 算法
流量分发代码实战|学会用JS控制用户访问路径
流量分发工具(Traffic Distributor),又称跳转器或负载均衡器,可通过JavaScript按预设规则将用户随机引导至不同网站,适用于SEO优化、广告投放、A/B测试等场景。本文分享一段不到百行的JS代码,实现智能、隐蔽的流量控制,并附完整示例与算法解析。
205 1
|
8月前
|
JavaScript 前端开发
怀孕b超单子在线制作,p图一键生成怀孕,JS代码装逼娱乐
模拟B超单的视觉效果,包含随机生成的胎儿图像、医疗文本信息和医院标志。请注意这仅用于前端开发学习
|
10月前
|
存储 JavaScript 前端开发
在NodeJS中使用npm包进行JS代码的混淆加密
总的来说,使用“javascript-obfuscator”包可以帮助我们在Node.js中轻松地混淆JavaScript代码。通过合理的配置,我们可以使混淆后的代码更难以理解,从而提高代码的保密性。
1020 9
|
10月前
简约404错误页面HTML源码
简约404错误页面HTML源码
385 12
|
8月前
|
JavaScript
JS代码的一些常用优化写法
JS代码的一些常用优化写法
150 0
|
11月前
|
前端开发 JavaScript
【Javascript系列】Terser除了压缩代码之外,还有优化代码的功能
Terser 是一款广泛应用于前端开发的 JavaScript 解析器和压缩工具,常被视为 Uglify-es 的替代品。它不仅能高效压缩代码体积,还能优化代码逻辑,提升可靠性。例如,在调试中发现,Terser 压缩后的代码对删除功能确认框逻辑进行了优化。常用参数包括 `compress`(启用压缩)、`mangle`(变量名混淆)和 `output`(输出配置)。更多高级用法可参考官方文档。
798 11
|
11月前
|
JavaScript 前端开发 API
JavaScript中通过array.map()实现数据转换、创建派生数组、异步数据流处理、复杂API请求、DOM操作、搜索和过滤等,array.map()的使用详解(附实际应用代码)
array.map()可以用来数据转换、创建派生数组、应用函数、链式调用、异步数据流处理、复杂API请求梳理、提供DOM操作、用来搜索和过滤等,比for好用太多了,主要是写法简单,并且非常直观,并且能提升代码的可读性,也就提升了Long Term代码的可维护性。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
11月前
|
JavaScript 前端开发 API
纯js轻量级页面顶部Loading进度条插件
纯js轻量级页面顶部Loading进度条插件