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 ...
随机推荐
- Spring Boot 自动装配流程
Spring Boot 自动装配流程 本文以 mybatis-spring-boot-starter 为例简单分析 Spring Boot 的自动装配流程. Spring Boot 发现自动配置类 这 ...
- scrapy pip中间件个人处理
import pymongo from scrapy.conf import settings import pymysql class Mongodb_Pipeline(object): def _ ...
- MATLAB神经网络(6) PID神经元网络解耦控制算法——多变量系统控制
6.1 案例背景 6.1.1 PID神经元网络结构 PID神经元网络从结构上可以分为输入层.隐含层和输出层三层,$n$个控制量的PID神经元网络包含$n$个并列的相同子网络,各个子网络间既相互独立,又 ...
- Vue2.0 【第一季】第3节 v-for指令:解决模板循环问题
目录 Vue2.0 [第一季] 第3节 v-for指令:解决模板循环问题 第三节 v-for 指令 一.基本用法: 二.排序 三.对象循环输出 Vue2.0 [第一季] 第3节 v-for指令:解决模 ...
- 【tomcat系列】详解tomcat架构(上篇)
java中,常用的web服务器一般由tomcat,weblogic,jetty,undertwo等,但从用户使用广泛度来说,tomcat用户量相对比较大一些,当然这也基于它开源和免费的特点. 从软件架 ...
- Java基础(五):数组
数组,一种应用非常广泛的数据结构,简单地来说就是一组类型相同且无序的元素的存储在固定长度且有序的内存空间. 创建一个数组 在Java中,我们可以通过[]去声明一个指定类型的数组 int[] a; // ...
- Python进阶学习之面向对象
目录 面向对象 私有属性 面向对象 python也有面向对象的编程,它与C++中的类有点相似.它也只是运算符重载,继承. class Test: num=0 def __init__(self): ...
- vs2017 dlib19.3 opencv3.41 C++ 环境配置 人脸特征点识别
身为一个.net程序员经过两天的采坑终于把人脸特征检测的项目跑通了,然后本文将以dlib项目中人脸特征检测工程为例,讲解dlib与opencv 在vs2017 C++ 项目中的编译与运行路径配置. 1 ...
- Sqli-labs 搭建SQL注入平台
sqli-labs是一款学习sql注入的开源平台,共有75种不同类型的注入. 搭建步骤: 1.在Windows系统中安装WAMP 下载地址:https://pan.baidu.com/s/1HY0hF ...
- 【Springboot】用Prometheus+Grafana监控Springboot应用
1 简介 项目越做越发觉得,任何一个系统上线,运维监控都太重要了.关于Springboot微服务的监控,之前写过[Springboot]用Springboot Admin监控你的微服务应用,这个方案可 ...