百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

HTML5漂亮的Canvas鼠标箭头跟随动画特效

toyiye 2024-07-06 00:37 21 浏览 0 评论

更多特效代码请添加HTML5前端交流群581549454

废话不多说,上代码!

网站格式代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<style type="text/css">

* { margin:0; padding:0; }

body { position:relative; width:100%; height:100%; overflow:hidden; }

button { color:#222; font-size:20px; padding:5px 20px; width:120px; }

#btn1 { position:absolute; top:10px; left:10px; }

#btn2 { position:absolute; top:60px; left:10px; }

#btn3 { position:absolute; top:110px; left:10px; }

#btn4 { position:absolute; top:160px; left:10px; }

#btn5 { position:absolute; top:210px; left:10px; }

#btn6 { position:absolute; top:260px; left:10px; }

#btn7 { position:absolute; top:310px; left:10px; }

#btn8 { position:absolute; top:360px; left:10px; }

#btn9 { position:absolute; top:410px; left:10px; }

#btn0 { position:absolute; top:460px; left:10px; }

</style>

<script src="js/jquery.min.js"></script>

<title>漂亮的Canvas鼠标箭头跟随动画特效</title>

</head>

<body><script src="/demos/googlegg.js"></script>

<canvas id="c"></canvas>

<div class="btn_left;">

<button id="btn1">效果1</button>

<button id="btn2">效果2</button>

<button id="btn3">效果3</button>

<button id="btn4">效果4</button>

<button id="btn5">效果5</button>

<button id="btn6">效果6</button>

<button id="btn7">效果7</button>

<button id="btn8">效果8</button>

<button id="btn9">效果9</button>

<button id="btn0">效果10</button>

</div>

<script type="text/javascript">

$(document).ready(function() {

var canvas = document.getElementById("c");

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

var c = $("#c");

var x,y,w,h,cx,cy,l;

var y = [];

var b = {

n:100,

c:false, // 颜色 如果是false 则是随机渐变颜色

bc:'#000', // 背景颜色

r:0.9,

o:0.05,

a:1,

s:20,

}

var bx = 0,by = 0,vx = 0,vy = 0;

var td = 0;

var p = 0;

var hs = 0;

re();

var color,color2;

if(b.c){

color2 = b.c;

}else{

color = Math.random()*360;

}

$(window).resize(function(){

re();

});

var tp1=true,tp2 = false,tp3 = false,tp4 = false,tp5 = false,tp6 = false,tp7 = false,tp8 = false,tp9 = false,tp0 = false;

function begin(){

if(tp1){

if(!b.c){

color+=.1;

color2 = 'hsl('+color+',100%,80%)';

}

ctx.globalAlpha = 1;

ctx.fillStyle = b.bc;

ctx.fillRect(0,0,w,h);

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

ctx.globalAlpha = y[i].o;

ctx.fillStyle = color2;

ctx.beginPath();

ctx.arc(y[i].x,y[i].y,y[i].r,0,Math.PI*2);

ctx.closePath();

ctx.fill();

y[i].r+=b.r;

y[i].o-=b.o;

if(y[i].o<=0){

y.splice(i,1);

i--;

};

}

}else if(tp2){

if(!b.c){

color+=.1;

color2 = 'hsl('+color+',100%,80%)';

}

ctx.globalAlpha = 1;

ctx.fillStyle = b.bc;

ctx.fillRect(0,0,w,h);

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

ctx.globalAlpha = y[i].o;

ctx.fillStyle = color2;

ctx.beginPath();

y[i].r=10;

ctx.shadowBlur=20;

ctx.shadowColor=color2;

ctx.arc(y[i].x,y[i].y,y[i].r,0,Math.PI*2);

ctx.closePath();

ctx.fill();

ctx.shadowBlur=0;

y[i].o-=b.o;

y[i].v+=b.a;

y[i].y+=y[i].v;

if(y[i].y>=h+y[i].r || y[i].o<=0){

y.splice(i,1);

i--;

};

}

}else if(tp3){

if(!b.c){

color+=.1;

color2 = 'hsl('+color+',100%,80%)';

}

td+=5;

ctx.globalAlpha = 1;

ctx.fillStyle = b.bc;

ctx.fillRect(0,0,w,h);

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

ctx.globalAlpha = y[i].o;

ctx.fillStyle = color2;

ctx.beginPath();

ctx.shadowBlur=20;

ctx.shadowColor=color2;

y[i].r=(1-(y[i].y/h))*20;

ctx.arc(y[i].x,y[i].y,y[i].r,0,Math.PI*2);

ctx.closePath();

ctx.fill();

ctx.shadowBlur=0;

y[i].o=y[i].y/h;

y[i].v+=b.a;

y[i].y-=b.s;

y[i].x+=(Math.cos((y[i].y+td)/100)*10);

if(y[i].y<=0-y[i].r || y[i].o<=0){

y.splice(i,1);

i--;

};

}

}else if(tp4){

if(!b.c){

color+=.1;

color2 = 'hsl('+color+',100%,80%)';

}

ctx.globalAlpha = 1;

ctx.fillStyle = b.bc;

ctx.fillRect(0,0,w,h);

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

ctx.globalAlpha = y[i].o;

ctx.fillStyle = color2;

ctx.beginPath();

ctx.shadowBlur=20;

ctx.shadowColor=color2;

y[i].vx2 += (cx - y[i].wx)/1000;

y[i].vy2 += (cy - y[i].wy)/1000;

y[i].wx+=y[i].vx2;

y[i].wy+=y[i].vy2;

y[i].o-=b.o/2;

y[i].r=10;

ctx.arc(y[i].wx,y[i].wy,y[i].r,0,Math.PI*2);

ctx.closePath();

ctx.fill();

ctx.shadowBlur=0;

if(y[i].o<=0){

y.splice(i,1);

i--;

};

}

}else if(tp5){

if(!b.c){

color+=.1;

color2 = 'hsl('+color+',100%,80%)';

}

ctx.globalAlpha = .18;

ctx.fillStyle = b.bc;

ctx.fillRect(0,0,w,h);

p+=5;

ctx.globalAlpha = 1;

ctx.fillStyle = color2;

ctx.beginPath();

ctx.shadowBlur=20;

ctx.shadowColor=color2;

ctx.arc(cx+50*Math.cos(p*Math.PI/180),cy+50*Math.sin(p*Math.PI/180),10,0,Math.PI*2);

ctx.closePath();

ctx.fill();

ctx.beginPath();

ctx.arc(cx+50*Math.cos((p+180)*Math.PI/180),cy+50*Math.sin((p+180)*Math.PI/180),10,0,Math.PI*2);

ctx.closePath();

ctx.fill();

ctx.beginPath();

ctx.arc(cx+50*Math.cos((p+90)*Math.PI/180),cy+50*Math.sin((p+90)*Math.PI/180),10,0,Math.PI*2);

ctx.closePath();

ctx.fill();

ctx.beginPath();

ctx.arc(cx+50*Math.cos((p+270)*Math.PI/180),cy+50*Math.sin((p+270)*Math.PI/180),10,0,Math.PI*2);

ctx.closePath();

ctx.fill();

ctx.shadowBlur=0;

}else if(tp6){

if(!b.c){

color+=.1;

color2 = 'hsl('+color+',100%,80%)';

}

ctx.globalAlpha = 0.2;

ctx.fillStyle = b.bc;

ctx.fillRect(0,0,w,h);

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

ctx.globalAlpha = y[i].o;

ctx.strokeStyle = color2;

ctx.beginPath();

ctx.lineWidth = 2;

ctx.moveTo(y[i].x,y[i].y);

ctx.lineTo((y[i].wx+y[i].x)/2+Math.random()*20,(y[i].wy+y[i].y)/2+Math.random()*20);

ctx.lineTo(y[i].wx,y[i].wy);

ctx.closePath();

ctx.stroke();

y[i].o-=b.o;

if(y[i].o<=0){

y.splice(i,1);

i--;

};

}

}else if(tp7){

if(!b.c){

color+=.1;

color2 = 'hsl('+color+',100%,80%)';

}

ctx.globalAlpha = 0.2;

ctx.fillStyle = b.bc;

ctx.fillRect(0,0,w,h);

if(y.length<b.n*2){

hs = Math.random()*2*Math.PI;

y.push({x:cx+((Math.random()-.5)*100*Math.cos(hs)),y:cy+((Math.random()-.5)*100*Math.cos(hs)),o:1,h:hs});

}

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

ctx.globalAlpha = y[i].o;

ctx.fillStyle = color2;

ctx.beginPath();

y[i].x+=(cx-y[i].x)/10;

y[i].y+=(cy-y[i].y)/10;

ctx.arc(y[i].x,y[i].y,1,0,Math.PI*2);

ctx.closePath();

ctx.fill();

y[i].o-=b.o;

if(y[i].o<=0){

y[i].h = Math.random()*2*Math.PI;

y[i].x = cx+((Math.random()-.5)*100*Math.cos(y[i].h));

y[i].y = cy+((Math.random()-.5)*100*Math.sin(y[i].h));

y[i].o = 1;

};

}

}else if(tp8){

if(!b.c){

color+=.1;

color2 = 'hsl('+color+',100%,80%)';

}

ctx.globalAlpha = 0.2;

ctx.fillStyle = b.bc;

ctx.fillRect(0,0,w,h);

ctx.fillStyle = color2;

if(cx%4 == 0){

cx+=1;

}else if(cx%4 == 2){

cx-=1

}

else if(cx%4 == 3){

cx-=2

}

if(cy%4 == 0){

cy+=1;

}else if(cy%4 == 2){

cy-=1

}

else if(cy%4 == 3){

cy-=2

}

for(var i=cx-60;i<cx+60;i+=4){

for(var j=cy-60;j<cy+60;j+=4){

if(Math.sqrt(Math.pow(cx-i,2)+Math.pow(cy-j,2))<=60){

ctx.globalAlpha = 1-(Math.sqrt(Math.pow(cx-i,2)+Math.pow(cy-j,2))/60);

if(Math.random()<.2){

ctx.fillRect(i,j,3,3);

}

}

}

}

}else if(tp9){

if(!b.c){

color+=.1;

color2 = 'hsl('+color+',100%,80%)';

}

ctx.globalAlpha = 0.2;

ctx.fillStyle = b.bc;

ctx.fillRect(0,0,w,h);

ctx.fillStyle = color2;

if(cx%4 == 0){

cx+=1;

}else if(cx%4 == 2){

cx-=1

}

else if(cx%4 == 3){

cx-=2

}

if(cy%4 == 0){

cy+=1;

}else if(cy%4 == 2){

cy-=1

}

else if(cy%4 == 3){

cy-=2

}

if(y.length<b.n){

y.push({x:cx,y:cy,xv:0,yv:0,o:1});

}

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

if(y[i].xv==0 && y[i].yv==0){

if(Math.random()<.5){

if(Math.random()<.5){

y[i].xv = 3;

}else{

y[i].xv = -3;

}

}else{

if(Math.random()<.5){

y[i].yv = 3;

}else{

y[i].yv = -3;

}

}

}else{

if(y[i].xv == 0){

if(Math.random()<.66){

y[i].yv = 0;

if(Math.random()<.5){

y[i].xv = 3;

}else{

y[i].xv = -3;

}

}

}else if(y[i].yv == 0){

if(Math.random()<.66){

y[i].xv = 0;

if(Math.random()<.5){

y[i].yv = 3;

}else{

y[i].yv = -3;

}

}

}

}

y[i].o-=b.o/2;

ctx.globalAlpha = y[i].o;

y[i].x+=y[i].xv;

y[i].y+=y[i].yv;

ctx.fillRect(y[i].x,y[i].y,3,3);

if(y[i].o<=0){

y.splice(i,1);

i--;

};

}

}else if(tp0){

if(!b.c){

color+=.1;

color2 = 'hsl('+color+',100%,80%)';

}

ctx.globalAlpha = 0.2;

ctx.fillStyle = b.bc;

ctx.fillRect(0,0,w,h);

ctx.fillStyle = color2;

y.push({x:cx,y:cy,xv:2,yv:1,o:1});

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

y[i].o-=b.o/10;

ctx.globalAlpha = y[i].o;

y[i].x+=(Math.random()-.5)*4;

y[i].y-=1;

ctx.fillRect(y[i].x,y[i].y,2,2);

if(y[i].o<=0){

y.splice(i,1);

i--;

};

}

}

window.requestAnimationFrame(begin);

}

function re(){

w = window.innerWidth;

h = window.innerHeight;

canvas.width = w;

canvas.height = h;

cx = w/2;

cy = h/2;

};

c.mousemove(function(e){

cx = e.pageX-c.offset().left;

cy = e.pageY-c.offset().top;

if(tp4){

if(Math.random()<=.5){

if(Math.random()<=.5){

bx = -10;

}else{

bx = w+10;

}

by = Math.random()*h;

}else{

if(Math.random()<=.5){

by = -10;

}else{

by = h+10;

}

bx = Math.random()*w;

}

vx = (Math.random()-.5)*8;

vy = (Math.random()-.5)*8;

}

if(tp1 || tp2 || tp3){

y.push({x:cx,y:cy,r:b.r,o:1,v:0});

}else if(tp4){

y.push({x:cx,y:cy,r:b.r,o:1,v:0,wx:bx,wy:by,vx2:vx,vy2:vy});

}else if(tp6){

y.push({x:cx+((Math.random()-.5)*30),y:cy+((Math.random()-.5)*30),o:1,wx:cx,wy:cy});

}

});

/*c.mousedown(function(){

c.on('mousemove',function(e){

cx = e.pageX-c.offset().left;

cy = e.pageY-c.offset().top;

y.push({x:cx,y:cy,r:b.r,o:1});

});

c.on('mouseup',function(){

c.off('mouseup');

c.off('mousemove');

c.off('moseleave');

});

c.on('mouseleave',function(){

c.off('mouseup');

c.off('mousemove');

c.off('moseleave');

});

});*/

$("#btn1").click(function(){

tp1 = true;

tp2 = false;

tp3 = false;

tp4 = false;

tp5 = false;

tp6 = false;

tp7 = false;

tp8 = false;

tp9 = false;

tp0 = false;

y=[];

});

$("#btn2").click(function(){

tp1 = false;

tp2 = true;

tp3 = false;

tp4 = false;

tp5 = false;

tp6 = false;

tp7 = false;

tp8 = false;

tp9 = false;

tp0 = false;

y=[];

});

$("#btn3").click(function(){

tp1 = false;

tp2 = false;

tp3 = true;

tp4 = false;

tp5 = false;

tp6 = false;

tp7 = false;

tp8 = false;

tp9 = false;

tp0 = false;

y=[];

});

$("#btn4").click(function(){

tp1 = false;

tp2 = false;

tp3 = false;

tp4 = true;

tp5 = false;

tp6 = false;

tp7 = false;

tp8 = false;

tp9 = false;

tp0 = false;

y=[];

});

$("#btn5").click(function(){

tp1 = false;

tp2 = false;

tp3 = false;

tp4 = false;

tp5 = true;

tp6 = false;

tp7 = false;

tp8 = false;

tp9 = false;

tp0 = false;

y=[];

});

$("#btn6").click(function(){

tp1 = false;

tp2 = false;

tp3 = false;

tp4 = false;

tp5 = false;

tp6 = true;

tp7 = false;

tp8 = false;

tp9 = false;

tp0 = false;

y=[];

});

$("#btn7").click(function(){

tp1 = false;

tp2 = false;

tp3 = false;

tp4 = false;

tp5 = false;

tp6 = false;

tp7 = true;

tp8 = false;

tp9 = false;

tp0 = false;

y=[];

});

$("#btn8").click(function(){

tp1 = false;

tp2 = false;

tp3 = false;

tp4 = false;

tp5 = false;

tp6 = false;

tp7 = false;

tp8 = true;

tp9 = false;

tp0 = false;

y=[];

});

$("#btn9").click(function(){

tp1 = false;

tp2 = false;

tp3 = false;

tp4 = false;

tp5 = false;

tp6 = false;

tp7 = false;

tp8 = false;

tp9 = true;

tp0 = false;

y=[];

});

$("#btn0").click(function(){

tp1 = false;

tp2 = false;

tp3 = false;

tp4 = false;

tp5 = false;

tp6 = false;

tp7 = false;

tp8 = false;

tp9 = false;

tp0 = true;

y=[];

});

(function() {

var lastTime = 0;

var vendors = ['webkit', 'moz'];

for(var xx = 0; xx < vendors.length && !window.requestAnimationFrame; ++xx) {

window.requestAnimationFrame = window[vendors[xx] + 'RequestAnimationFrame'];

window.cancelAnimationFrame = window[vendors[xx] + 'CancelAnimationFrame'] ||

window[vendors[xx] + 'CancelRequestAnimationFrame'];

}

if (!window.requestAnimationFrame) {

window.requestAnimationFrame = function(callback, element) {

var currTime = new Date().getTime();

var timeToCall = Math.max(0, 16.7 - (currTime - lastTime));

var id = window.setTimeout(function() {

callback(currTime + timeToCall);

}, timeToCall);

lastTime = currTime + timeToCall;

return id;

};

}

if (!window.cancelAnimationFrame) {

window.cancelAnimationFrame = function(id) {

clearTimeout(id);

};

}

}());

begin();

});

</script>

</body>

</html>

JS代码过多没有在这里展示,大家可在群内查找

相关推荐

# Python 3 # Python 3字典Dictionary(1)

Python3字典字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中,格式如...

Python第八课:数据类型中的字典及其函数与方法

Python3字典字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值...

Python中字典详解(python 中字典)

字典是Python中使用键进行索引的重要数据结构。它们是无序的项序列(键值对),这意味着顺序不被保留。键是不可变的。与列表一样,字典的值可以保存异构数据,即整数、浮点、字符串、NaN、布尔值、列表、数...

Python3.9又更新了:dict内置新功能,正式版十月见面

机器之心报道参与:一鸣、JaminPython3.8的热乎劲还没过去,Python就又双叒叕要更新了。近日,3.9版本的第四个alpha版已经开源。从文档中,我们可以看到官方透露的对dic...

Python3 基本数据类型详解(python三种基本数据类型)

文章来源:加米谷大数据Python中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。在Python中,变量就是变量,它没有类型,我们所说的"类型"是变...

一文掌握Python的字典(python字典用法大全)

字典是Python中最强大、最灵活的内置数据结构之一。它们允许存储键值对,从而实现高效的数据检索、操作和组织。本文深入探讨了字典,涵盖了它们的创建、操作和高级用法,以帮助中级Python开发...

超级完整|Python字典详解(python字典的方法或操作)

一、字典概述01字典的格式Python字典是一种可变容器模型,且可存储任意类型对象,如字符串、数字、元组等其他容器模型。字典的每个键值key=>value对用冒号:分割,每个对之间用逗号,...

Python3.9版本新特性:字典合并操作的详细解读

处于测试阶段的Python3.9版本中有一个新特性:我们在使用Python字典时,将能够编写出更可读、更紧凑的代码啦!Python版本你现在使用哪种版本的Python?3.7分?3.5分?还是2.7...

python 自学,字典3(一些例子)(python字典有哪些基本操作)

例子11;如何批量复制字典里的内容2;如何批量修改字典的内容3;如何批量修改字典里某些指定的内容...

Python3.9中的字典合并和更新,几乎影响了所有Python程序员

全文共2837字,预计学习时长9分钟Python3.9正在积极开发,并计划于今年10月发布。2月26日,开发团队发布了alpha4版本。该版本引入了新的合并(|)和更新(|=)运算符,这个新特性几乎...

Python3大字典:《Python3自学速查手册.pdf》限时下载中

最近有人会想了,2022了,想学Python晚不晚,学习python有前途吗?IT行业行业薪资高,发展前景好,是很多求职群里严重的香饽饽,而要进入这个高薪行业,也不是那么轻而易举的,拿信工专业的大学生...

python学习——字典(python字典基本操作)

字典Python的字典数据类型是基于hash散列算法实现的,采用键值对(key:value)的形式,根据key的值计算value的地址,具有非常快的查取和插入速度。但它是无序的,包含的元素个数不限,值...

324页清华教授撰写【Python 3 菜鸟查询手册】火了,小白入门字典

如何入门学习python...

Python3.9中的字典合并和更新,了解一下

全文共2837字,预计学习时长9分钟Python3.9正在积极开发,并计划于今年10月发布。2月26日,开发团队发布了alpha4版本。该版本引入了新的合并(|)和更新(|=)运算符,这个新特性几乎...

python3基础之字典(python中字典的基本操作)

字典和列表一样,也是python内置的一种数据结构。字典的结构如下图:列表用中括号[]把元素包起来,而字典是用大括号{}把元素包起来,只不过字典的每一个元素都包含键和值两部分。键和值是一一对应的...

取消回复欢迎 发表评论:

请填写验证码