Merry Christmas HTML

news2024/12/26 12:05:22

   简单分享 Merry Christmas HTML 设计的核心代码


   HTML:


<body class="card">
<div class="dialog">
    <div class="dialog-in">
        <div class="dialog-msg">
            <div class="heading">You've got a post card!</div>
            <a class="play" onclick="openCard()">View</a>
        </div>
    </div>

</div>
    <div class="header">
    <div class="heading">Merry Christmas!</div>
    </div>
    <div class="deer">
        <img class="deer-body" src="img/deer-body.png" alt="">
        <img class="deer-left-hand" src="img/deer-left-hand.png" alt="">
        <img class="deer-gift3" src="img/deer-gift3.png" alt="">
        <img class="deer-gift2" src="img/deer-gift2.png" alt="">
        <img class="deer-gift1" src="img/deer-gift1.png" alt="">
        <img class="deer-scarf" src="img/deer-scarf.png" alt="">
        <img class="deer-right-hand" src="img/deer-right-hand.png" alt="" >
        <img class="deer-left-leg" src="img/deer-left-leg.png" alt="">
        <img class="deer-right-leg" src="img/deer-right-leg.png" alt="">
    </div>
    <div class="penguin">
        <div class="peng-left-hand">     
            <img class="peng-letter" src="img/peng-letter.png" alt="">
            <img class="peng-left-hand-pic" src="img/peng-left-hand.png" alt="">
        </div>
        <img class="peng-right-hand" src="img/peng-right-hand.png" alt="">
        <img class="peng-body" src="img/peng-body.png" alt="">
    </div>
    <div class="santa">
        <img class="santa-body" src="img/santa-body.png" alt="">
        <img class="santa-left-hand" src="img/santa-left-hand.png" alt="">
        <img class="santa-right-hand" src="img/santa-right-hand.png" alt="">
        <div class="santa-baloon">
            <img class="baloon" src="img/santa-baloon.png" alt="">
            <div class="santa-text"></div>
       </div> 
        <img class="santa-left-leg" src="img/santa-left-leg.png" alt="">
        <img class="santa-right-leg" src="img/santa-right-leg.png" alt="">
    </div>
    <div class="dwarf">
        <img class="dwarf-body" src="img/dwarf-body.png" alt="">
        <img class="dwarf-left-leg" src="img/dwarf-left-leg.png" alt="">
        <img class="dwarf-right-leg" src="img/dwarf-right-leg.png" alt="">
        <img class="dwarf-box" src="img/dwarf-box.png" alt="">
    </div>


    <audio src="mp3/music.mp3" class="music" autoplay loop></audio>
    <canvas id="canvas"></canvas>
 
<script src="js/fireworks.js"></script>

<script>
function openCard(){
    document.querySelector('.dialog').style.display = 'none';
    document.querySelector('.music').play();
    fireworks();
    document.querySelector('body').classList.add('active');
   
}
</script>

</body>


   CSS:


:root {
    --size: 200px;
    --size-md: 150px;
    --size-sm: 120px;
  }

*{
    box-sizing: border-box;
}

img{
    max-width: 100%;
}

body,html{
    height: 100%;
    overflow: hidden;
}
body{
    background-image: url('../img/bg.jpg');
    background-position: center center;
    background-size: cover;
    background-color: rgb(167, 232, 243);
    margin: 0;
    text-align: center;
    font-family: 'Playfair Display SC', serif;
}

.dialog{
 display: table;
position: absolute;
background-color: rgba(0,0,0,0.9);
left: 0;
top: 0;
width: 100%;
height: 100%;
z-index: 100;
}

.dialog-in{
display: table-cell;
vertical-align: middle;
}

.heading{
color:  rgb(245, 32, 103);
font-size: 50px;
margin: 50px 0;
}

.play{
    display: inline-block;
    text-decoration: none;
    padding: 10px 20px;
    background-color: rgb(245, 32, 103);
    border-radius: 30px;
    color: #fff;
    cursor: pointer;
}

.deer{
    position: absolute;
    width: var(--size);
    bottom: 30%;
    left: 50%;
    margin-left: 5%;
}
.active .deer{
    animation: deer-body 4s ease-in-out infinite;

}

@keyframes deer-body{
    0%{
        bottom: -40%;
    }
    50%{
        bottom: 40%;
        transform: rotate(-20deg);
    }
    100%{
        bottom: -40%;
    }
}

.deer-body{
    position: relative;
    z-index: 1;
}

.deer-left-hand{
    position: absolute;
    width: 30%;
    top: 59%;
    left: -15%;
    transform-origin: 100% 80%;
}
@keyframes deer-lh{
    0%{
        transform: rotate(-20deg);
    }
    30%{
        transform: rotate(-20deg);
    }
    50%{
        transform: rotate(10deg);
    }
    100%{
        transform: rotate(10deg);
    }
}


.active .deer-left-hand{
    animation: deer-lh 4s ease-in-out infinite; 
}

.deer-gift3{
    position: absolute;
    width: 50%;
    top: 25%;
    left: -31%;
}

.active .deer-gift3{
    animation: deer-gift3 4s ease-in-out infinite; 
}

@keyframes deer-gift3{
    0%{
        top: 35%;
    }
    30%{
        top: 35%;
    }
    50%{
        top: 15%;
    }
    60%{
        top: 20%;
    }
    100%{
        top: 20%;
    }
}

.peng-left-hand-pic{
    position: relative;
}
.peng-left-hand{
    position: absolute;
    width: 30%;
    top: 12%;
    left: 0;
    transform-origin: 100% 100%;
}

.active .peng-left-hand{
    animation: peng-lh 4s ease-in-out infinite;
}

@keyframes peng-lh{
    30%{
        transform: rotate(30deg);
    }
    35%{
        transform: rotate(-30deg);
    }
    40%{
        transform: rotate(30deg);
    }
    45%{
        transform: rotate(-30deg);
    }
    50%{
        transform: rotate(30deg);
    }
    55%{
        transform: rotate(-30deg);
    }
    60%{
        transform: rotate(30deg);
    }
}

.peng-letter{
    position: absolute;
    width: 100%;
    bottom: 70%;
    right: 10%;
}

.peng-right-hand{
    position: absolute;
    width: 30%;
    top: 62%;
    left: 82%;
}

.santa{
    position: absolute;
    width: var(--size);
    bottom: 30%;
    right: 50%;
    margin-right: 5%;
    transform-origin: 120% 0;
    transform: rotate(-10deg);
}

.active .santa{
    animation: santa-body 4s linear infinite, santa-body-swing 2s linear infinite;
}

@keyframes santa-body-swing{
    50%{
        transform: rotate(-30deg);
    }
}
@keyframes santa-body{
    25%{
        bottom: 20%;
    }
    50%{
        right: 60%;
        bottom: 25%;
    }
    75%{
        bottom: 30%;
        right: 55%;
        
    }
}



   JS:


function fireworks() {
    var canvas = document.querySelector('#canvas');
    canvas.width = window.innerWidth;
    canvas.height = window.innerHeight;
    var ctx = canvas.getContext('2d');
    // init
    ctx.fillStyle = 'transparent';
    // ctx.fillRect(0, 0, canvas.width, canvas.height);
    ctx.clearRect(0, 0, canvas.width, canvas.height);
    // objects
    var listFire = [];
    var listFirework = [];
    var fireNumber = 10;
    var center = {
    x: canvas.width / 2,
    y: canvas.height / 2
    };
    var range = window.innerWidth / 3;
    for (var i = 0; i < fireNumber; i++) {
    var fire = {
    x: Math.random() * range / 2 - range / 4 + center.x,
    y: Math.random() * range * 2 + canvas.height,
    size: Math.random() + 0.5,
    fill: '#fd1',
    vx: Math.random() - 0.5,
    vy: -(Math.random() + 4),
    ax: Math.random() * 0.02 - 0.01,
    far: Math.random() * range + (center.y - range)
    };
    fire.base = {
    x: fire.x,
    y: fire.y,
    vx: fire.vx
    };
    //
    listFire.push(fire);
    }
     
    function randColor() {
    var r = Math.floor(Math.random() * 256);
    var g = Math.floor(Math.random() * 256);
    var b = Math.floor(Math.random() * 256);
    var color = 'rgb($r, $g, $b)';
    color = color.replace('$r', r);
    color = color.replace('$g', g);
    color = color.replace('$b', b);
    return color;
    }
    (function loop() {
    requestAnimationFrame(loop);
    update();
    draw();
    })();
     
    function update() {
    for (var i = 0; i < listFire.length; i++) {
    var fire = listFire[i];
    //
    if (fire.y <= fire.far) {
    // case add firework
    var color = randColor();
    for (var i = 0; i < fireNumber * 5; i++) {
    var firework = {
    x: fire.x,
    y: fire.y,
    size: Math.random() + 1.5,
    fill: color,
    vx: Math.random() * 5 - 2.5,
    vy: Math.random() * -5 + 1.5,
    ay: 0.05,
    alpha: 1,
    life: Math.round(Math.random() * range / 2) + range / 2
    };
    firework.base = {
    life: firework.life,
    size: firework.size
    };
    listFirework.push(firework);
    }
    // reset
    fire.y = fire.base.y;
    fire.x = fire.base.x;
    fire.vx = fire.base.vx;
    fire.ax = Math.random() * 0.02 - 0.01;
    }
    //
    fire.x += fire.vx;
    fire.y += fire.vy;
    fire.vx += fire.ax;
    }
    for (var i = listFirework.length - 1; i >= 0; i--) {
    var firework = listFirework[i];
    if (firework) {
    firework.x += firework.vx;
    firework.y += firework.vy;
    firework.vy += firework.ay;
    firework.alpha = firework.life / firework.base.life;
    firework.size = firework.alpha * firework.base.size;
    firework.alpha = firework.alpha > 0.6 ? 1 : firework.alpha;
    //
    firework.life--;
    if (firework.life <= 0) {
    listFirework.splice(i, 1);
    }
    }
    }
    }
     
    function draw() {
    // clear
    ctx.globalCompositeOperation = 'source-over';
    ctx.globalAlpha = 0.18;
    ctx.fillStyle = 'transparent';
    // ctx.fillRect(0, 0, canvas.width, canvas.height);
    ctx.clearRect(0, 0, canvas.width, canvas.height);
    // re-draw
    ctx.globalCompositeOperation = 'screen';
    ctx.globalAlpha = 1;
    for (var i = 0; i < listFire.length; i++) {
    var fire = listFire[i];
    ctx.beginPath();
    ctx.arc(fire.x, fire.y, fire.size, 0, Math.PI * 2);
    ctx.closePath();
    ctx.fillStyle = fire.fill;
    ctx.fill();
    }
    for (var i = 0; i < listFirework.length; i++) {
    var firework = listFirework[i];
    ctx.globalAlpha = firework.alpha;
    ctx.beginPath();
    ctx.arc(firework.x, firework.y, firework.size, 0, Math.PI * 2);
    ctx.closePath();
    ctx.fillStyle = firework.fill;
    ctx.fill();
    }
    }
    }


   效果如下:


Merry Christmas 2024

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

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

相关文章

[Unity] ShaderGraph动态修改Keyword Enum,实现不同效果一键切换

上次更新已然四个月前&#xff0c;零零散散的工作结束&#xff0c;终于有时间写点东西记录一下~ 实际使用中&#xff0c;经常会碰到同一个对象需要切换不同的材质&#xff0c;固然可以通过C#直接替换材质球。 或者在ShaderGraph中使用Comparison配合Branch实现切换&#xff…

电脑出现 0x0000007f 蓝屏问题怎么办,参考以下方法尝试解决

电脑蓝屏是让许多用户头疼的问题&#xff0c;其中出现 “0x0000007f” 错误代码更是较为常见且棘手。了解其背后成因并掌握修复方法&#xff0c;能帮我们快速恢复电脑正常运行。 一、可能的硬件原因 内存问题 内存条长时间使用可能出现物理损坏&#xff0c;如金手指氧化、芯片…

深度学习中的并行策略概述:1 单GPU优化

深度学习中的并行策略概述&#xff1a;1 单GPU优化 1 Training Larger Models on a Single GPU 在讨论模型的“扩展”时&#xff0c;往往会想到在多个GPU或多台机器上进行模型训练。不过&#xff0c;即便是在单个GPU上&#xff0c;也存在多种方法来训练更大规模的模型并提升…

数据结构(哈希表(中)纯概念版)

前言 哈希表&#xff08;Hash Table&#xff09;是计算机科学中的一个基础而重要的数据结构&#xff0c;它广泛评估各种算法和系统中&#xff0c;尤其是在需要快速查找、插入和删除操作的场景中。由于其O( 1)的平均时间复杂度&#xff0c;存储表在性能要求较高的应用中表现得非…

centos7的磁盘扩容

1、首先&#xff0c;确认你的磁盘是否已经正确识别并添加了新的空间。你可以使用lsblk或fdisk -l命令来查看 lsblk fdisk /dev/vda 2、我的情况是这样的&#xff0c;误操作将盘扩展为物理卷轴了&#xff0c;所以说是这样呈现的&#xff0c;如果有我的那种情况请先删除物理卷轴…

uniapp 微信小程序 页面部分截图实现

uniapp 微信小程序 页面部分截图实现 ​ 原理都是将页面元素画成canvas 然后将canvas转化为图片&#xff0c;问题是我页面里边本来就有一个canvas&#xff0c;ucharts图画的canvas我无法画出这块。 ​ 想了一晚上&#xff0c;既然canvas最后能转化为图片&#xff0c;那我直接…

ubuntu笔记

1.系统下载与虚拟机设置 系统下载https://cn.ubuntu.comhttps://releases.ubuntu.com 虚拟机设置: 桥接模式 在桥接模式下, 虚拟出来的操作系统就像是局域网中的一台独立的主机, 它可以访问网内任何一台机器主机网卡和虚拟网卡的IP地址处于同一个网段, 子网掩码、网关、DNS等…

音视频入门基础:AAC专题(13)——FFmpeg源码中,获取ADTS格式的AAC裸流音频信息的实现

音视频入门基础&#xff1a;AAC专题系列文章&#xff1a; 音视频入门基础&#xff1a;AAC专题&#xff08;1&#xff09;——AAC官方文档下载 音视频入门基础&#xff1a;AAC专题&#xff08;2&#xff09;——使用FFmpeg命令生成AAC裸流文件 音视频入门基础&#xff1a;AAC…

开发高效实时美颜工具:从美颜SDK到直播APP插件的全流程解析

今天&#xff0c;小编将以美颜SDK为核心&#xff0c;从开发、集成到优化的全流程&#xff0c;深入解析高效实时美颜工具的实现路径。 一、美颜SDK的核心功能与技术构成 美颜SDK是实时美颜技术的核心模块&#xff0c;承担着图像处理和效果呈现的重任。其主要功能包括&#xff…

用 gdbserver 调试 arm-linux 上的 AWTK 应用程序

很多嵌入式 linux 开发者都能熟练的使用 gdb/lldb 调试应用程序&#xff0c;但是还有不少朋友在调试开发板上的程序时&#xff0c;仍然在使用原始的 printf。本文介绍一下使用 gdbserver 通过网络调试开发板上的 AWTK 应用程序的方法&#xff0c;供有需要的朋友参考。 1. 下载 …

20241225在ubuntu22.04.5下使用smartmontools命令查看ssd的寿命

20241225在ubuntu22.04.5下使用smartmontools命令查看ssd的寿命 2024/12/25 15:10 rootrootrootroot-ThinkBook-16-G5-IRH:~$ sudo apt install smartmontools rootrootrootroot-ThinkBook-16-G5-IRH:~$ sudo fdisk -l Disk /dev/nvme0n1: 3.73 TiB, 4096805658624 bytes, 800…

ASP.NET |日常开发中定时任务详解

ASP.NET &#xff5c;日常开发中定时任务详解 前言一、定时任务的概念与用途1.1 定义1.2 应用场景 二、在ASP.NET中实现定时任务的方式2.1 使用System.Timers.Timer2.2 使用Quartz.NET 三、定时任务的部署与管理3.1 部署考虑因素3.2 管理与监控 结束语优质源码分享 ASP.NET &am…

整车厂如何规划构建汽车集成安全团队的软件研发能力

&#xff08;一&#xff09;、汽车集成安全团队职责 汽车集成安全团队肩负着保障汽车整体安全性的重任&#xff0c;从多个维度守护驾乘人员安全与车辆稳定运行&#xff0c;其主要职责如下&#xff1a; 功能安全管理 标准遵循与流程制定&#xff1a;严格依据ISO 26262等功能安…

使用 Python 创建多栏 Word 文档 – 详解

目录 引言 一、工具与安装 二、Python 在 Word 中创建简单的多栏布局 三、Python 在 Word 文档的栏间添加分隔线 四、Python 从Word文档的指定位置开启多栏设置 五、Python 为多栏 Word 文档的各栏添加页码 引言 在文档设计中&#xff0c;排版不仅决定了内容的呈现方式&…

使用强化学习与遗传算法优化3D低空物流路径_版本2

在快速发展的物流与自主系统领域&#xff0c;优化无人机在三维空间中的飞行路径至关重要。无论是在城市环境中导航还是在复杂地形中穿行&#xff0c;确保高效、安全且节能的航线规划能够显著提升运营效率。本文将深入探讨一种创新方法&#xff0c;结合强化学习&#xff08;Rein…

[手机Linux] 七,NextCloud优化设置

安装完成后在个人设置里发现很多警告&#xff0c;一一消除。 只能一条一条解决了。 关于您的设置有一些错误。 1&#xff0c;PHP 内存限制低于建议值 512 MB。 设置php配置文件&#xff1a; /usr/local/php/etc/php.ini 把里面的&#xff1a; memory_limit 128M 根据你自…

【设备 磁盘】重要备份存放U盘的风险 + winhex 磁盘清零(清理windows无法格式化的磁盘)

简述 清理用设备管理器和DiskGenious无法打开的磁盘 winhex安装 官网https://www.x-ways.net/winhex/下载&#xff0c;解压后以管理员身份运行 注意&#xff1a;非完全版不能像磁盘写入编辑后的数据 使用 解压后直接点击打开即可 打开磁盘 “全选”后&#xff0c;选择…

从LockSupport开始带来的思考

LockSupport是什么 LockSupport是JUC下的一个线程同步工具类&#xff0c;实现了线程的阻塞和唤醒操作。相比其他同步机制&#xff0c;如Synchronized、ReentrantLock等&#xff0c;LockSupport的性能更高、更灵活&#xff0c;同时也可以避免线程操作不当引起的死锁问题。Java中…

树莓集团:以产教融合助力人才培养

在当今快速发展的数字时代&#xff0c;人才是推动产业进步和创新的核心驱动力。树莓集团作为数字产业生态链建设者&#xff0c;深刻认识到人才培养的关键意义&#xff0c;积极探索并大力践行产教融合模式&#xff0c;为数字产业源源不断地输送高素质专业人才&#xff0c;在助力…