特效描述:html5 canvas全屏 520爱心表白 网页代码。html5 canvas制作520表白日,全屏的爱心和表白语网页动画代码,浪漫的520爱心表白动画特效。

代码结构

1. HTML代码

var hearts = [];

var canvas = document.getElementById('drawHeart');

var wW = window.innerWidth;

var wH = window.innerHeight;

// 创建画布

var ctx = canvas.getContext('2d');

// 创建图片对象

var heartImage = new Image();

heartImage.src = 'img/heart.svg';

var num = 100;

init();

window.addEventListener('resize', function(){

wW = window.innerWidth;

wH = window.innerHeight;

});

// 初始化画布大小

function init(){

canvas.width = wW;

canvas.height = wH;

for(var i = 0; i < num; i++){

hearts.push(new Heart(i%5));

}

requestAnimationFrame(render);

}

function getColor(){

var val = Math.random() * 10;

if(val > 0 && val <= 1){

return '#00f';

} else if(val > 1 && val <= 2){

return '#f00';

} else if(val > 2 && val <= 3){

return '#0f0';

} else if(val > 3 && val <= 4){

return '#368';

} else if(val > 4 && val <= 5){

return '#666';

} else if(val > 5 && val <= 6){

return '#333';

} else if(val > 6 && val <= 7){

return '#f50';

} else if(val > 7 && val <= 8){

return '#e96d5b';

} else if(val > 8 && val <= 9){

return '#5be9e9';

} else {

return '#d41d50';

}

}

function getText(){

var val = Math.random() * 10;

if(val > 1 && val <= 3){

return '爱你一辈子';

} else if(val > 3 && val <= 5){

return '感谢你';

} else if(val > 5 && val <= 8){

return '喜欢你';

} else{

return 'I Love You';

}

}

function Heart(type){

this.type = type;

// 初始化生成范围

this.x = Math.random() * wW;

this.y = Math.random() * wH;

this.opacity = Math.random() * .5 + .5;

// 偏移量

this.vel = {

x: (Math.random() - .5) * 5,

y: (Math.random() - .5) * 5

}

this.initialW = wW * .5;

this.initialH = wH * .5;

// 缩放比例

this.targetScale = Math.random() * .15 + .02; // 最小0.02

this.scale = Math.random() * this.targetScale;

// 文字位置

this.fx = Math.random() * wW;

this.fy = Math.random() * wH;

this.fs = Math.random() * 10;

this.text = getText();

this.fvel = {

x: (Math.random() - .5) * 5,

y: (Math.random() - .5) * 5,

f: (Math.random() - .5) * 2

}

}

Heart.prototype.draw = function(){

ctx.save();

ctx.globalAlpha = this.opacity;

ctx.drawImage(heartImage, this.x, this.y, this.width, this.height);

ctx.scale(this.scale + 1, this.scale + 1);

if(!this.type){

// 设置文字属性

ctx.fillStyle = getColor();

ctx.font = 'italic ' + this.fs + 'px sans-serif';

// 填充字符串

ctx.fillText(this.text, this.fx, this.fy);

}

ctx.restore();

}

Heart.prototype.update = function(){

this.x += this.vel.x;

this.y += this.vel.y;

if(this.x - this.width > wW || this.x + this.width < 0){

// 重新初始化位置

this.scale = 0;

this.x = Math.random() * wW;

this.y = Math.random() * wH;

}

if(this.y - this.height > wH || this.y + this.height < 0){

// 重新初始化位置

this.scale = 0;

this.x = Math.random() * wW;

this.y = Math.random() * wH;

}

// 放大

this.scale += (this.targetScale - this.scale) * .1;

this.height = this.scale * this.initialH;

this.width = this.height * 1.4;

// -----文字-----

this.fx += this.fvel.x;

this.fy += this.fvel.y;

this.fs += this.fvel.f;

if(this.fs > 50){

this.fs = 2;

}

if(this.fx - this.fs > wW || this.fx + this.fs < 0){

// 重新初始化位置

this.fx = Math.random() * wW;

this.fy = Math.random() * wH;

}

if(this.fy - this.fs > wH || this.fy + this.fs < 0){

// 重新初始化位置

this.fx = Math.random() * wW;

this.fy = Math.random() * wH;

}

}

function render(){

ctx.clearRect(0, 0, wW, wH);

for(var i = 0; i < hearts.length; i++){

hearts[i].draw();

hearts[i].update();

}

requestAnimationFrame(render);

}

520表白html,html5 canvas全屏的520爱心表白网页代码相关推荐

  1. html5 canvas全屏变色波浪线条动画js特效

    下载地址 基于html5 canvas+js制作的全屏变色波浪线条动画特效,线条发光背景颜色变换效果. dd:

  2. js+html5 canvas全屏彩色条状海浪动画js特效

    下载地址 基于js+html5 canvas制作的一款好看的全屏彩色条状海浪动画特效. dd:

  3. 谷歌图标html5代码,HTML5 canvas绘制chrome浏览器 logo图标_网页代码站(www.webdm.cn)

    HTML5 canvas绘制chrome图标 使用canvas绘制chrome logo $ele:null, ele:null, context:null } $(function(){ oCanv ...

  4. HTML5怎么让图片和文字重叠,利用HTML5实现全屏图片文字过渡切换特效

    特效描述:利用HTML5实现 全屏图片 文字过渡 切换特效.利用HTML5实现全屏图片文字过渡切换特效 代码结构 1. 引入CSS 2. 引入JS 3. HTML代码  Masupitami Wal ...

  5. html星空代码在线,HTML5特效库 HTML5+JS全屏星空特效源码

    效果图 各位长友大家早上好! 今天给各位带来的是 HTML5+JS全屏星空特效源码! 有想要文件版源码的可以私聊小编哦! 废话不多说,上源码! CSS: body {margin:0 auto;ove ...

  6. html实现全屏效果原理,HTML5 实现全屏效果

    HTML5 实现全屏效果 点击进入全屏和点击退出全屏方法: //进入全屏 function requestFullScreen() { var de = document.documentElemen ...

  7. 表白源码全屏玫瑰java程序,表白源码全屏玫瑰

    表白源码全屏玫瑰是一款单身表白利器,让你能够通过手机就能够做到浪漫的表白,让你的表白几率大大增加,各种浪漫的表白源码一应俱全,喜欢的小伙伴们赶紧来网体验吧! [表白源码全屏玫瑰]简介 表白,或称告白意 ...

  8. html div全屏遮罩层,div遮罩层_Jquery全屏遮罩层DIV的实现代码

    摘要 腾兴网为您分享:Jquery全屏遮罩层DIV的实现代码,弈客围棋,壹学车,万科物业,万达普惠等软件知识,以及淘优优,天天爱学习,qq炫舞脚本,常熟农商银行网站,英文打字软件,抢工长,陌陌app, ...

  9. html乐谱播放器,html5 canvas音谱可视化mp3音乐播放器代码

    特效描述:html5 canvas 音谱可视化 mp3音乐 播放器代码.html5 canvas通过AudioContext对获取audio标签播放的音域和音高,调用js绘制相应高度的矩形或线条. 代 ...

最新文章

  1. [C++再学习系列] 引用和指针
  2. 拖拖拽拽画JAVA报表?
  3. 如何设计一个安全的登录流程
  4. Pytorch中RNN入门思想及实现
  5. linux iio 设备驱动,Linux设备驱动之IIO子系统——IIO框架数据读取-Go语言中文社区...
  6. 尼克老湿の面试回顾(7)
  7. Http和RPC区别
  8. 关于“数据加载中。。。”类似功能的实现
  9. 干货:io流带时间的聊天室【客户端与服务端】
  10. 网络工程制图论文计算机,计算机工程制图教学的课业评价的论文
  11. 20张图深度详解MAC地址表、ARP表、路由表
  12. 新系统软件著作权申请流程及注意事项
  13. android吸顶效果,RecyclerVIew实现悬浮吸顶效果
  14. 2022年前端面试题整理,持续更新中
  15. 【回眸】牛客网刷刷刷!嵌入式软件中也会遇到的嵌入式硬件,通讯,通讯协议专题(一)
  16. 预防跌倒-笑做“不倒翁”
  17. mac上优秀的键盘改键神器:Karabiner Elements完美支持m1芯片详细教程解析
  18. 如何设置IDEA代码风格为Google风格,使用Google风格format
  19. php int 32 64,php从32位升级到64位需要注意的几点
  20. python操作xlsx格式文件

热门文章

  1. 2022年中国研究生数学建模竞赛F题-COVID-19疫情期间生活物资的科学管理问题
  2. 第七章:抽样与抽样分布(Sampling and sampling distribution)
  3. 快速、准确判断三极管的工作状态
  4. 学习笔记☞ MongoDB(芒果数据库) ☞【查找,删除,操作符】
  5. CLIP-Adapter:利用Adapter微调CLIP适配下游任务
  6. stdafx.cpp编译引起的C2859、C1083、LNK2001错误
  7. idea通过svn上传_IDEA提交整个项目到svn
  8. java实现excel导入导出(jxl),Java入门你值得拥有
  9. 关于maven-jar-plugin报红在IDEA中配置Maven时,总是遇到org.apache.maven.plugins:maven-clean-plugin:2.4这样报错。而且一报就是全红
  10. 光纤的特性参数有哪些?