我的编程空间,编程开发者的网络收藏夹
学习永远不晚

JavaScript怎么实现外溢动态爱心的效果

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

JavaScript怎么实现外溢动态爱心的效果

本篇内容介绍了“JavaScript怎么实现外溢动态爱心的效果”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

效果演示

JavaScript怎么实现外溢动态爱心的效果

源码介绍

(    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)}                    }            }    ());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;})();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;})();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;})();(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.class="lazy" data-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'));

“JavaScript怎么实现外溢动态爱心的效果”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

JavaScript怎么实现外溢动态爱心的效果

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

JavaScript怎么实现外溢动态爱心的效果

本篇内容介绍了“JavaScript怎么实现外溢动态爱心的效果”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!效果演示源码介绍( fun
2023-06-29

python怎么实现爱心效果

本篇内容介绍了“python怎么实现爱心效果”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!图形都是由一系列的点(X,Y)构成的曲线,由于X,
2023-06-02

HTML+JS实现爱心动画效果的源码分享

最近在热播影剧《点燃我,温暖你》中有个片段是男主人公李峋通过代码实现了一个爱心动画的效果。在本文中,将利用HTML+CSS+JS实现同款效果,需要的可以尝试一下
2022-11-13

JavaScript怎么实现生成动态表格和动态效果

本篇内容介绍了“JavaScript怎么实现生成动态表格和动态效果”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!代码:
2023-06-29

JavaScript怎么实现模态框拖拽效果

这篇文章主要介绍“JavaScript怎么实现模态框拖拽效果”,在日常操作中,相信很多人在JavaScript怎么实现模态框拖拽效果问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JavaScript怎么实现模
2023-06-22

JavaScript怎么实现长图滚动效果

小编给大家分享一下JavaScript怎么实现长图滚动效果,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!JavaScript是什么JavaScript是一种直译式的脚本语言,其解释器被称为JavaScript引擎,是浏览器
2023-06-14

Java中怎么实现动态日历效果

本篇文章为大家展示了Java中怎么实现动态日历效果,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。题目:动态日历输入年份,月份,显示当前月份日历布局分析实现日历的基本思想为:确定一个基准日期,计算从基
2023-06-20

vue怎么实现动态的选中状态切换效果

这篇文章主要介绍了vue怎么实现动态的选中状态切换效果的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue怎么实现动态的选中状态切换效果文章都会有所收获,下面我们一起来看看吧。动态选中状态切换效果 HTML中的
2023-06-30

ppt怎么设置动态背景让背景实现动态效果

在PPT中设置动态背景实现动态效果,可以通过以下方法进行操作:1. 在PPT中选择“设计”选项卡,然后点击“背景样式”下的“格式背景”。2. 在弹出的“格式背景”对话框中,选择“填充效果”选项卡。3. 在“填充效果”选项卡中,选择“渐变”或
2023-09-20

Android怎么实现点汇聚成字的动态效果

本篇内容主要讲解“Android怎么实现点汇聚成字的动态效果”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Android怎么实现点汇聚成字的动态效果”吧!点阵在讲解代码实现之前,我们先科普一个知
2023-07-02

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录