html+css+js 浪漫星空❤爱心相册 (含音乐)可自定义编辑文字/表白/七夕/520(程序员表白必备)

html+css+js 浪漫星空❤爱心相册 (含音乐)可自定义编辑文字

程序员 520/七夕情人节/1314/表白/求婚,是不是要给女朋友或者正在追求的妹子一点小惊喜呢 ? html+css+js 编写的浪漫星空❤爱心相册表白效果,酷炫迷人,助力程序员撩妹手到擒来,一帆风顺,祝愿大家有情人终成眷属,天长地久。。赶紧学会了,来制作属于我们程序员的浪漫吧!

更多表白方式可点击下方链接:

❤女朋友生日❤ HTML+css3+js 实现抖音炫酷樱花3D相册 (含背景音乐)程序员表白必备


动态效果图(已兼容 H5移动端 和 pc端 )

PC 电脑端

在线演示地址

在这里插入图片描述

H5 手机端

在线演示地址

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

在这里插入图片描述

爱心相片制作步骤↓

1.下载美图秀秀/百度下载/或者软件安装
在这里插入图片描述
2.选择需要裁减的图片
在这里插入图片描述
3.开始裁减
*图片裁减大小建议在 600px 600px 左右 否则图片太大,页面会出现卡顿现象哦
在这里插入图片描述
4.保存相片
在这里插入图片描述
在这里插入图片描述

歌曲MP3更换教程 ↓

mp3免费下载地址: 九酷音乐 点击打开

1.搜索需要的歌曲
在这里插入图片描述

2.下载
在这里插入图片描述
3.获取歌曲id
在这里插入图片描述
4.关注公众号以后/复制链接到浏览器打开
在这里插入图片描述
5.下载mp3
在这里插入图片描述
6.下载完毕以后自行替换mp3文件即可(如不想修改代码,必须保持名称一致)


❤解决上线问题> (不需要服务器就能免费部署上线)部署上线工具(永久可用)

不需要买服务器就能部署线上,全世界都能访问你的连接啦, 这里给大家推荐一个程序员必备软件 , 需要可滴滴在下方下方公众号获取
插件集成了超级多好用的插件,免费下载安装,简单易懂, 简直神器

1.部署流程在这里插入图片描述

2.连接成功

将你写好的页面部署上线后, 全世界的人都可以愉快的访问到你的网页了(永久免费使用哦)

在这里插入图片描述

人狠话不多,直接上代码

文件结构

在这里插入图片描述

html部分

  <body>
    <audio autoplay="autopaly">
      <source src="renxi.mp3" type="audio/mp3" />
    </audio>
    <!-- 星空html -->
    <!-- <div> -->
    <div class="container2">
      <div class="content">
        <canvas id="universe"></canvas>
      </div>
    </div>
    <!-- </div> -->
    <div class="title">
      <!-- 星团文字html -->
      <h3 class="STARDUST1">&nbsp;&nbsp;2016 - 2021</h3>
      <h1 class="STARDUST2">小夕-相遇是缘</h1>
      <h3 class="STARDUST3">L O V E <strong></strong> Y O U</h3>
      <!-- 爱心html -->
      <img class="img" src="./123.png" alt="" />
      <canvas id="pinkboard"> </canvas>
    </div>
  </body>

     ...
  完整代码可在文章 ↓ 下方公众号获取

js部分

  <!-- 星团js -->
  <script>
    let particles = [];
    let microparticles = [];

    const c1 = createCanvas({
    
    
      width: $(window).width(),
      height: $(window).height(),
    });

    const tela = c1.canvas;
    const canvas = c1.context;

    // $("body").append(tela);
    $("body").append(c1.canvas);

  
        setTimeout(
          function () {
    
    
            clearInterval(this.ID);
          }.bind(this),
          this.life
        );
      }

      render() {
    
    
        this.canvas.beginPath();
        this.canvas.arc(this.x, this.y, this.radius, 0, 2 * Math.PI);
        // this.canvas.lineWidth = 2;
        this.canvas.shadowOffsetX = 0;
        this.canvas.shadowOffsetY = 0;
        // this.canvas.shadowBlur = 6;
        this.canvas.shadowColor = "#000000";
        this.canvas.fillStyle = this.color;
        this.canvas.fill();
        this.canvas.closePath();
      }

      move() {
    
    
        this.x -=
          this.direction *
          Math.sin(this.progress / (this.random1 * 430)) *
          this.s;
        this.y -= Math.cos(this.progress / this.h) * this.s;

        if (this.x < 0 || this.x > this.w - this.radius) {
    
    
          clearInterval(this.ID);
          return false;
        }

        if (this.y < 0) {
    
    
          clearInterval(this.ID);
          return false;
        }
        this.render();
        this.progress++;
        return true;
      }
    }

      move() {
    
    
        this.x -=
          Math.sin(this.progress / (100 / (this.random1 - this.random2 * 10))) *
          this.s;
        this.y += Math.cos(this.progress / this.h) * this.s;

        if (this.x < 0 || this.x > this.w - this.radius) {
    
    
          return false;
        }

        if (this.y > this.h) {
    
    
          return false;
        }
        this.render();
        this.progress++;
        return true;
      }
    }

    var random_life = 1000;

    setInterval(
      function () {
    
    
        particles.push(new Particle1(canvas));
        random_life = 2000 * Math.random();
      }.bind(this),
      random_life
    );

    function clear() {
    
    
      let grd = canvas.createRadialGradient(
        tela.width / 2,
        tela.height / 2,
        0,
        tela.width / 2,
        tela.height / 2,
        tela.width
      );
      grd.addColorStop(0, "rgba(20,20,20,1)");
      grd.addColorStop(1, "rgba(0,0,0,0)");
      // Fill with gradient
      canvas.globalAlpha = 0.16;
      canvas.fillStyle = grd;
      canvas.fillRect(0, 0, tela.width, tela.height);
    }

    function blur(ctx, canvas, amt) {
    
    
      // ctx.filter = `blur(${amt}px)`
      // ctx.drawImage(canvas, 0, 0)
      // ctx.filter = 'none'
    }

    function update() {
    
    
      clear();
      particles = particles.filter(function (p) {
    
    
        return p.move();
      });
      microparticles = microparticles.filter(function (mp) {
    
    
        return mp.move();
      });
      requestAnimationFrame(update.bind(this));
    }

    function createCanvas(properties) {
    
    
      let canvas = document.createElement("canvas");
      canvas.width = properties.width;
      //   canvas.style.zIndex = 999;
      canvas.height = properties.height;
      let context = canvas.getContext("2d");
      return {
    
    
        canvas: canvas,
        context: context,
      };
    }
    update();
  </script>
  <!--爱心js  -->
  <script>
    /*
     * Settings
     */
    var settings = {
    
    
      particles: {
    
    
        length: 500, // maximum amount of particles
        duration: 2, // particle duration in sec
        velocity: 100, // particle velocity in pixels/sec
        effect: -0.75, // play with this for a nice effect
        size: 30, // particle size in pixels
      },
    };

    /*
     * RequestAnimationFrame polyfill by Erik M?ller
     */
    (function () {
    
    
      var b = 0;
      var c = ["ms", "moz", "webkit", "o"];
      for (var a = 0; a < c.length && !window.requestAnimationFrame; ++a) {
    
    
        window.requestAnimationFrame = window[c[a] + "RequestAnimationFrame"];
        window.cancelAnimationFrame =
          window[c[a] + "CancelAnimationFrame"] ||
          window[c[a] + "CancelRequestAnimationFrame"];
      }
      if (!window.requestAnimationFrame) {
    
    
        window.requestAnimationFrame = function (h, e) {
    
    
          var d = new Date().getTime();
          var f = Math.max(0, 16 - (d - b));
          var g = window.setTimeout(function () {
    
    
            h(d + f);
          }, f);
          b = d + f;
          return g;
        };
      }
      if (!window.cancelAnimationFrame) {
    
    
        window.cancelAnimationFrame = function (d) {
    
    
          clearTimeout(d);
        };
      }
    })();

        while (
          particles[firstActive].age >= duration &&
          firstActive != firstFree
        ) {
    
    
          firstActive++;
          if (firstActive == particles.length) firstActive = 0;
        }
      };
      ParticlePool.prototype.draw = function (context, image) {
    
    
        // draw active particles
        if (firstActive < firstFree) {
    
    
          for (i = firstActive; i < firstFree; i++)
            particles[i].draw(context, image);
        }
        if (firstFree < firstActive) {
    
    
          for (i = firstActive; i < particles.length; i++)
            particles[i].draw(context, image);
          for (i = 0; i < firstFree; i++) particles[i].draw(context, image);
        }
      };
      return ParticlePool;
    })();

      // handle (re-)sizing of the canvas
      function onResize() {
    
    
        canvas.width = canvas.clientWidth;
        canvas.height = canvas.clientHeight;
      }
      window.onresize = onResize;

      // delay rendering bootstrap
      setTimeout(function () {
    
    
        onResize();
        render();
      }, 10);
    })(document.getElementById("pinkboard"));
  </script>

  <!-- 星空js -->
  <script>
    window.requestAnimationFrame =
      window.requestAnimationFrame ||
      window.mozRequestAnimationFrame ||
      window.webkitRequestAnimationFrame ||
      window.msRequestAnimationFrame;

    var starDensity = 0.216;
    var speedCoeff = 0.05;
    var width;
    var height;
    var starCount;
    var circleRadius;
    var circleCenter;
    var first = true;
    var giantColor = "180,184,240";
    var starColor = "226,225,142";
    var cometColor = "226,225,224";
    var canva = document.getElementById("universe");
    canva.style.zIndex = 200;
    var stars = [];

    windowResizeHandler();
    window.addEventListener("resize", windowResizeHandler, false);

    createUniverse();

    function createUniverse() {
    
    
      universe = canva.getContext("2d");

      for (var i = 0; i < starCount; i++) {
    
    
        stars[i] = new Star();
        stars[i].reset();
      }

      draw();
    }


    function windowResizeHandler() {
    
    
      width = window.innerWidth;
      height = window.innerHeight;
      starCount = width * starDensity;
      circleRadius = width > height ? height / 2 : width / 2;
      circleCenter = {
    
    
        x: width / 2,
        y: height / 2,
      };

      canva.setAttribute("width", width);
      canva.setAttribute("height", height);
    }
         ...
  完整代码可在文章 ↓ 下方公众号获取
  </script>

前端 零基础 入门到高级教学 (视频+源码+开发软件+学习资料+面试题) 一整套

在这里插入图片描述

1.看到这里了就 [点赞+好评+收藏] 支持下吧,你的「点赞,好评,收藏」是我创作的动力。

2.关注我~ 每天带你学习 :各种前端插件、3D炫酷效果、图片展示、文字效果、以及整站模板 、大学生毕业设计模板 等! 「在这里有好多 前端 开发者,会讨论 前端 Node 知识,互相学习」!

3.以上内容技术相关问题可以留言/私信交流,也可以关注↓下方公众号 获取更多源码 !

在这里插入图片描述

更多源码

❤女朋友生日❤ HTML+css3+js 实现抖音炫酷樱花3D相册 (含背景音乐)程序员表白必备

❤炫酷烟花表白❤ html+css+js 放一场浪漫烟花秀(含音乐) 程序员表白

Html+Js+Css+Canvas 实现炫酷烟花表白❤ (云雾状粒子文字3D动画自动切换,支持自定义文字动画切换特效)/ 程序员表白必备

100套❤vue/react+echarts❤ 大屏可视化数据平台实战项目分享 (附源码)

❤七夕情人节❤html+css+js 漫天飞雪3D相册(含音乐自定义文字) 程序员表白必备

❤唯美满天星❤ html+css+js炫酷3D相册(含音乐可自定义文字)程序员表白必备

❤html+css+js❤ 白云飘动3D相册(含音乐)程序员表白必备

❤[前端永久免费部署上线工具] 解决不需要服务器就能将项目部署上线问题!

这个冬天, 我是这样表白的 ❉html+css+js❉ 绘制冬季下雪3D相册 (521程序员表白代码大公开)

❤程序猿的我向女友求婚❤, 我用代码给女朋友送了一个礼物「可以拿去送给自己喜欢的人」

抖音❤超火| html+css+js 流星雨3D相册(表白必备)制作教程来啦!

❤爱情墙❤html5+css3+js 实现全屏七夕表白页面 (可自定义文字相片)

html+css+js 幻化3D相册 (含背景音乐)程序员表白必备 /520/七夕情人节

新年祝福❤雪花飘落❤ html+css3+js 实现3D相册开关闭合旋转(情人节生日表白)必备

前端❤ html+css+js 实现1000个超炫酷特效(附源码)

web前端❤基于html+css+js 仿JD天猫电商平台功能齐全(免费附源码)

抖音超火❤ html+css+js 实现炫酷3D立方图像库(免费附源码)

抖音超火❤ html+css+js 实现炫酷3D魔方(免费附源码)

抖音超火❤流动爱心 html+css+js (免费附源码)

抖音超火❤罗盘时钟html+css+js (免费附源码)

亲测有效❤抖音视频去水印 ( 附源码| 仅供学习参考)

css3 实现3D旋转立方体(免费附源码)

css3 实现3D立体时钟(免费附源码)

❤雪花飘落❤ html+css+js实现2021新年倒计时特效(附源码)

七夕情人节 ❤html+css+j❤实现满屏爱心特效(程序员表白)

一款乾坤八卦风水罗盘旋转CSS3动画,给人一种玄机重重的感觉(附源码)

520表白/七夕/情人节/求婚/脱单 Html+Js+Css 实现雪花爱心❤ (可自定义文字/音乐)/ 程序员表白必备

520程序员求婚 Html+Js+Css花瓣相册❤ (爱心3D动画,自定义文字)/ 程序员表白必备

520撩妹必备❤手摸手教你撸一个,相册代码

html+css+js 实现(3D梦幻浮心) 超炫特效

微信公众号开发 ❤一篇就够 [推荐收藏]

微信小程序入门教学❤ 手摸手撸小程序,一篇就够!

猜你喜欢

转载自blog.csdn.net/weixin_54234482/article/details/115085973