520节日程序员专属情人节表白网站【建议收藏】HTML+CSS+JavaScript

🌩️ 精彩专栏推荐👇🏻👇🏻👇🏻
💂 作者主页: 【进入主页—🚀获取更多源码】
🎓 web前端期末大作业: 【📚HTML5网页期末作业 (1000套) 】
🧡 程序员有趣的告白方式:【💌HTML七夕情人节表白网页制作 (110套) 】
七夕来袭!是时候展现专属于程序员的浪漫了!你打算怎么给心爱的人表达爱意?鲜花礼物?代码表白?还是创意DIY?或者…无论那种形式,快来秀我们一脸吧!



二、📚网站介绍

📓网站程序方面:计划采用最新的网页编程语言HTML5+CSS3+JS程序语言完成网站的功能设计。并确保网站代码兼容目前市面上所有的主流浏览器,已达到打开后就能即时看到网站的效果。

📒网站文件方面:网站系统文件种类包含:html网页结构文件、css网页样式文件、js网页特效文件、images网页图片文件;

📙网页编辑方面:网页作品代码简单,可使用任意HTML编辑软件(如:Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad++ 等任意html编辑软件进行运行及修改编辑等操作)。


三、🔗网站效果

🧩 2.图片演示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


下面以樱花雨3D动态相册源码演示为例

html七夕情人节表白网页制作

四、💒 网站代码

🧱HTML结构代码


<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title></title>
    <script src="js/jquery.min.js"></script>
    <link type="text/css" href="./css/style.css" rel="stylesheet" />
    <style>
      html,
      body {
        width: 100%;
        height: 100%;
        margin: 0;
        padding: 0;
        overflow: hidden;
      }
      .container {
        width: 100%;
        height: 100%;
        margin: 0;
        padding: 0;
        background-color: #000000;
      }
    </style>
  </head>
  <body>
    <audio autoplay="autopaly">
      <source src="renxi.mp3" type="audio/mp3" />
    </audio>
    <div id="jsi-cherry-container" class="container">
      <div class="box">
        <ul class="minbox">
          <li></li>
          <li></li>
          <li></li>
          <li></li>
          <li></li>
          <li></li>
        </ul>
        <ol class="maxbox">
          <li></li>
          <li></li>
          <li></li>
          <li></li>
          <li></li>
          <li></li>
        </ol>
      </div>
    </div>

    <script>
        setParameters: function() {
          this.$container = $('#jsi-cherry-container');
          this.width = this.$container.width();
          this.height = this.$container.height();
          this.context = $('<canvas />')
            .attr({ width: this.width, height: this.height })
            .appendTo(this.$container)
            .get(0)
            .getContext('2d');
          this.cherries = [];
          this.maxAddingInterval = Math.round(
            (this.MAX_ADDING_INTERVAL * 1000) / this.width
          );
          this.addingInterval = this.maxAddingInterval;
        },
        reconstructMethods: function() {
          this.render = this.render.bind(this);
        },

        render: function() {
          requestAnimationFrame(this.render);
          this.context.clearRect(0, 0, this.width, this.height);

          this.cherries.sort(function(cherry1, cherry2) {
            return cherry1.z - cherry2.z;
          });
          for (var i = this.cherries.length - 1; i >= 0; i--) {
            if (!this.cherries[i].render(this.context)) {
              this.cherries.splice(i, 1);
            }
          }
          if (--this.addingInterval == 0) {
            this.addingInterval = this.maxAddingInterval;
            this.cherries.push(new CHERRY_BLOSSOM(this, false));
          }
        }
      };
      var CHERRY_BLOSSOM = function(renderer, isRandom) {
        this.renderer = renderer;
        this.init(isRandom);
      };
      CHERRY_BLOSSOM.prototype = {
        FOCUS_POSITION: 300,
        FAR_LIMIT: 600,
        MAX_RIPPLE_COUNT: 100,
        RIPPLE_RADIUS: 100,
        SURFACE_RATE: 0.5,
        SINK_OFFSET: 20,

        init: function(isRandom) {
          this.x = this.getRandomValue(
            -this.renderer.width,
            this.renderer.width
          );
          this.y = isRandom
            ? this.getRandomValue(0, this.renderer.height)
            : this.renderer.height * 1.5;
          this.z = this.getRandomValue(0, this.FAR_LIMIT);
          this.vx = this.getRandomValue(-2, 2);
          this.vy = -2;
          this.theta = this.getRandomValue(0, Math.PI * 2);
          this.phi = this.getRandomValue(0, Math.PI * 2);
          this.psi = 0;
          this.dpsi = this.getRandomValue(Math.PI / 600, Math.PI / 300);
          this.opacity = 0;
          this.endTheta = false;
          this.endPhi = false;
          this.rippleCount = 0;

          var axis = this.getAxis(),
            theta =
              this.theta +
              (Math.ceil(
                -(this.y + this.renderer.height * this.SURFACE_RATE) / this.vy
              ) *
                Math.PI) /
                500;
          theta %= Math.PI * 2;

          this.offsetY =
            40 * (theta <= Math.PI / 2 || theta >= (Math.PI * 3) / 2 ? -1 : 1);
          this.thresholdY =
            this.renderer.height / 2 +
            this.renderer.height * this.SURFACE_RATE * axis.rate;
          this.entityColor = this.renderer.context.createRadialGradient(
            0,
            40,
            0,
            0,
            40,
            80
          );
          this.entityColor.addColorStop(
            0,
            'hsl(330, 70%, ' + 50 * (0.3 + axis.rate) + '%)'
          );
        
            context.save();
            context.globalAlpha = this.opacity;
            context.fillStyle = this.shadowColor;
            context.strokeStyle =
              'hsl(330, 30%,' + 40 * (0.3 + axis.rate) + '%)';
            context.translate(
              axis.x,
              Math.max(axis.y, this.thresholdY + this.thresholdY - axis.y)
            );
            context.rotate(Math.PI - this.theta);
            context.scale(axis.rate * -Math.sin(this.phi), axis.rate);
            context.translate(0, this.offsetY);
            this.renderCherry(context, axis);
            context.restore();
          }
          context.save();
          context.fillStyle = this.entityColor;
          context.strokeStyle = 'hsl(330, 40%,' + 70 * (0.3 + axis.rate) + '%)';
          context.translate(
            axis.x,
            axis.y + Math.abs(this.SINK_OFFSET * Math.sin(this.psi) * axis.rate)
          );
          context.rotate(this.theta);
          context.scale(axis.rate * Math.sin(this.phi), axis.rate);
          context.translate(0, this.offsetY);
          this.renderCherry(context, axis);
          context.restore();

          if (this.y <= -this.renderer.height / 4) {
            if (!this.endTheta) {
              for (
                var theta = Math.PI / 2, end = (Math.PI * 3) / 2;
                theta <= end;
                theta += Math.PI
              ) {
                if (this.theta < theta && this.theta + Math.PI / 200 > theta) {
                  this.theta = theta;
                  this.endTheta = true;
                  break;
                }
              }
            }
            if (!this.endPhi) {
              for (
                var phi = Math.PI / 8, end = (Math.PI * 7) / 8;
                phi <= end;
                phi += (Math.PI * 3) / 4
              ) {
                if (this.phi < phi && this.phi + Math.PI / 200 > phi) {
                  this.phi = Math.PI / 8;
                  this.endPhi = true;
                  break;
                }
              }
            }
          }
          if (!this.endTheta) {
            if (axis.y == this.thresholdY) {
              this.theta +=
                (Math.PI / 200) *
                (this.theta < Math.PI / 2 ||
                (this.theta >= Math.PI && this.theta < (Math.PI * 3) / 2)
                  ? 1
                  : -1);
            } else {
              this.theta += Math.PI / 500;
            }
            this.theta %= Math.PI * 2;
          }
          if (this.endPhi) {
            if (this.rippleCount == this.MAX_RIPPLE_COUNT) {
              this.psi += this.dpsi;
              this.psi %= Math.PI * 2;
            }
          } else {
            this.phi += Math.PI / (axis.y == this.thresholdY ? 200 : 500);
            this.phi %= Math.PI;
          }
          if (this.y <= -this.renderer.height * this.SURFACE_RATE) {
            this.x += 2;
            this.y = -this.renderer.height * this.SURFACE_RATE;
          } else {
            this.x += this.vx;
            this.y += this.vy;
          }
          return (
            this.z > -this.FOCUS_POSITION &&
            this.z < this.FAR_LIMIT &&
            this.x < this.renderer.width * 1.5
          );
        }
      };
      $(function() {
        RENDERER.init();
      });
    </script>
  </body>
</html>






🏠CSS样式代码


@charset "utf-8";
* {
  margin: 0;
  padding: 0;
}
body {
  max-width: 100%;
  min-width: 100%;
  height: 100%;
  background-size: cover;
  background-repeat: no-repeat;
  background-attachment: fixed;
  background-size: 100% 100%;
  position: absolute;
  margin-left: auto;
  margin-right: auto;
}
li {
  list-style: none;
}
.box {
  width: 200px;
  height: 200px;
  background-size: cover;
  background-repeat: no-repeat;
  background-attachment: fixed;
  background-size: 100% 100%;
  position: absolute;
  margin-left: 42%;
  margin-top: 22%;
  -webkit-transform-style: preserve-3d;
  -webkit-transform: rotateX(13deg);
  -webkit-animation: move 5s linear infinite;
}
.minbox {
  width: 100px;
  height: 100px;
  position: absolute;
  left: 50px;
  top: 30px;
  -webkit-transform-style: preserve-3d;
}
.minbox li {
  width: 100px;
  height: 100px;
  position: absolute;
  left: 0;
  top: 0;
}
.minbox li:nth-child(1) {
  background: url(../img/01.png) no-repeat 0 0;
  -webkit-transform: translateZ(50px);
}

.box:hover ol li:nth-child(3) {
  -webkit-transform: rotateX(-90deg) translateZ(300px);
  width: 400px;
  height: 400px;
  opacity: 0.8;
  left: -100px;
  top: -100px;
}
.box:hover ol li:nth-child(4) {
  -webkit-transform: rotateX(90deg) translateZ(300px);
  width: 400px;
  height: 400px;
  opacity: 0.8;
  left: -100px;
  top: -100px;
}
.box:hover ol li:nth-child(5) {
  -webkit-transform: rotateY(-90deg) translateZ(300px);
  width: 400px;
  height: 400px;
  opacity: 0.8;
  left: -100px;
  top: -100px;
}
.box:hover ol li:nth-child(6) {
  -webkit-transform: rotateY(90deg) translateZ(300px);
  width: 400px;
  height: 400px;
  opacity: 0.8;
  left: -100px;
  top: -100px;
}
@keyframes move {
  0% {
    -webkit-transform: rotateX(13deg) rotateY(0deg);
  }
  100% {
    -webkit-transform: rotateX(13deg) rotateY(360deg);
  }
}




五、🎁更多源码

1.如果我的博客对你有帮助 请 “👍点赞” “✍️评论” “💙收藏” 一键三连哦!

2.💗【👇🏻👇🏻👇🏻🉑关注我| 获取更多源码】 带您学习各种前端插件、3D炫酷效果、图片展示、文字效果、以及整站模板 、大学生毕业HTML模板 、等!

📣以上内容技术相关问题💌欢迎一起交流学习👇🏻👇🏻👇🏻

  • 40
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 炫酷的表白烟花是一款使用HTMLCSS和JS实现的表白烟花特效的网站。这款特效专为程序员设计,为了在情人节这个特殊的日子里表达对心上人的爱意。 整个网站背景采用了黑色,让我们有一种置身于宇宙中的感觉。当打开网站时,烟花特效开始出现,这些炫目多彩的烟花通过JS代码的控制,在屏幕上绽放出美丽的火花。 通过对鼠标的操作,我们可以模拟烟花从点火到绽放的过程。点击鼠标左键可以选择一个点火的位置,当松开鼠标时,烟花就会从点火位置开始升空,并在空中迸发出各种美丽的形状和颜色。不同的点击位置和释放时间会产生不同的烟花效果,使得每一颗烟花都独一无二。 此外,网站还可以通过自定义文字来表达爱意。使用CSS样式和动画效果,我们可以在烟花绽放的同时将心形的文字显示出来,这一切都增加了表白浪漫感。 这款表白烟花特效利用了前端技术的强大功能,让程序员们能够在情人节这个特别的日子里展现自己的技术才华,同时向心上人表达深深的情感。它将技术与爱情相结合,为程序员专属打造了一个浪漫而独特的表白方式。无论是在浪漫的约会中展示,还是通过网络远程传递,炫酷的表白烟花特效都能让表白更加难忘和感人。 ### 回答2: 炫酷的表白烟花是通过HTMLCSS和JS实现的一种特效,在程序员专属情人节表白网站上使用。这个特效通过模拟烟花爆炸的动画效果,表达出浪漫的情感。 实现这个特效的过程如下:首先,使用HTML布局页面,添加一个用于显示特效的容器元素。接着,在CSS中设定容器元素的位置、宽度和高度,并将该元素的背景设置为透明。 然后,在JS中定义一个函数,用于创建烟花的爆炸效果。该函数将根据传入的参数(如烟花的位置、颜色和数量等)生成相应数量的烟花。每个烟花都会以不同的速度和方向运动,并在到达一定高度后爆炸。 烟花的爆炸效果是通过使用canvas来实现的。在JS代码中,我们会创建一个canvas元素,并设置其宽度和高度等属性。之后,通过调用canvas的API来绘制烟花的爆炸效果,包括绘制不同颜色的圆形和线条等。 最后,在特效的主函数中,我们会监听用户的鼠标点击事件,并在点击发生时调用创建烟花的函数,将烟花显示在鼠标点击的位置上。这样,每次用户点击页面时,都会出现一个烟花的爆炸效果,形成炫酷的表白烟花特效。 这种基于HTMLCSS和JS的表白烟花特效,不仅能够给予程序员一个浪漫情人节表白方式,还能够通过动画效果展示出程序员们独特的创造力和技术实力。让人们在浏览这个特效的同时,也能够感受到程序员的爱意和热情。 ### 回答3: 炫酷的表白烟花是一种特效效果,可以通过HTMLCSSJavaScript来实现。它通常在程序员专属情人节表白网站上使用,为表白活动增添浪漫和创意。 实现这个特效的关键是利用JS来控制烟花的出现和动画效果。首先,可以使用HTML创建一个透明的画布(canvas),来模拟烟花在天空中的绽放效果。然后,使用CSS设置画布的样式,如宽度、高度和背景颜色等。 接下来,使用JavaScript来控制烟花的出现和动画效果。可以通过编写代码来生成多个烟花的初始位置、颜色、弧度和速度等属性。利用定时器(setTimeout或setInterval)循环执行代码,实现烟花的移动、扩散和渐隐效果。 要使表白烟花更加炫酷,可以结合音效和文字消息。可以在特定的事件触发时,播放浪漫的音乐或表白的录音。文字消息可以在烟花绽放的同时出现在画布上,以增强表白的效果。 这种表白烟花特效可以在程序员专属情人节表白网站上发挥更好的效果。通过这种方式,可以向程序员的另一半传达爱意和祝福,让表白更具有创意和令人难忘。无论是送给自己的伴侣还是其他程序员,这个特效都可以成为一个独特而浪漫的表达方式,给予彼此美好的回忆。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

web学生网页设计

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值