首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >动态爱心

动态爱心

作者头像
千山暮海雪
发布于 2024-12-25 10:49:36
发布于 2024-12-25 10:49:36
8100
代码可运行
举报
文章被收录于专栏:xcdhxcdh
运行总次数:0
代码可运行

New Document

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<style>
  html, body {
    height: 100%;
    padding: 0;
    margin: 0;
    background: #000;
  }
  canvas {
    position: absolute;
    width: 100%;
    height: 100%;
  }
</style>
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<canvas id="pinkboard"></canvas>
<script>
  /*

Settings */

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 */

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(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)}}}());
  /*
  * Point class
  */
  var Point = (function() {
  function Point(x, y) {
  this.x = (typeof x !== 'undefined') ? x : 0;
  this.y = (typeof y !== 'undefined') ? y : 0;
  }
  Point.prototype.clone = function() {
  return new Point(this.x, this.y);
  };
  Point.prototype.length = function(length) {
  if (typeof length == 'undefined')
  return Math.sqrt(this.x * this.x + this.y * this.y);
  this.normalize();
  this.x *= length;
  this.y *= length;
  return this;
  };
  Point.prototype.normalize = function() {
  var length = this.length();
  this.x /= length;
  this.y /= length;
  return this;
  };
  return Point;
  })();
  /*
  * Particle class
  */
  var Particle = (function() {
  function Particle() {
  this.position = new Point();
  this.velocity = new Point();
  this.acceleration = new Point();
  this.age = 0;
  }
  Particle.prototype.initialize = function(x, y, dx, dy) {
  this.position.x = x;
  this.position.y = y;
  this.velocity.x = dx;
  this.velocity.y = dy;
  this.acceleration.x = dx * settings.particles.effect;
  this.acceleration.y = dy * settings.particles.effect;
  this.age = 0;
  };
  Particle.prototype.update = function(deltaTime) {
  this.position.x += this.velocity.x * deltaTime;
  this.position.y += this.velocity.y * deltaTime;
  this.velocity.x += this.acceleration.x * deltaTime;
  this.velocity.y += this.acceleration.y * deltaTime;
  this.age += deltaTime;
  };
  Particle.prototype.draw = function(context, image) {
  function ease(t) {
  return (--t) * t * t + 1;
  }
  var size = image.width * ease(this.age / settings.particles.duration);
  context.globalAlpha = 1 - this.age / settings.particles.duration;
  context.drawImage(image, this.position.x - size / 2, this.position.y - size / 2, size, size);
  };
  return Particle;
  })();
  /*
  * ParticlePool class
  */
  var ParticlePool = (function() {
  var particles,
  firstActive = 0,
  firstFree = 0,
  duration = settings.particles.duration;
  function ParticlePool(length) {
  // create and populate particle pool
  particles = new Array(length);
  for (var i = 0; i < particles.length; i++)
  particles[i] = new Particle();
  }
  ParticlePool.prototype.add = function(x, y, dx, dy) {
  particles[firstFree].initialize(x, y, dx, dy);
  // handle circular queue
  firstFree++;
  if (firstFree == particles.length) firstFree = 0;
  if (firstActive == firstFree ) firstActive++;
  if (firstActive == particles.length) firstActive = 0;
  };
  ParticlePool.prototype.update = function(deltaTime) {
  var i;
  // update active particles
  if (firstActive < firstFree) {
  for (i = firstActive; i < firstFree; i++)
  particles[i].update(deltaTime);
  }
  if (firstFree < firstActive) {
  for (i = firstActive; i < particles.length; i++)
  particles[i].update(deltaTime);
  for (i = 0; i < firstFree; i++)
  particles[i].update(deltaTime);
  }
  // remove inactive particles
  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;
  })();
  /*
  * Putting it all together
  */
  (function(canvas) {
  var context = canvas.getContext('2d'),
  particles = new ParticlePool(settings.particles.length),
  particleRate = settings.particles.length / settings.particles.duration, // particles/sec
  time;
  // get point on heart with -PI <= t <= PI
  function pointOnHeart(t) {
  return new Point(
  160 * Math.pow(Math.sin(t), 3),
  130 * Math.cos(t) - 50 * Math.cos(2 * t) - 20 * Math.cos(3 * t) - 10 * Math.cos(4 * t) + 25
  );
  }
  // creating the particle image using a dummy canvas
  var image = (function() {
  var canvas = document.createElement('canvas'),
  context = canvas.getContext('2d');
  canvas.width = settings.particles.size;
  canvas.height = settings.particles.size;
  // helper function to create the path
  function to(t) {
  var point = pointOnHeart(t);
  point.x = settings.particles.size / 2 + point.x * settings.particles.size / 350;
  point.y = settings.particles.size / 2 - point.y * settings.particles.size / 350;
  return point;
  }
  // create the path
  context.beginPath();
  var t = -Math.PI;
  var point = to(t);
  context.moveTo(point.x, point.y);
  while (t < Math.PI) {
  t += 0.01; // baby steps!
  point = to(t);
  context.lineTo(point.x, point.y);
  }
  context.closePath();
  // create the fill
  context.fillStyle = '#ea80b0';
  context.fill();
  // create the image
  var image = new Image();
  image.src = canvas.toDataURL();
  return image;
  })();
  // render that thing!
  function render() {
  // next animation frame
  requestAnimationFrame(render);
  // update time
  var newTime = new Date().getTime() / 1000,
  deltaTime = newTime - (time || newTime);
  time = newTime;
  // clear canvas
  context.clearRect(0, 0, canvas.width, canvas.height);
  // create new particles
  var amount = particleRate * deltaTime;
  for (var i = 0; i < amount; i++) {
  var pos = pointOnHeart(Math.PI - 2 * Math.PI * Math.random());
  var dir = pos.clone().length(settings.particles.velocity);
  particles.add(canvas.width / 2 + pos.x, canvas.height / 2 - pos.y, dir.x, -dir.y);
  }
  // update and draw particles
  particles.update(deltaTime);
  particles.draw(context, image);
  }
  // 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>
  </BODY>
  </HTML>

演示:aixin.mov

BYV.png
BYV.png
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-12-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
复制粘贴-实现动态爱心 网页版
上一篇的python爱心代码有很多读者反馈不会用。 本篇来一个小白版的,无需会代码,有浏览器就可以。 复制以下内容,保存为.html文件,双击打开即可出现动态爱心 <!DOCTYPE html> <html> <head> <title></title> <script src="js/jquery.min.js"></script> </head> <style> * { padding: 0; margin: 0; }
小黑同学
2022/11/16
2.4K0
复制粘贴-实现动态爱心 网页版
【双十一特辑】爱心代码(程序员的浪漫)-李峋
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),字体色)
天寒雨落
2022/11/20
5.4K0
【双十一特辑】爱心代码(程序员的浪漫)-李峋
HTML5 Canvas炫酷的火焰风暴动画
今天给大家分享一个用Canvas写的火焰风暴动画,实现效果如下: 怎么样,场面是不是很壮观,下面是代码实现,欢迎大家复制粘贴和吐槽。 <!DOCTYPE html> <html lang="zh-cn
越陌度阡
2020/11/26
2.4K0
HTML5 Canvas炫酷的火焰风暴动画
❤️创意网页:HTML5,canvas创作科技感粒子特效(科技感粒子、js鼠标跟随、粒子连线)
首先,我们来看一下HTML结构。代码中只有一个<canvas>元素,这是我们用来绘制粒子特效的画布。我们也可以通过给<canvas>元素设置背景图片来增加更多的效果。
命运之光
2024/03/20
2.8K0
❤️创意网页:HTML5,canvas创作科技感粒子特效(科技感粒子、js鼠标跟随、粒子连线)
两种过年烟花,你喜欢哪一种(HTML+CSS+JS)
🎇两种过年烟花,你喜欢哪一种🎇(HTML+CSS+JS)  目录 🎇两种过年烟花,你喜欢哪一种🎇(HTML+CSS+JS)  效果一 效果二 效果一 <!doctype html> <html> <head> <meta charset="utf-8"> <title>HTML5炫酷喜庆全屏烟花动画特效</title> <style> /* basic styles for black background and crosshair cursor */ body { background: #
红目香薰
2022/11/29
1.1K0
两种过年烟花,你喜欢哪一种(HTML+CSS+JS)
绚丽烟花:HTML5 Canvas 烟花效果实现(文末附完整代码)
在节日或特殊场合,绚丽的烟花总能带来无尽的欢乐和惊喜。今天,我们将通过 HTML5 Canvas 实现一个绚丽的烟花效果,让你的网页也能绽放出美丽的烟花。
码事漫谈
2025/01/27
1.3K1
绚丽烟花:HTML5 Canvas 烟花效果实现(文末附完整代码)
❤️创意网页:创建更炫酷的动态网页——彩色数字(1到9)粒子动画
在这篇技术博客中,我们将学习如何创建一个令人惊叹的动态网页效果。我们将使用HTML5的Canvas元素和JavaScript来实现一个彩色数字粒子动画。这个动画将在浏览器中展示一组随机位置和颜色的彩色数字粒子,它们将以不同的速度从画布顶部飘落至底部,并循环重新开始,形成一个华丽的视觉效果。
命运之光
2024/03/20
5410
❤️创意网页:创建更炫酷的动态网页——彩色数字(1到9)粒子动画
❤️创意网页:绚丽粒子炸裂特效①(真的超好看)超好看的粒子交互跟随效果~彩色随机粒子爆裂
在现代互联网时代,用户对于网页的要求越来越高,除了内容的丰富和易读性外,视觉效果也成为吸引用户的重要因素之一。本文将向您展示如何利用HTML5和JavaScript创建一个视觉效果震撼的交互式网页,让您的网站在视觉上脱颖而出,吸引更多访问者。
命运之光
2024/03/20
5140
❤️创意网页:绚丽粒子炸裂特效①(真的超好看)超好看的粒子交互跟随效果~彩色随机粒子爆裂
酷炫一款动态背景(HTML +js canvas)
                                     一款酷炫的前端动态页面     废话不多说 ,分享一款酷炫的页面动态背景 效果见下图。     查看  demo 背景图效果: 实例效果  点击效果: 背景css *{ margin: 0; padding: 0; } #canvas{ position: fixed; background: #ccc; overflow: auto;
Fivecc
2022/11/21
7K0
酷炫一款动态背景(HTML +js canvas)
❤️创意网页:创意视觉效果粒子循环的网页动画
在这篇技术博客中,我们将学习如何使用HTML5 Canvas和JavaScript创建一个视觉效果震撼的网页动画。我们将绘制一组随机颜色和运动的粒子,通过鼠标的移动产生交互效果,营造出一个令人惊叹的视觉效果。本项目将为您展示如何利用Canvas绘制动态粒子效果,并实现鼠标交互效果的加持。
命运之光
2024/03/20
3170
❤️创意网页:创意视觉效果粒子循环的网页动画
❤️创意网页:绚丽粒子雨动画
欢迎来到本篇技术博客!今天,我们将一起学习如何使用 HTML、CSS 和 JavaScript 来创造一个更炫酷的动态网页示例。我们将在网页中添加许多随机颜色的粒子,让它们以不同的速度在画布上飘动,形成一个美妙的粒子效果。让我们开始吧!
命运之光
2024/03/20
3260
❤️创意网页:绚丽粒子雨动画
深圳Java培训:使用JS实现简单喷泉效果
最近,在教学生使用JS的基本操作,为了练习JS的基本作用,特地写了一个喷泉效果,代码如下:
深圳java培训技术
2019/07/08
1.5K0
深圳Java培训:使用JS实现简单喷泉效果
❤️创意网页:震撼视觉效果2(真的十分好看) - 创造炫酷的粒子动画
欢迎来到本篇技术博客!今天,我们将一起学习如何使用HTML5 Canvas和JavaScript创造震撼的视觉效果。我们将绘制彩色粒子,使其在鼠标移动的轨迹上生成,形成炫酷的粒子动画。让我们开始吧!
命运之光
2024/03/20
2790
❤️创意网页:震撼视觉效果2(真的十分好看) - 创造炫酷的粒子动画
快过年了,用五种不同的JS特效带你看烟花(包邮送元宇宙图书)
雪花 、 樱花 、 浪漫贺卡 以及 圣诞树 我前段时间刚做过,感兴趣的也可以看看我前几期的博客:
海拥
2022/04/13
2K0
快过年了,用五种不同的JS特效带你看烟花(包邮送元宇宙图书)
那些年下过的大雨
想了解一下用纯CSS和JS怎么实现一段下雨的动画,于是去CodePen上面搜了一下,发现了很多很有意思的东西。有空可以常去上面逛逛,在对技术产生敬畏的同时也能学到好多好多东西。以下是自己理解的几个代码实现过程,所有源码均出自于CodePen。 代码:github 效果:http://rynxiao.com/The-heavy-rain-in-those-years/ PS: 所有效果均在代码中以注释形式给出,不再额外进行补充,如果想了解更多细节,麻烦参考源码 淅沥淅沥 像一阵细雨打湿你心田,那感觉如此甜蜜。
糊糊糊糊糊了
2018/05/09
8930
❤️创意网页:文字和祝福语:创意的粒子效果网页(❤️好看好用❤️)HTML+CSS+JS
文字和祝福语是我们日常生活中表达情感和传递祝福的重要方式。为了让这些文字和祝福语更加生动和有趣,我设计了一个创意的网页,通过动态效果和互动性,为用户带来与众不同的体验。
命运之光
2024/03/20
5350
❤️创意网页:文字和祝福语:创意的粒子效果网页(❤️好看好用❤️)HTML+CSS+JS
《现代Javascript高级教程》优化动画和渲染的利器
在Web开发中,实现平滑且高性能的动画和渲染是一个关键的需求。而requestAnimationFrame是浏览器提供的一个用于优化动画和渲染的API。它可以协调浏览器的刷新率,帮助开发者实现流畅的动画效果,并提供更高效的渲染方式。本文将详细介绍requestAnimationFrame的属性、应用场景以及使用示例,帮助读者深入理解和应用这一强大的工具。
linwu
2023/07/27
3070
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+d
由于看到C站有个任务是上传新年主题相关的代码可以+6分,为了这6分必须拼一下子,要知道C站挣6分是有多么难的,优雅草央千澈是要冲刺全国排名的人那必须去争取一下,ok我们废话不多说开始实战吧,本次开发技术栈采用html5+div+CSS+JavaScript,用html给写一个新年放烟花并且领取一个随机新年礼物的小代码供大家送给自己心上人礼物-为了完成C站的新年主题任务-优雅草央千澈-做一条关于新年的代码分享给你们,章节共计5篇。
卓伊凡
2025/01/20
1430
❤️创意网页:HTML5 Canvas技术实现绚丽多彩的烟花特效
烟花特效一直以来都是网页设计中的热门元素之一,它能够为用户带来视觉上的愉悦和惊喜。在这篇技术博客中,我们将使用HTML5 Canvas和JavaScript来实现一个绚丽多彩的烟花特效。我们将逐步解释代码的不同部分,介绍如何利用Canvas API和动画效果来创造这个引人注目的效果。
命运之光
2024/03/20
8830
❤️创意网页:HTML5 Canvas技术实现绚丽多彩的烟花特效
粒子风暴代码
视屏: http://mpvideo.qpic.cn/0bf2zmaaoaaavqai4xq3l5pvbs6da7fqabya.f10002.mp4?dis_k=0e7c7dd616e57e0b6fb
紫禁玄科
2022/03/24
9620
推荐阅读
复制粘贴-实现动态爱心 网页版
2.4K0
【双十一特辑】爱心代码(程序员的浪漫)-李峋
5.4K0
HTML5 Canvas炫酷的火焰风暴动画
2.4K0
❤️创意网页:HTML5,canvas创作科技感粒子特效(科技感粒子、js鼠标跟随、粒子连线)
2.8K0
两种过年烟花,你喜欢哪一种(HTML+CSS+JS)
1.1K0
绚丽烟花:HTML5 Canvas 烟花效果实现(文末附完整代码)
1.3K1
❤️创意网页:创建更炫酷的动态网页——彩色数字(1到9)粒子动画
5410
❤️创意网页:绚丽粒子炸裂特效①(真的超好看)超好看的粒子交互跟随效果~彩色随机粒子爆裂
5140
酷炫一款动态背景(HTML +js canvas)
7K0
❤️创意网页:创意视觉效果粒子循环的网页动画
3170
❤️创意网页:绚丽粒子雨动画
3260
深圳Java培训:使用JS实现简单喷泉效果
1.5K0
❤️创意网页:震撼视觉效果2(真的十分好看) - 创造炫酷的粒子动画
2790
快过年了,用五种不同的JS特效带你看烟花(包邮送元宇宙图书)
2K0
那些年下过的大雨
8930
❤️创意网页:文字和祝福语:创意的粒子效果网页(❤️好看好用❤️)HTML+CSS+JS
5350
《现代Javascript高级教程》优化动画和渲染的利器
3070
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+d
1430
❤️创意网页:HTML5 Canvas技术实现绚丽多彩的烟花特效
8830
粒子风暴代码
9620
相关推荐
复制粘贴-实现动态爱心 网页版
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档