❤️创意网页:生日快乐!穿越奇妙时光的温暖庆祝(HTML+CSS+JS)简单好用

news2024/11/15 13:48:57

博主:命运之光 

🌸专栏:Python星辰秘典

🐳专栏:web开发(简单好用又好看)

❤️专栏:Java经典程序设计

☀️博主的其他文章:点击进入博主的主页

前言:欢迎踏入我的Web项目专栏,一段神奇而令人陶醉的数字世界!

🌌在这里,我将带您穿越时空,揭开属于Web的奥秘。通过HTML、CSS和JavaScript的魔力,我创造了一系列令人惊叹的Web项目,它们仿佛是从梦境中涌现而出。

🌌在这个专栏中,您将遇到华丽的界面,如流星划过夜空般迷人;您将感受到动态的交互,如魔法般让您沉浸其中;您将探索响应式设计的玄妙,让您的屏幕变幻出不同的绚丽景象。

🌌无论您是一个探险家还是一位嗜血的代码巫师,这个专栏将成为您的魔法书。我将分享每个项目的秘密,解开编码的谜题,让您也能够拥有制作奇迹的力量。

🌌准备好了吗?拿起您的键盘,跟随我的指引,一起进入这个神秘而充满惊喜的数字王国。在这里,您将找到灵感的源泉,为自己创造出一段奇幻的Web之旅!

目录

简介

视频展示

图片展示(1)

图片展示(2)

图片展示(3)

页面亮点

项目源代码

代码的使用方法(超简单什么都不用下载)

🍓1.打开记事本 

🍓2.将上面的源代码复制粘贴到记事本里面将文件另存为HTML文件点击保存即可

🍓3.打开html文件(大功告成(●'◡'●))

结语


简介

在这个名为《生日快乐:穿越奇妙时光的温暖庆祝》的博客中,我将以独特的创意和令人难忘的效果,为你带来一场难以忘怀的生日庆祝活动。通过令人陶醉的视觉效果、动人的文字和倒计时提醒,希望为你的生日庆祝增添温暖、喜悦和难忘的回忆。

视频展示

生日快乐!

图片展示(1)

图片展示(2)

图片展示(3)


页面亮点

  • 奇妙时光旅程: 通过精心设计的下雪背景效果,我们将带你穿越时光,踏入一个充满奇幻和浪漫的世界。雪花的飘舞和背景的变化将为你的生日庆祝带来特别的氛围。

  • 生日祝福幻灯片秀: 博客中的幻灯片将呈现一系列精选的生日祝福图片,自动切换展示。通过欢快的音乐和温暖的图像,将向你传达最真挚的祝福。

  • 倒计时提醒与特殊时刻: 在页面顶部,一个倒计时器将不断提醒你离特殊时刻的到来还有多长时间。每一秒都是更接近庆祝的机会,让你的生日变得更加期待和特别。

  • 温馨生日祝福语: 页面中心的容器将展示特别准备的生日祝福语。用真挚的文字表达对你生日的祝福,希望你度过一个充满欢笑、幸福和美好回忆的特殊时刻。


项目源代码

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <link href="https://fonts.googleapis.com/css2?family=Your+Chosen+Font&display=swap" rel="stylesheet">
    <title>下雪背景效果和生日祝福</title>
    <style>
        body {
            overflow: hidden;
            margin: 0;
            padding: 0;
            text-align: center;
            background-color: #f2f2f2;
            font-family: 'Your Chosen Font', cursive;
            animation: backgroundAnimation 5s infinite;
        }

        #snow-container {
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            pointer-events: none;
            z-index: -1;
        }

        .snowflake {
            position: absolute;
            width: 10px;
            height: 10px;
            background-color: #fff;
            border-radius: 50%;
            opacity: 0.8;
            pointer-events: none;
            animation: snowfall linear infinite;
        }

        @keyframes snowfall {
            0% {
                transform: translateY(-100%);
            }
            100% {
                transform: translateY(100vh);
            }
        }

        #slideshow {
            width: 500px;
            height: 300px;
            position: relative;
            overflow: hidden;
            margin: 0 auto; /* 添加这行代码使其居中 */
        }

        #slideshow img {
            max-width: 100%;
            max-height: 100%;
            position: absolute;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%); /* 居中对齐 */
            opacity: 0;
            transition: opacity 1s ease-in-out;
        }

        #slideshow img.active {
            opacity: 1;
        }

        @keyframes backgroundAnimation {
            0% {
                background-color: #ffafbd;
            }
            50% {
                background-color: #ffc3a0;
            }
            100% {
                background-color: #ffa0bd;
            }
        }

        .container {
            max-width: 600px;
            margin: 0 auto;
            text-align: center;
            padding: 40px;
            background-color: #fff;
            border-radius: 5px;
            box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
            margin-bottom: 20px; /* 调整生日快乐标题和下面文字的间距 */
        }

        h1 {
            color: #ff69b4;
            font-size: 28px;
            margin-bottom: 10px; /* 调整标题和图片之间的间距 */
        }

        img {
            width: 200px;
            border-radius: 50%;
            margin: 1px 0px; /* 调整图片和下方文字之间的间距 */
        }

        p {
            color: #333;
            line-height: 1.5;
            margin-bottom: 20px;
        }

        .fade-in {
            opacity: 0;
            animation: fadeInAnimation 2s forwards;
        }

        @keyframes fadeInAnimation {
            0% {
                opacity: 0;
            }
            100% {
                opacity: 1;
            }
        }

        #countdown {
            display: flex;
            justify-content: center;
            margin-top: 20px;
        }

        .time {
            font-size: 36px;
            margin: 0 10px;
            padding: 10px;
            border: 1px solid #ccc;
            border-radius: 5px;
            animation-fill-mode: forwards;
        }

        #days {
            background-color: #f5f5f5;
        }

        #hours {
            background-color: #e0e0e0;
        }

        #minutes {
            background-color: #d5d5d5;
        }

        #seconds {
            background-color: #cccccc;
        }

        .time span {
            display: inline-block;
            font-size: 14px;
            margin-top: 5px;
            color: #333;
        }

        .ribbon {
            position: absolute;
            width: 100%;
            height: 100%;
            pointer-events: none;
            overflow: hidden;
        }

        .ribbon:before,
        .ribbon:after {
            content: "";
            position: absolute;
            display: block;
            width: 200px;
            height: 200px;
            background: linear-gradient(to bottom, #ff69b4, #ffc3a0, #ffafbd);
            border-radius: 50%;
            opacity: 0.6;
            animation: ribbonAnimation 2s infinite;
        }

        .ribbon:before {
            top: -100px;
            left: -50px;
        }

        .ribbon:after {
            top: -100px;
            right: -50px;
        }

        /* 定义彩带动画 */
        @keyframes ribbonAnimation {
            0% {
                transform: translate(0, 0) rotate(0);
            }
            100% {
                transform: translate(-800px, -800px) rotate(360deg);
            }
        }
    </style>
</head>
<body>
<div id="snow-container"></div>

<div class="fade-in">
    <h1>Welcome to the world of Fate's Light</h1>
    <p>After reading, remember to like, collect, and review. Hahaha.</p>
</div>

<div class="container">
    <h1>生日快乐!</h1>
    <div id="slideshow">
        <img src="1.jpg" alt="Image 1" class="active">
        <img src="2.png" alt="Image 2">
        <img src="3.png" alt="Image 3">
    </div>
    <p>亲爱的命运之光,</p>
    <p>祝你生日快乐!愿你的生日充满欢乐、幸福和美好的回忆。</p>
    <p>在这特殊的日子里,我希望你能享受每一刻,并和亲朋好友一起度过一个美好的时光。</p>
    <p>再次祝你生日快乐!</p>
</div>

<div id="countdown">
    <div class="time" id="days"></div>
    <div class="time" id="hours"></div>
    <div class="time" id="minutes"></div>
    <div class="time" id="seconds"></div>
</div>

<script>
    // 设置生日日期(月从0开始计数)
    const birthday = new Date("2023-07-11");

    function updateCountdown() {
        const now = new Date();
        const difference = birthday - now;

        // 计算剩余的天数、小时数、分钟数和秒数
        const days = Math.floor(difference / (1000 * 60 * 60 * 24));
        const hours = Math.floor((difference / (1000 * 60 * 60)) % 24);
        const minutes = Math.floor((difference / 1000 / 60) % 60);
        const seconds = Math.floor((difference / 1000) % 60);

        // 更新倒计时显示
        document.getElementById("days").textContent = days.toString().padStart(2, "0") + "天";
        document.getElementById("hours").textContent = hours.toString().padStart(2, "0") + "小时";
        document.getElementById("minutes").textContent = minutes.toString().padStart(2, "0") + "分钟";
        document.getElementById("seconds").textContent = seconds.toString().padStart(2, "0") + "秒";
    }

    // 每秒更新一次倒计时
    setInterval(updateCountdown, 1000);
</script>

<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
    $(document).ready(function() {
        var currentIndex = 0;
        var slides = $('#slideshow img');
        var slideCount = slides.length;

        function showSlide(index) {
            slides.removeClass('active');
            slides.eq(index).addClass('active');
        }

        function nextSlide() {
            currentIndex = (currentIndex + 1) % slideCount;
            showSlide(currentIndex);
        }

        // 自动播放幻灯片
        setInterval(nextSlide, 3000);

        // 初始化显示第一张幻灯片
        showSlide(currentIndex);
    });
</script>
<script>
    function createSnowflake() {
        const snowflake = document.createElement('div');
        snowflake.classList.add('snowflake');
        snowflake.style.left = Math.random() * window.innerWidth + 'px';
        snowflake.style.animationDuration = Math.random() * 5 + 5 + 's';
        snowflake.style.opacity = Math.random();
        snowflake.style.fontSize = Math.random() * 10 + 10 + 'px';

        const randomColor = getRandomColor();
        snowflake.style.backgroundColor = randomColor;

        snowflake.innerHTML = '生日快乐❤️'; // You can customize the snowflake symbol here

        return snowflake;
    }

    function getRandomColor() {
        const letters = '0123456789ABCDEF';
        let color = '#';
        for (let i = 0; i < 6; i++) {
            color += letters[Math.floor(Math.random() * 16)];
        }
        return color;
    }

    function snowfall() {
        const snowContainer = document.getElementById('snow-container');
        const numSnowflakes = 50; // Adjust the number of snowflakes here

        for (let i = 0; i < numSnowflakes; i++) {
            const snowflake = createSnowflake();
            snowContainer.appendChild(snowflake);
        }
    }

    snowfall();
</script>
</body>
</html>

代码的使用方法(超简单什么都不用下载)

🍓1.打开记事本 

🍓2.将上面的源代码复制粘贴到记事本里面将文件另存为HTML文件点击保存即可

🍓3.打开html文件(大功告成(●'◡'●))


结语

感谢你阅读我的生日庆祝博客。愿你的生日充满欢笑和美好回忆。祝你生日快乐!🎉🎉


本章的内容就到这里了,觉得对你有帮助的话就支持一下博主把~

🌌点击下方个人名片,交流会更方便哦~
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux】使用git 连接到远程gitee仓库

一.创建gitee仓库 登陆到自己的gitee&#xff0c;点击新建仓库 输入仓库名称&#xff0c;注意gitee初次创建仓库时只能设置成私有的 创建后的页面是这样的&#xff0c;复制HTTPS 二.git三板斧 1.安装git 打开xshell&#xff0c;输入命令&#xff1a; yum install git 可以输入…

SpringBoot中集成Flyway实现数据库sql版本管理入门以及遇到的那些坑

场景 Git/ SVN 是代码界的版本控制工具&#xff0c;那么&#xff0c;Flyway 就是一款数据库界的版本控制工具&#xff0c; 它可以记录数据库的变化记录。可能很多公司都是通过人工去维护、同步数据库脚本&#xff0c; 但经常会遇到疏忽而遗漏的情况&#xff0c;举个简单的例…

glob找不到文件而os.listdir可以

前几天遇到了一个问题&#xff0c;就是glob找不到文件而os.listdir可以 /mnt/data/datasets/abc[123]&#xff1a; ├── img_0001.jpg ├──img_0002.jpg代码 import os import glob path /mnt/data/datasets/abc[123] os.listdir(path) glob.glob(os.path.join(path, *.…

ES6: Proxy概念及用法

Proxy如其名&#xff0c; 它的作用是在对象和和对象的属性值之间设置一个代理&#xff0c;获取该对象的值或者设置该对象的值&#xff0c; 以及实例化等等多种操作&#xff0c; 都会被拦截住&#xff0c; 经过这一层我们可以统一处理&#xff0c;我们可以认为它就是“代理器” …

使用 @Autowired 为什么会被 IDEA 警告,应该怎么修改最佳?

# 问题原因 关于这个问题&#xff0c;其实答案相对统一&#xff0c;实际上用大白话说起来也容易理解。 1.初始化问题 先看一下Java初始化类的顺序&#xff1a;父类的静态字段 > 父类静态代码块 > 子类静态字段 > 子类静态代码块 > 父类成员变量 > 父类构造代码块…

前端学习——Web API (Day3)

事件流 事件流和两个阶段说明 事件捕获 事件冒泡 阻止冒泡 解绑事件 事件委托 案例 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" …

day1-搜索插入位置

搜索插入位置 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target 5 输出: …

flutter开发实战-底部bottomNavigationBar➕PageView

flutter开发实战-底部bottomNavigationBar tabbar在app中非常常见&#xff0c;底部BottomNavigationBar属性 一、BottomNavigationBar属性 BottomNavigationBar组件的常用属性&#xff1a; type&#xff1a;tabbar样式&#xff0c;默认为白色不显示&#xff1b;fixedColor:t…

AR眼镜:可视化声音

推荐&#xff1a;将 NSDT场景编辑器加入你的3D工具链 3D工具集&#xff1a; NSDT简石数字孪生 音频可以包括各种各样的声音&#xff0c;从人类语音到非语音声音&#xff0c;如狗吠和警笛声。在为有听力障碍的人设计可访问的应用程序时&#xff0c;应用程序应该能够识别声音并理…

【二分查找】面试题 08.03. 魔术索引

面试题 08.03. 魔术索引 解题思路 改写递归二分查找的思路首先查找mid的值是不是mid 如果是 由于有多个解&#xff0c;那么递归搜索左半边的空间然后如果没找到&#xff0c;首先搜索左半边的空间&#xff0c;然后搜索右半边的空间 class Solution {public int res -1;privat…

mybatis-plus案例报错

报错信息: Error creating bean with name ‘dataSource’ defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Generic.class]: Bean instantiation via factory method failed; nested exception is org.springframework…

ELK 企业级日志分析系统(一)

ELK 一、ELK理论日志管理方案为什么要使用ELK完整日志系统基本特征ELK 简介ELK 的工作流程 二、ELK实验ELK Elasticsearch 集群部署ELK Logstash 部署&#xff08;在 apche节点上操作&#xff09;ELK Kiabana 部署&#xff08;在 Node1 节点上操作) 一、ELK理论 日志管理方案 …

django对数据库中的表进行重新生成

删除数据库中的表删除项目中migrations包下的初始化文件 进入到manage.py目录下执行命令python manage.py makemigrations执行完上述命令之后&#xff0c;再执行命令python manage.py migrate就可以啦 关于详细的数据表生成见博文&#xff1a;https://blog.csdn.net/David_hou…

IO多路复用之select,poll,epoll

所以&#xff0c;我们调用 select 会把所有要管理的 socket 的 fd (文件描述符&#xff0c;Linux下皆为文件&#xff0c;简单理解就是通过 fd 能找到这个 socket)传到内核中。 此时&#xff0c;要遍历所有 socket&#xff0c;看看是否有感兴趣的事件发生。如果没有一个 socket…

Linux常见维护报错,修复MBR引导/修复grub2菜单/内核文件丢失

目录 一&#xff0c;修复MBR 1.模拟MBR损坏 2.重启查看系统 3.借助当前系统的光盘来进行修复 4.进入修复模式 进行修复 5.恢复正常 二&#xff0c;修复grub2菜单 1.出现情况 2.进入修复模式 3.进行修复grub2菜单 4.退出重启即可 三&#xff0c;内核文件丢失 1.进入安全模式 2.挂…

进销存软件哪个好?怎么选?(附模板)

已经把挑选进销存软件的几个注意点归纳的很到位了&#xff1a; 软件价格收费模式&#xff08;按年付费还是一次性买断&#xff09;功能要贴合本企业使用注重数据的准确性与安全性操作一定要简单要有良好的售后服务支持 在这几点的基础上&#xff0c;我简单说一下&#xff1a;…

运维开发面试题第四期(最后有数据库的题)

linux 如何查看当前linux系统的版本号&#xff08;uname -a 内核 cat /proc/version版本&#xff09;、系统状态《如CPU使用&#xff08;top - bn&#xff09;&#xff0c;内存使用情况&#xff08;vmstat,free-m&#xff09;》、如何查看监控磁盘 io负载&#xff08;iostat/ls…

Docker部署Mysql数据库详解

目录 1. Docker部署Mysql 1.1 Mysql容器 1.1.1 创建Mysql容器 1.1.2 进入Mysql容器并登录Mysql 1.1.3 持久化数据 1.2 远程登录Mysql 1.2.1 修改root加密方式 1.2.2 在容器启动时配置加密方式为mysql_native_password 1.3 Mysql编码 1.3.1 Mysql编码问题 1.3.2 Mysql编码…

虚函数是什么?虚函数是怎么实现的?什么时候用虚函数?

发现自己的笔记记录得四处都是&#xff0c;这些天统一整理汇总一下 1. 虚函数和多态的关系&#xff1a; 虚函数 往往 用于 实现 C的多态性 2. 什么是多态&#xff1a; &#xff08;1&#xff09;Wiki定义 &#xff1a; 指计算机程序运行时&#xff0c;相同的消息 发送给 多…

Acwing 848.有向图的拓扑序列

Acwing 848.有向图的拓扑序列 链接&#xff1a;848. 有向图的拓扑序列 - AcWing题库 /* 啥是拓扑排序? 首先要满足有向无环图的条件 一个有向图&#xff0c;如果图中有入度为 0 的点&#xff0c;就把这个点删掉&#xff0c;同时也删掉这个点所连的边。 一直进行上面出处理&am…