• 【中秋征文】手把手教你海面月亮升起中秋节特效制作


    今年的中秋又要到啦,不管你身在何处,与何人共度,中秋的团圆之情、欢聚之乐是一直不变的。

    一,前言

    又是一年中秋节,明月千里寄相思 秋风起,日渐凉,时光似水般轻轻从指尖划过,转眼又是一年 一度的中秋节。这篇文章将以程序员的方式呈现中秋佳节,希望大家喜欢,祝你们中秋快乐!

    《望月怀远》是唐代诗人张九龄的作品。此诗是望月怀思的名篇。

    在这里插入图片描述

    赏析

    《望月怀远》是一首月夜怀念远人的诗,是作者在离乡时,望月而思念远方亲人而写的。起句“海上生明月,天涯共此时”,茫茫的海上升起一轮明月,此时你我都在天涯共相望。有情之人都怨恨月夜漫长,整夜里不眠而把亲人怀想。熄灭蜡烛怜爱这满屋月光,我披衣徘徊深感夜露寒凉。不能把美好的月色捧给你,只望能够与你相见在梦乡。

    二,效果

    1, 静态效果

    在这里插入图片描述

    2,视频效果

    Video_2022-08-29_170802

    三,思路

    1. 首先,我们要创建一个定时器,使得月亮 div id=“moon” 不断上升!
    2. 当月亮上升到距离顶部,同时显示starUnder130像素时,清除定时器,月亮上升停止!
    3. 当月亮停止之后,让里面的诗句逐字(定时器实现)显示,通过设置的动画让嫦娥图片显示!
    4. class="stars"是创建夜空中的星星,并加上css动画让其动起来!
    5. div id=“water” 是底部倒影

    四,代码

    1,目录结构

    在这里插入图片描述

    2,index.html代码

    <!DOCTYPE html>
    <html > 
      <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <title>海面月亮升起中秋节特效</title>
        <meta name="description" content="">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" href="css/style.css">
        <script src="js/jquery.min.js"></script>
      </head>
    <body> 
      <div id="bg">
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div class="stars"></div>
        <div id="water">
        <div class="starUnder"></div>
        <div class="starUnder"></div>
        <div class="starUnder"></div>
        <div class="starUnder"></div>
        <div class="starUnder"></div>
        <div class="starUnder"></div>
        <div class="starUnder"></div>
        <div class="starUnder"></div>
        <div class="starUnder"></div>
        <div class="starUnder"></div>
        <div class="starUnder"></div>
        <div class="starUnder"></div>
        <div class="starUnder"></div>
        <div class="starUnder"></div>
        <div class="starUnder"></div>
        <div class="starUnder"></div>
        <div class="starUnder"></div>
        <div class="starUnder"></div>
        <div class="starUnder"></div>
        <div class="starUnder"></div>
        <div class="starUnder"></div>
        <div class="starUnder"></div>
        <div class="starUnder"></div>
        <div class="starUnder"></div>
        <div class="starUnder"></div>
        <div class="starUnder"></div>
        <div class="starUnder"></div>
        <div class="starUnder"></div>
        <div class="starUnder"></div>
        <div class="starUnder"></div>
        <div class="starUnder"></div>
        <div class="starUnder"></div>
        <div class="starUnder"></div>
        <div class="starUnder"></div>
        <div class="starUnder"></div>
        <div class="starUnder"></div>
        <div class="starUnder"></div>
        <div class="starUnder"></div>
        <div class="starUnder"></div>
        <div class="starUnder"></div>
        </div>
        <div id="moon">
        </div>
        </div>
    
        <script>
        $(document).ready(function(){
          var poem1=["海","上","升","明","月"];
          var poem2=["天","涯","共","此","时"];
          var arrWid=[0,80,320];
          var arrHgt=[0,10,200];
          var posTop=[0,2,13,46];
          var spdWid=16;
          var spdHgt=10;
          var moon=document.getElementById("moon");
          var water=document.getElementById("water"); 
          var Ocean=document.getElementsByClassName("Ocean");
          moon.style.top=670 + "px";
          var timer=setInterval(function(){
            moon.style.top=moon.offsetTop - 10 + "px";
            if(moon.offsetTop>=660){
             bg(arrWid[0],arrHgt[0],0);
            }else if(moon.offsetTop>=440){
              if(arrWid[1]>=200||arrHgt[1]>=110){
                spdHgt=7.5;
                spdWid=8;
              }
              arrWid[1]+=spdWid;
              arrHgt[1]+=spdHgt;
              
              bg(arrWid[1],arrHgt[1],0);
            }else if(moon.offsetTop>=430){
              bg(arrWid[2],arrHgt[2],0);
            }else if(moon.offsetTop>=420){
              posTop[0]+=2;
              bg(arrWid[2],arrHgt[2],posTop[0]);
            }else if(moon.offsetTop>=410){
              posTop[1]+=11;
              bg(arrWid[2],arrHgt[2],posTop[1]);
            }else if(moon.offsetTop>=240){
              posTop[2]+=2;
              bg(arrWid[2],arrHgt[2],posTop[2]);
            }else if(moon.offsetTop>=140){
              posTop[3]+=0.4;
              //月亮即将完全升起时开始改变它的大小(影)
            if(moon.offsetTop<=260&&moon.offsetTop>=140){
              arrWid[2]-=4;
              arrHgt[2]-=1;
              bg(arrWid[2],arrHgt[2],posTop[3]);
            }
            }else{
              bg(284,190,50);
              clearInterval(timer);
              var a=document.createElement("div");
              a.className="Ocean";
              moon.appendChild(a);
              moon.innerHTML+="";
              var girl=document.getElementById("girl");
              girl.style.animation="appear 6s linear";
              word(Ocean[0],500,poem1);
              var timeOut=setTimeout(function() {
              var div=document.createElement("div");
              div.className="thisTime";
              moon.appendChild(div);
              var thisTime=document.getElementsByClassName("thisTime");
              word(thisTime[0],500,poem2);
              clearTimeout(timeOut);
              }, 2500);
            } 
             },100);
             
              createStar(40,".stars","star",1,300,360,-100);
              createStar(40,".starUnder","star1",1.5,360,300,200);
          //修改倒影
          function bg(widSpd,hgtSpd,posTop){
            return water.style.background="radial-gradient("+widSpd+"px "+hgtSpd+"px at 50.5% "+posTop+"%,rgb(250, 250, 249) 50%,rgb(247, 247, 245) 63%,rgb(7,7,70) 70%,rgb(18, 2, 56) 85%,rgb(13, 1, 59) 100%)" ;
          };
          //制造星星
          function createStar(starNum,element,element2,scal,deg,rotY,rotX){
          var stars=starNum;
          var $stars=$(element);
          var r=2000;
          for(var i=0;i<stars;i++){
            var $star=$("<div/>").addClass(element2);
            $stars.append($star);
            }
          $("."+element2).each(function(){
            var cur=$(this);
            var s=0.2+(Math.random()*scal);
            var curR=r+(Math.random()*deg);
            cur.css({ 
              transformOrigin:"0 0 "+curR+"px",
              transform:" translate3d(0,0,-"+curR+"px) rotateY("+(Math.random()*rotY)+"deg) rotateX("+(Math.random()*rotX)+"deg) rotateY("+-10+"deg) scale("+s+","+s+")"})
              })
          }
          //字
          function word(className,dur,array){
              var i=0;
              var timeName=setInterval(function(){
              className.style.animation="appear 4s linear";
              var p=document.createElement("p");
              p.innerHTML=array[i];
              className.appendChild(p);
              i++;
              if(i>=array.length){
              clearInterval(timeName);
              }
            },dur);
          }
            
              })        
          </script>
    </body>
    </html>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165
    • 166
    • 167
    • 168
    • 169
    • 170
    • 171
    • 172
    • 173
    • 174
    • 175
    • 176
    • 177
    • 178
    • 179
    • 180
    • 181
    • 182
    • 183
    • 184
    • 185
    • 186
    • 187
    • 188
    • 189
    • 190
    • 191
    • 192
    • 193
    • 194
    • 195
    • 196
    • 197
    • 198
    • 199
    • 200
    • 201
    • 202
    • 203
    • 204
    • 205
    • 206
    • 207
    • 208
    • 209
    • 210
    • 211
    • 212
    • 213
    • 214
    • 215
    • 216
    • 217
    • 218
    • 219
    • 220
    • 221
    • 222
    • 223
    • 224
    • 225
    • 226
    • 227
    • 228
    • 229
    • 230
    • 231
    • 232
    • 233
    • 234
    • 235
    • 236
    • 237
    • 238
    • 239
    • 240
    • 241
    • 242
    • 243
    • 244
    • 245
    • 246
    • 247
    • 248

    3,style.css样式代码

    @charset "utf-8";
    html,body{
      padding: 0px;
      margin: 0px;
      overflow: hidden;
    }
    #bg{
      height: 100vh;
      width: auto;
      background: radial-gradient(150% 95% at bottom center,rgb(67, 19, 122) 20%,rgb(6,6,70) 55%,rgb(7,7,70) 70%,rgb(18, 2, 56) 85%,rgb(5, 1, 22) 100%);
      overflow: hidden;
      z-index: 1;
    }
    #water{
      position: relative;
      top: 70vh;
      height: 30vh;
      width: auto;
      z-index:2;
    
      box-shadow: 0 0 20px rgba(221,225,222,0.9);
    }
    #moon{
      height: 400px;
      width: 400px;
      background-color:rgb(250, 246, 227);
      border-radius: 50%;
      z-index: 1;
      position: absolute;
      left: 40%;
      font-family: cursive;
      box-shadow: 0 0 50px rgba(251,255, 254, 2);
    }
    @keyframes rotate {
      0% {
        transform: perspective(400px) rotateZ(20deg) rotateX(-40deg) rotateY(0);
      }
      100% {
        transform: perspective(400px) rotateZ(20deg) rotateX(-40deg) rotateY(-360deg);
      }
    }
    .stars,.starUnder{
      transform: perspective(500px);
      transform-style: preserve-3d;
      position: absolute;
      bottom: 0;
      perspective-origin: 50% 100%;
      left: 50%;
      animation: rotate 270s infinite linear;
    }
    .star,.star1 {
      width: 2px;
      height: 2px;
      background: rgb(247, 204, 232);
      position: absolute;
      top: 0;
      left: 0;
      transform-origin: 0 0 -300px;
      transform: translate3d(0, 0, -300px);
      backface-visibility: hidden;
    }
    .star1{
    
      background-color: aliceblue;
      box-shadow:0 0 10px rgb(221,225,222);
    }
    #girl{
      width: 150px;
      height: 150px;
      position: absolute;
      left: 64%;
      top: 28%;
      z-index: 3;
    }
    .thisTime{
      position: absolute;
      font-family: cursive;
      top: 8%;
      left: 50%;
    }
    .Ocean{
      position: absolute;
      left: 30%;
      top: 0%;
    }
    .thisTime,.Ocean p{
      font-size:34px;
      font-weight: bold;
      position: relative; 
    }
    @keyframes appear {
      0%{opacity: 0;}
      100%{opacity: 1;}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94

    4,素材图

    在这里插入图片描述

    5,js脚本

    js脚本就不这里粘贴了,由于js脚本我们是使用jquery,大家可以通过互联网使用CDN或者去网上下载保存都可以

    百度CDN下载地址:https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js

    五,结语

    以上就是我们今天的教程,如果你觉得博主写的还不错的话,可以关注一下博主,欢迎关注点赞,分享给您身边的朋友。您的鼓励就是对我的最大动力。

  • 相关阅读:
    【Django笔记】 登录功能
    第五章:最新版零基础学习 PYTHON 教程—Python 字符串操作指南(第七节 - Python 中的字符串模板类)
    Linux——MySQL安装的几种方式
    中英文说明书丨CalBioreagents艾美捷UR-144单克隆抗体
    工业自动化编程与数字图像处理技术
    EntityFrameworkCore 模型自动更新(下)
    Java到底能干什么?
    前端经常遇到的手写js题
    i.MX 6ULL 驱动开发 一:搭建开发环境
    GR5515 使用心得纪录片
  • 原文地址:https://blog.csdn.net/u012486840/article/details/126587547