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

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

24 人参与  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://zhangshiyu.com/post/209111.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

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

最新文章

  • 祖母寿宴,侯府冒牌嫡女被打脸了(沈屿安秦秀婉)阅读 -
  • 《雕花锦年,昭都旧梦》(裴辞鹤昭都)完结版小说全文免费阅读_最新热门小说《雕花锦年,昭都旧梦》(裴辞鹤昭都) -
  • 郊区41号(许洛竹王云云)完整版免费阅读_最新全本小说郊区41号(许洛竹王云云) -
  • 负我情深几许(白诗茵陆司宴)完结版小说阅读_最热门小说排行榜负我情深几许白诗茵陆司宴 -
  • 九胞胎孕妇赖上我萱萱蓉蓉免费阅读全文_免费小说在线看九胞胎孕妇赖上我萱萱蓉蓉 -
  • 为保白月光,侯爷拿我抵了债(谢景安花田)小说完结版_完结版小说全文免费阅读为保白月光,侯爷拿我抵了债谢景安花田 -
  • 陆望程映川上官硕《我的阿爹是带攻略系统的替身》最新章节阅读_(我的阿爹是带攻略系统的替身)全章节免费在线阅读陆望程映川上官硕
  • 郑雅琴魏旭明免费阅读_郑雅琴魏旭明小说全文阅读笔趣阁
  • 头条热门小说《乔书意贺宴临(乔书意贺宴临)》乔书意贺宴临(全集完整小说大结局)全文阅读笔趣阁
  • 完结好看小说跨年夜,老婆初恋送儿子故意出车祸_沈月柔林瀚枫完结的小说免费阅读推荐
  • 热推《郑雅琴魏旭明》郑雅琴魏旭明~小说全文阅读~完本【已完结】笔趣阁
  • 《你的遗憾与我无关》宋怀川冯洛洛无弹窗小说免费阅读_免费小说大全《你的遗憾与我无关》宋怀川冯洛洛 -

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

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