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

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

toyiye 2024-06-21 12:05 11 浏览 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代码过多没有在这里展示,大家可在群内查找

相关推荐

为何越来越多的编程语言使用JSON(为什么编程)

JSON是JavascriptObjectNotation的缩写,意思是Javascript对象表示法,是一种易于人类阅读和对编程友好的文本数据传递方法,是JavaScript语言规范定义的一个子...

何时在数据库中使用 JSON(数据库用json格式存储)

在本文中,您将了解何时应考虑将JSON数据类型添加到表中以及何时应避免使用它们。每天?分享?最新?软件?开发?,Devops,敏捷?,测试?以及?项目?管理?最新?,最热门?的?文章?,每天?花?...

MySQL 从零开始:05 数据类型(mysql数据类型有哪些,并举例)

前面的讲解中已经接触到了表的创建,表的创建是对字段的声明,比如:上述语句声明了字段的名称、类型、所占空间、默认值和是否可以为空等信息。其中的int、varchar、char和decimal都...

JSON对象花样进阶(json格式对象)

一、引言在现代Web开发中,JSON(JavaScriptObjectNotation)已经成为数据交换的标准格式。无论是从前端向后端发送数据,还是从后端接收数据,JSON都是不可或缺的一部分。...

深入理解 JSON 和 Form-data(json和formdata提交区别)

在讨论现代网络开发与API设计的语境下,理解客户端和服务器间如何有效且可靠地交换数据变得尤为关键。这里,特别值得关注的是两种主流数据格式:...

JSON 语法(json 语法 priority)

JSON语法是JavaScript语法的子集。JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔花括号保存对象方括号保存数组JS...

JSON语法详解(json的语法规则)

JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔大括号保存对象中括号保存数组注意:json的key是字符串,且必须是双引号,不能是单引号...

MySQL JSON数据类型操作(mysql的json)

概述mysql自5.7.8版本开始,就支持了json结构的数据存储和查询,这表明了mysql也在不断的学习和增加nosql数据库的有点。但mysql毕竟是关系型数据库,在处理json这种非结构化的数据...

JSON的数据模式(json数据格式示例)

像XML模式一样,JSON数据格式也有Schema,这是一个基于JSON格式的规范。JSON模式也以JSON格式编写。它用于验证JSON数据。JSON模式示例以下代码显示了基本的JSON模式。{"...

前端学习——JSON格式详解(后端json格式)

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgrammingLa...

什么是 JSON:详解 JSON 及其优势(什么叫json)

现在程序员还有谁不知道JSON吗?无论对于前端还是后端,JSON都是一种常见的数据格式。那么JSON到底是什么呢?JSON的定义...

PostgreSQL JSON 类型:处理结构化数据

PostgreSQL提供JSON类型,以存储结构化数据。JSON是一种开放的数据格式,可用于存储各种类型的值。什么是JSON类型?JSON类型表示JSON(JavaScriptO...

JavaScript:JSON、三种包装类(javascript 包)

JOSN:我们希望可以将一个对象在不同的语言中进行传递,以达到通信的目的,最佳方式就是将一个对象转换为字符串的形式JSON(JavaScriptObjectNotation)-JS的对象表示法...

Python数据分析 只要1分钟 教你玩转JSON 全程干货

Json简介:Json,全名JavaScriptObjectNotation,JSON(JavaScriptObjectNotation(记号、标记))是一种轻量级的数据交换格式。它基于J...

比较一下JSON与XML两种数据格式?(json和xml哪个好)

JSON(JavaScriptObjectNotation)和XML(eXtensibleMarkupLanguage)是在日常开发中比较常用的两种数据格式,它们主要的作用就是用来进行数据的传...

取消回复欢迎 发表评论:

请填写验证码