当前位置:首页 » 《休闲阅读》 » 正文

圣诞快乐(h5 css js(圣诞树))

23 人参与  2024年12月30日 10:01  分类 : 《休闲阅读》  评论

点击全文阅读


一,整体设计思路

圣诞树h5(简易)

1.页面布局与样式

页面使用了全屏的黑色背景,中央显示圣诞树,树形由三层绿色的三角形组成,每一层的大小逐渐变小。树干是一个棕色的矩形,位于三角形的底部。

2.动态元素

装饰球:通过 JavaScript 动态添加,每个装饰球都是一个红色的圆形,并且使用 @keyframes 实现闪烁效果。装饰球的位置和颜色是随机的,当用户点击装饰球时会弹出提示框。雪花:通过 JavaScript 动态添加雪花,雪花是白色的小圆形,使用 @keyframes 让雪花从屏幕顶部落下,落下速度是随机的。

3.动画与交互

a.闪烁动画:装饰球通过 CSS 的 @keyframes 实现闪烁效果,让它们看起来像闪烁的灯泡。雪花下
b.落动画:雪花也使用了类似的动画,使它们从屏幕上方逐渐掉落至屏幕底部。
c.随机效果:装饰球的颜色、位置、雪花的数量和动画时长都是随机生成的,使每次加载页面时都呈现不同的效果。

详细解释 会放在代码注释里面。

二,整体代码

<!DOCTYPE html><html lang="zh"><head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>圣诞树</title>    <style>        /* 设置页面的基本样式,居中显示并设置黑色背景 */        body {            margin: 0;            padding: 0;            background-color: #000;            /* 背景颜色为黑色 */            color: #fff;            /* 字体颜色为白色 */            font-family: Arial, sans-serif;            /* 设置字体 */            display: flex;            justify-content: center;            /* 水平居中 */            align-items: center;            /* 垂直居中 */            height: 100vh;            /* 高度为视口的100% */            overflow: hidden;            /* 防止滚动条 */        }        /* 树的容器样式 */        .tree {            position: relative;            width: 0;            height: 0;            margin-top: -50px;            /* 调整树的位置 */        }        /* 树叶的层样式 */        .triangle {            position: absolute;            width: 0;            height: 0;            border-left: 100px solid transparent;            border-right: 100px solid transparent;        }        /* 每一层树叶的样式 */        .layer1 {            border-bottom: 150px solid green;            /* 第一层绿色树叶 */            top: 0;            left: -80px;            /* 居中对齐 */        }        .layer2 {            border-bottom: 130px solid green;            /* 第二层树叶 */            top: 100px;            left: -80px;        }        .layer3 {            border-bottom: 110px solid green;            /* 第三层树叶 */            top: 180px;            left: -80px;        }        /* 树干样式 */        .trunk {            position: absolute;            top: 290px;            /* 树干位置 */            width: 40px;            height: 60px;            background-color: brown;            /* 树干颜色 */        }        /* 装饰球样式 */        .ornament {            position: absolute;            width: 20px;            height: 20px;            background-color: red;            /* 红色装饰球 */            border-radius: 50%;            /* 圆形 */            box-shadow: 0 0 10px rgba(255, 0, 0, 0.7);            /* 发光效果 */            animation: blink 2s infinite alternate;            /* 让装饰球闪烁 */        }        /* 定义闪烁效果 */        @keyframes blink {            to {                opacity: 0.2;                /* 透明度变化 */            }        }        /* 雪花样式 */        .snowflake {            position: absolute;            top: -20px;            /* 雪花从顶部开始 */            width: 10px;            height: 10px;            background-color: white;            /* 雪花颜色为白色 */            border-radius: 50%;            /* 圆形 */            box-shadow: 0 0 10px rgba(255, 255, 255, 0.9);            /* 发光效果 */            animation: fall linear infinite;            /* 雪花下落动画 */        }        /* 定义雪花下落效果 */        @keyframes fall {            100% {                transform: translateY(100vh);                /* 让雪花下落到视口底部 */            }        }    </style></head><body>    <!-- 圣诞树容器 -->    <div class="tree">        <div class="triangle layer1"></div> <!-- 第一层 -->        <div class="triangle layer2"></div> <!-- 第二层 -->        <div class="triangle layer3"></div> <!-- 第三层 -->        <div class="trunk"></div> <!-- 树干 -->    </div>    <script>        // 动态添加装饰球和雪花        const tree = document.querySelector('.tree');        const totalOrnaments = 20; // 圣诞树上的装饰球数量        const totalSnowflakes = 50; // 雪花的数量        // 创建装饰球        function createOrnaments() {            for (let i = 0; i < totalOrnaments; i++) {                const ornament = document.createElement('div');                ornament.classList.add('ornament');                ornament.style.left = `${Math.random() * 180 - 80}px`; // 随机位置                ornament.style.top = `${Math.random() * 280}px`; // 随机位置                ornament.style.backgroundColor = getRandomColor(); // 随机颜色                tree.appendChild(ornament);                // 点击事件:点击装饰球时弹出提示                ornament.addEventListener('click', () => {                    alert('你点击了一个装饰球!');                });            }        }        // 创建雪花        function createSnowflakes() {            for (let i = 0; i < totalSnowflakes; i++) {                const snowflake = document.createElement('div');                snowflake.classList.add('snowflake');                snowflake.style.left = `${Math.random() * window.innerWidth}px`; // 随机位置                snowflake.style.animationDuration = `${Math.random() * 5 + 3}s`; // 随机动画持续时间                document.body.appendChild(snowflake);            }        }        // 获取随机颜色        function getRandomColor() {            const colors = ['#FF0000', '#00FF00', '#0000FF', '#FFFF00', '#FF00FF', '#00FFFF'];            return colors[Math.floor(Math.random() * colors.length)];        }        // 初始化圣诞场景        createOrnaments();        createSnowflakes();    </script></body></html>

三,详细解释

I 大树部分

<body>    <div class="tree">        <div class="triangle layer1"></div>        <div class="triangle layer2"></div>        <div class="triangle layer3"></div>        <div class="trunk"></div>    </div></body>

一棵大树,里面有树干和树叶部分,树叶部分用triangle类名,并在css当中把它绘制成三角形。

.triangle {    position: absolute;    width: 0;    height: 0;    border-left: 100px solid transparent;    border-right: 100px solid transparent;}

layer表示层级 有三层,trunk类名的div是树干。

//树干.trunk {    position: absolute;    top: 290px;    width: 40px;    height: 60px;    background-color: brown;}

 II 动画效果

动态装饰球(Ornaments)这个是随机生成的。

function createOrnaments() {    for (let i = 0; i < totalOrnaments; i++) {        const ornament = document.createElement('div');        ornament.classList.add('ornament');        ornament.style.left = `${Math.random() * 180 - 80}px`;        ornament.style.top = `${Math.random() * 280}px`;        ornament.style.backgroundColor = getRandomColor();        tree.appendChild(ornament);        ornament.addEventListener('click', () => {            alert('你点击了一个装饰球!');        });    }}

装饰球闪烁效果(CSS 动画)

@keyframes blink {    to {        opacity: 0.2;    }}

动态雪花效果

function createSnowflakes() {    for (let i = 0; i < totalSnowflakes; i++) {        const snowflake = document.createElement('div');        snowflake.classList.add('snowflake');        snowflake.style.left = `${Math.random() * window.innerWidth}px`;        snowflake.style.animationDuration = `${Math.random() * 5 + 3}s`;        document.body.appendChild(snowflake);    }}

createSnowflakes 函数生成了 50 个雪花(totalSnowflakes = 50)。每个雪花是一个小圆形的 div 元素,位置是随机的,雪花的 left 值根据窗口宽度随机生成。animationDuration 设置了雪花的下落时间,使每片雪花的下落速度不同。

随机颜色生成(JavaScript 函数)

function getRandomColor() {    const colors = ['#FF0000', '#00FF00', '#0000FF', '#FFFF00', '#FF00FF', '#00FFFF'];    return colors[Math.floor(Math.random() * colors.length)];}

提前祝福大家 圣诞快乐

效果:

圣诞树h5(简易)


点击全文阅读


本文链接:http://m.zhangshiyu.com/post/209111.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 进错房,嫁给八零最牛特种兵已完结(林晚夏江肆年)抖音热文_《进错房,嫁给八零最牛特种兵已完结》最新章节免费在线阅读 -
  • 重生后选魔族,天族哭着求我当王全章节(月沁雪任意)全文免费阅读无弹窗大结局_(重生后选魔族,天族哭着求我当王全章节)重生后选魔族,天族哭着求我当王全章节免费阅读全文最新章节列表_笔趣阁(重生后选魔族,天族哭着求我当王全章节) -
  • 捡回摄政王后,她在皇室作威作福完结版小说(景飞鸢赵灵杰)全文免费阅读无弹窗大结局_(捡回摄政王后,她在皇室作威作福完结版免费阅读全文大结局)最新章节列表_笔趣阁(捡回摄政王后,她在皇室作威作福完结版) -
  • 千金难泣(立轩苏子骞翠竹吴进)全本免费在线阅读_千金难泣最新章节在线阅读(立轩苏子骞翠竹吴进)
  • 《沈云阶傅宴辞》(沈云阶傅宴辞》已完结完整版全集大结局小说)全文阅读笔趣阁
  • 《沈凌峰沈国华》已完结小说全文阅读笔趣阁《沈凌峰沈国华》
  • 《傅嫤韩恬魏郯程茂》已完结(傅嫤韩恬魏郯程茂)热门小说全目录完整版)全文阅读笔趣阁
  • 八零俏军医错嫁糙汉军官:番外+全文+后续(贺昭朗孟翩然)完本小说免费_全本免费小说八零俏军医错嫁糙汉军官:番外+全文+后续最新小说全文阅读(贺昭朗孟翩然)
  • 失去千千万万遍在线阅读(阮相宜陆凛言)全文免费阅读无弹窗大结局_(失去千千万万遍在线阅读)失去千千万万遍在线阅读免费阅读全文最新章节列表_笔趣阁(失去千千万万遍在线阅读) -
  • 脱离世界后,妻子疯了火爆小说小说(沈夕颜林程言)全文免费阅读无弹窗大结局_(脱离世界后,妻子疯了火爆小说免费阅读全文大结局)最新章节列表_笔趣阁(脱离世界后,妻子疯了火爆小说) -
  • 跨年发生踩踏,男友为救白月光丢下我(温林初宝宝)免费阅读 -
  • 都重生了,还不离婚等啥呢宋招弟霍文铮小说在线章节免费阅读

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1