全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

canvas实现爱心和彩虹雨效果

效果图:

代码如下:

<!doctype html>
 <html>
 <head>
 <meta charset="utf-8">
 <title></title>
 </head>
 <body>
 <canvas id="canvas"></canvas>
 <script>
 var canvas = document.getElementById('canvas'),
 ctx = canvas.getContext('2d'),
 canvasW = canvas.width = window.innerWidth,
 canvasH = canvas.height = window.innerHeight,
 canvasWHalf = canvasW / 2,
 canvasHHalf = canvasH / 2,
 xoff = canvasWHalf - 306,
 yoff = 50,
 bg = '00061a',
 id = 0,
 raindrops = [],
 minSize = 1,
 maxSize = 4,
 minSpeed = 5,
 maxSpeed = 20,
 minHue = 0,
 maxHue = 360,
 maxAmount = 50;
 function random(min, max) {
 if (arguments.length < 2) {
  max = min;
  min = 0;
 }
 return Math.floor(Math.random() * (max - min) + min);
 }
 function hexToRGB(hex, opacity) {
 var rgb = '';
 hex.match(/.{2}/g).forEach(function(n) {
  rgb += (parseInt(n, 16)) + ',';
 });
 return 'rgba(' + rgb + opacity + ')';
 }
 function draw() {
 // Heart
 ctx.fillStyle = hexToRGB(bg, '0.1');
 ctx.beginPath();
 // Left half
 ctx.moveTo(0, 0);
 ctx.lineTo(canvasWHalf, 0);
 ctx.lineTo(304 + xoff, 97 + yoff);
 ctx.bezierCurveTo(282 + xoff, -5 + yoff, 80 + xoff, -6 + yoff, 76 + xoff, 165 + yoff);
 ctx.bezierCurveTo(74 + xoff, 251 + yoff, 184 + xoff, 300 + yoff, 304 + xoff, 447 + yoff);
 ctx.lineTo(canvasWHalf, canvasH);
 ctx.lineTo(0, canvasH);
 // Right half
 ctx.moveTo(canvasW, 0);
 ctx.lineTo(canvasWHalf, 0);
 ctx.lineTo(304 + xoff, 97 + yoff);
 ctx.bezierCurveTo(326 + xoff, 5 + yoff, 528 + xoff, 6 + yoff, 532 + xoff, 165 + yoff);
 ctx.bezierCurveTo(534 + xoff, 251 + yoff, 424 + xoff, 300 + yoff, 304 + xoff, 447 + yoff);
 ctx.lineTo(canvasWHalf, canvasH);
 ctx.lineTo(canvasW, canvasH);
 ctx.closePath();
 ctx.fill();
 // Raindrops
 for (var i = 1; i < id; i++) {
  raindrops[i].fall();
 };
 }
 var Raindrop = function() {
 id++;
 this.y = random(-canvasH);
 this.x = random(canvasW);
 this.size = random(minSize, maxSize);
 this.speed = random(minSpeed, maxSpeed);
 this.color = 'hsl(' + random(minHue, maxHue) + ',100%,55%)';
 this.origColor = this.color;
 this.id = id;
 raindrops[id] = this;
 };
 Raindrop.prototype.fall = function() {
 this.y += this.speed;
 if (this.y >= canvasH) {
  this.y = random(-canvasH);
  this.x = random(canvasW);
 }
 ctx.save();
 ctx.beginPath();
 var gradient = ctx.createRadialGradient(this.x, this.y, 0, this.x, this.y, this.size);
 gradient.addColorStop(0, '#fff');
 gradient.addColorStop(0.5, this.color);
 gradient.addColorStop(1, hexToRGB(bg, 0));
 ctx.rect(this.x, this.y, this.size, maxSpeed);
 ctx.fillStyle = gradient;
 ctx.fill();
 ctx.closePath();
 ctx.restore();
 };
 (function init() {
 ctx.fillStyle = '#' + bg;
 ctx.fillRect(0, 0, canvasW, canvasH);
 for (var i = 0; i < maxAmount; i++) {
  new Raindrop();
 }
 }());
 function animate() {
 draw();
 window.requestAnimationFrame(animate);
 }
 window.requestAnimationFrame(animate);
 function mouseTrail(x, y) {
 ctx.save();
 ctx.globalCompositeOperation = 'overlay';
 ctx.fillStyle = 'rgba(255,255,255,0.1)';
 ctx.arc(x, y, 50, 0, Math.PI * 2);
 ctx.fill();
 ctx.restore();
 }
 window.addEventListener('mousemove', function(cursor) {
 mouseTrail(cursor.x, cursor.y);
 });
 </script>
 </body>
</html>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!


# canvas绘制爱心  # canvas画彩虹  # canvas+gif.js打造自己的数字雨头像的示例代码  # canvas实现流星雨的背景效果  # JS+Canvas 实现下雨下雪效果  # JavaScript canvas实现雨滴特效  # raindrops  # minSize  # bg  # maxSpeed  # maxSize  # minSpeed  # canvasWHalf  # canvasHHalf  # height  # innerHeight  # yoff  # xoff  # return  # Math  # arguments  # length  # hex  # opacity  # floor  # hexToRGB 


相关文章: 网站制作免费,什么网站能看正片电影?  股票网站制作软件,网上股票怎么开户?  如何在阿里云高效完成企业建站全流程?  建站主机如何选?高性价比方案全解析  网站制作难吗安全吗,做一个网站需要多久时间?  头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?  天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?  ,网页ppt怎么弄成自己的ppt?  建站之星后台密码遗忘如何找回?  C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)  如何在香港免费服务器上快速搭建网站?  如何处理“XML格式不正确”错误 常见XML well-formed问题解决方法  SQL查询语句优化的实用方法总结  如何在服务器上配置二级域名建站?  黑客如何通过漏洞一步步攻陷网站服务器?  如何通过网站建站时间优化SEO与用户体验?  网站制作知乎推荐,想做自己的网站用什么工具比较好?  清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?  建站主机类型有哪些?如何正确选型  建站VPS选购需注意哪些关键参数?  北京网站制作网页,网站升级改版需要多久?  建站之星在线客服如何快速接入解答?  制作网页的网站有哪些,电脑上怎么做网页?  如何快速上传自定义模板至建站之星?  建站之星安装后界面空白如何解决?  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  山东网站制作公司有哪些,山东大源集团官网?  深圳网站制作培训,深圳哪些招聘网站比较好?  云南网站制作公司有哪些,云南最好的招聘网站是哪个?  详解jQuery停止动画——stop()方法的使用  如何在阿里云通过域名搭建网站?  齐河建站公司:营销型网站建设与SEO优化双核驱动策略  广州建站公司哪家好?十大优质服务商推荐  建站主机选哪种环境更利于SEO优化?  济南网站建设制作公司,室内设计网站一般都有哪些功能?  建站主机是什么?如何选择适合的建站主机?  建站之星展会模版如何一键下载生成?  建站之星24小时客服电话如何获取?  湖州网站制作公司有哪些,浙江中蓝新能源公司官网?  c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】  如何选择CMS系统实现快速建站与SEO优化?  如何在阿里云域名上完成建站全流程?  如何续费美橙建站之星域名及服务?  孙琪峥织梦建站教程如何优化数据库安全?  动图在线制作网站有哪些,滑动动图图集怎么做?  网站制作壁纸教程视频,电脑壁纸网站?  百度网页制作网站有哪些,谁能告诉我百度网站是怎么联系?  建站上市公司网站建设方案与SEO优化服务定制指南  SAX解析器是什么,它与DOM在处理大型XML文件时有何不同?  如何高效利用200m空间完成建站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。