🎉中秋佳节:简单实现月饼雨

引言

中秋佳节,是中国传统的重要节日之一。在这个特殊的日子里,人们会赏月、吃月饼、赏花灯等。而在现代科技的加持下,我们可以通过编写代码来实现一个有趣的效果------月饼雨。本文将介绍如何使用技术手段实现这一特效。

代码实现

html 复制代码
<!DOCTYPE html>
<html>
  <head>
    <title>中秋主题页面</title>
    <style>
      #redpacket-container {
        position: relative;
        width: 100%;
        height: 100vh;
        overflow: hidden;
      }

      .redpacket {
        position: absolute;
        top: -100px;
        left: calc(50% - 50px);
        width: 100px;
        height: auto;
        animation-name: redpacket-fall;
        animation-duration: 3s;
      }

      @keyframes redpacket-fall {
        from {
          top: -100px;
          opacity: 1;
          transform: rotate(0deg);
          transform-origin: center center;
          animation-timing-function: ease-in-out;
          animation-fill-mode: both;
          animation-iteration-count: infinite;
          animation-direction: normal;
          animation-play-state: running;
        }

        to {
          top: calc(100vh + 100px);
          opacity: 0.5;
          transform-origin: center center;
          transform: rotate(360deg);
        }
      }
    </style>
  </head>
  <body>
    <div id="redpacket-container"></div>
    <script>
      // 生成一个随机颜色
      function getRandomColor() {
        // 生成三个随机数,范围在0到255之间
        var r = Math.floor(Math.random() * 256);
        var g = Math.floor(Math.random() * 256);
        var b = Math.floor(Math.random() * 256);

        return `rgba(${r}, ${g}, ${b}, 0.5)`;
      }

      function createRedPacket() {
        var redPacket = document.createElement("img");
        redPacket.src = "./月饼.svg";
        redPacket.className = "redpacket";
        redPacket.style.left = Math.random() * (window.innerWidth - 100) + "px";
        redPacket.style.filter = `drop-shadow(2px 2px 4px ${getRandomColor()})`;
        document.getElementById("redpacket-container").appendChild(redPacket);
      }

      setInterval(createRedPacket, 200); // 每200豪秒创建一个月饼
    </script>
  </body>
</html>

这段代码主要用来创建一个中秋节主题的网页,其中会不断生成并下落带有随机颜色的月饼图像。

HTML结构

这个HTML文件主要包括一个div元素,其id是redpacket-container。这个div元素是相对定位的,并且它的宽度是100%,高度是视口的100%,超过视口的部分会被隐藏(由于overflow: hidden)。

CSS样式

CSS部分定义了一个名为redpacket的类,这个类的元素是绝对定位的,初始时在顶部(-100px),在页面中心(通过left: calc(50% - 50px)计算得出),宽100px,高自动。它有一个名为redpacket-fall的关键帧动画,这个动画会让元素从顶部落到底部,同时逐渐旋转和变透明。

JavaScript

JavaScript部分定义了两个函数,getRandomColorcreateRedPacket

  1. getRandomColor函数:这个函数生成一个随机的RGBA颜色。它生成三个随机数(在0到255之间),然后将这三个数作为RGB颜色的三个分量,并设置颜色的透明度为0.5。
  2. createRedPacket函数:这个函数创建一个新的元素(一个图像元素),类名为"redpacket",然后随机设置它在页面上的位置(在窗口宽度减去100px和元素宽度的中间位置),并给它一个随机的阴影效果。最后,这个新创建的元素被添加到id为"redpacket-container"的元素中。

setInterval函数设置为每200毫秒(由于你这里的注释写的是100毫秒,但根据代码实际是200毫秒)调用createRedPacket函数,这样就会不断生成新的"月饼"元素并添加到页面上。

视觉效果

整体上,这段代码的视觉效果应该是页面上不断下落并旋转的月饼图像,这些月饼图像会以不同的颜色和位置出现。

总结

通过编写代码实现月饼雨效果,我们可以在中秋佳节期间为网页增添一些趣味和节日氛围。记得中秋节吃月饼~

相关推荐
Mr_Xuhhh1 小时前
重生之我在学环境变量
linux·运维·服务器·前端·chrome·算法
永乐春秋2 小时前
WEB攻防-通用漏洞&文件上传&js验证&mime&user.ini&语言特性
前端
鸽鸽程序猿2 小时前
【前端】CSS
前端·css
ggdpzhk2 小时前
VUE:基于MVVN的前端js框架
前端·javascript·vue.js
学不会•4 小时前
css数据不固定情况下,循环加不同背景颜色
前端·javascript·html
活宝小娜7 小时前
vue不刷新浏览器更新页面的方法
前端·javascript·vue.js
程序视点7 小时前
【Vue3新工具】Pinia.js:提升开发效率,更轻量、更高效的状态管理方案!
前端·javascript·vue.js·typescript·vue·ecmascript
coldriversnow7 小时前
在Vue中,vue document.onkeydown 无效
前端·javascript·vue.js
我开心就好o7 小时前
uniapp点左上角返回键, 重复来回跳转的问题 解决方案
前端·javascript·uni-app
开心工作室_kaic8 小时前
ssm161基于web的资源共享平台的共享与开发+jsp(论文+源码)_kaic
java·开发语言·前端