canvas 悬浮效果

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<canvas id="bubble"></canvas>
<script type="text/javascript">
var canvas = document.getElementById('bubble');
var w = window.innerWidth;
var h = window.innerHeight
canvas.width=w;
canvas.height=h;
window.onresize=function(){
w = window.innerWidth;
h = window.innerHeight
canvas.width=w;
canvas.height=h;
}
var canCon=canvas.getContext('2d');
// var y=100,x=100;
// setInterval(function(){
// canCon.clearRect(0,0,w,h);
// canCon.beginPath();
// canCon.fillStyle='red';
// canCon.arc(200,y++,100,0,Math.PI*2)
// canCon.fill();
// },1000/60); function random(min,max){
return Math.random()*(max-min)+min;
}
var colorArray = ['#e08031','#c7ceb2','#199475','#0b6e48','#044d22'];
function Bubble(){};
var bubble =new Bubble();
Bubble.prototype={//定义属性
init:function(){//所有泡泡的基本零件
this.x=random(0,w);//浏览器的最左边到最右边
this.y=random(0,h);//浏览器的最左边到最右边
this.r=random(0,2);//http://www.peise.net/颜色
this.color=colorArray[Math.floor(random(0,5))];
this.xr=random(-1,1);
this.yr=random(-1,1);
this.D=50;
},
draw:function(){
canCon.beginPath();
canCon.fillStyle=this.color;
canCon.arc(this.x,this.y,this.r,0,Math.PI*2)
canCon.fill();
},
update:function(){
this.x+=this.xr;
this.y+=this.yr;
if(this.x-this.r<0 || this.x+this.r>w){
this.xr = -this.xr;
}else if(this.y-this.r<0 || this.y+this.r>h){
this.yr = -this.yr;
}
this.xD= (positionX-this.x<0)?-(positionX-this.x):(positionX-this.x); //小球和鼠标的位置距离
this.yD= (positionY-this.y<0)?-(positionY-this.y):(positionY-this.y); //小球和鼠标的位置距离
if(this.xD<this.D&&this.yD<this.D){
this.r+=1;
if(this.r>100){this.r=100};
}else if(this.r>4&&this.xD>this.D&&this.yD>this.D){
this.r-=1;
}
this.draw();
}
} var bublleArray = [];
function create(){
var bubble =new Bubble();//shengcheng
bubble.init();//小泡泡的样子
bubble.draw();
bublleArray.push(bubble);//一出生就保存
}
for(var i=0;i<10000;i++){
create();
}
setInterval(function(){
canCon.clearRect(0,0,w,h);
for(var b of bublleArray){
b.update();
}
},1000/60);
var positionX,positionY;
canvas.onmousemove=function(){
var ev = ev || window.event;
positionX=ev.clientX;
positionY=ev.clientY;
positionX=ev.clientX;
}
//春函数就是只进行计算
</script>
</body>
</html>
canvas 悬浮效果的更多相关文章
- 使用Three.js实现神奇的3D文字悬浮效果
声明:本文涉及图文和模型素材仅用于个人学习.研究和欣赏,请勿二次修改.非法传播.转载.出版.商用.及进行其他获利行为. 背景 在 Three.js Journey 课程示例中,提供了一个使用 Thre ...
- CodePen 作品秀:Canvas 粒子效果文本动画
作品名称——Shape Shifter,基于 Canvas 的粒子图形变换实验.在页面下方的输入框输入文本,上面就会进行变换出对应的粒子效果文本动画. CodePen 作品秀系列向大家展示来自 Cod ...
- Android 仿美团网,大众点评购买框悬浮效果之修改版
转帖请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/17761431),请尊重他人的辛勤劳动成果,谢谢! 我之前写 ...
- 纯CSS实现的右侧底部简洁悬浮效果
我们见过很多页面右侧浮动效果,最早有QQ联系面板,对联广告等,大多数都是基于Javascript实现的动态效果,今天我给大家分享一个只需要CSS结合DIV实现的右侧浮动效果. HTML 我们希望悬浮效 ...
- HTML5 Canvas动画效果演示
HTML5 Canvas动画效果演示 主要思想: 首先要准备一张有连续帧的图片,然后利用HTML5 Canvas的draw方法在不同的时间 间隔绘制不同的帧,这样看起来就像动画在播放. 关键技术点: ...
- Android对ScrollView滚动监听,实现美团、大众点评的购买悬浮效果
转帖请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/17761431),请尊重他人的辛勤劳动成果,谢谢! 我之前写 ...
- HTML5 Canvas动画效果演示 - 流浪的鱼 - 博客频道 - CSDN.NET
HTML5 Canvas动画效果演示 - 流浪的鱼 - 博客频道 - CSDN.NET HTML5 Canvas动画效果演示
- HTML5 Canvas动画效果实现原理
在线演示 使用HTML5画布可以帮助我们高速实现简单的动画效果.基本原理例如以下: 每隔一定时间绘制图形而且清除图形,用来模拟出一个动画过程,能够使用context.clearRect(0, 0, x ...
- 如果去掉UITableView上的section的headerView和footerView的悬浮效果
项目需要cell的间距,又不需要悬浮效果,百度之后找到这个方法,记录一下,备忘. 用UIScrollView的代理方法实现 - (void)scrollViewDidScroll:(UIScrollV ...
随机推荐
- 【Vue】---- 手动封装on,emit,off
一.概念 1. $on("事件名称",回调函数) 事件绑定,一个事件名称上面可能绑定多个函数 2. $emit("事件名称",需要传递的值) 事件触发时,会触发 ...
- Vue2.0 【第一季】第7节 v-bind指令
目录 Vue2.0 [第一季] 第7节 v-bind指令 第7节 v-bind指令 v-bind缩写 绑定CSS样式 Vue2.0 [第一季] 第7节 v-bind指令 第7节 v-bind指令 v- ...
- ES6—get 与 set
在类里面可以去定义一些getter和setter,getter可以得到一些东西的方法,setter可以设置东西 class Chef{ constructor(food){ this.food = f ...
- el-select下拉加载(实现懒加载)
情况:项目出现了下拉数据量过大,出现页面卡死问题,反馈到我这:当时实现思路1.使用render函数去渲染下拉框 试了发现卡死情况依然存在,所以尝试方法2 2.使用原生js去添加下拉框的<opti ...
- svn 追责神器 blame vscode - SVN Gutter
svn 追责神器 blame vscode - SVN Gutter
- Java 内存模型都不会,就敢在简历上写熟悉并发编程吗
从 PC 内存架构到 Java 内存模型 你知道 Java 内存模型 JMM 吗?那你知道它的三大特性吗? Java 是如何解决指令重排问题的? 既然CPU有缓存一致性协议(MESI),为什么 JMM ...
- ES6编译问题SyntaxError: Unexpected token import
遇到SyntaxError: Unexpected token import 如何解决 ??? 究其原因是node es6问题这还不够,因为我们没有去配置babel,所以我们需要在.babelrc去做 ...
- 为什么 select count(*) from t,在 InnoDB 引擎中比 MyISAM 慢?
统计一张表的总数量,是我们开发中常有的业务需求,通常情况下,我们都是使用 select count(*) from t SQL 语句来完成.随着业务数据的增加,你会发现这条语句执行的速度越来越慢,为什 ...
- 软件版本管理工具-SVN
一.SVN简介 Subversion(svn)是一款开发源代码的版本控制系统. repository(源代码库):源代码统一存放的地方 Checkout(检出):当你手上没有源代码的时候,你需要从re ...
- wr720n v4 折腾笔记(四):安装inode客户端njitclient
前记: 既然折腾到这里,那就不怕再折腾一下了,之前说过最终还是安装南浦月大神的固件,折腾了一圈,怎么不直接在官方界面上安装呢,这里给出直接安装的方法,就是修改固件头为wr720nv4. 0x01 修改 ...