整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

程序猿必备的8款web前端SVG动画特效

、SVG图片波浪效果渲染动画

今天我们要为大家分享一款很酷的SVG图片动画,主要是图片上会出现波浪的渲染动画。实现原理是在图片上方利用SVG路径绘制了一层蒙板,然后蒙版进行一定的随机扭曲就形成了图片上方波浪翻滚的动画特效,而且也十分逼真。

2、基于HTML5和SVG的手机菜单动画

之前我们分享过很多手机端的jQuery菜单和CSS3菜单,也有很多是PC端的菜单,都非常不错。今天要接着分享一款基于HTML5和SVG的手机端菜单动画,这款菜单有2种主题和动画风格,分别是侧边飞入和底部飞入动画,同时点击菜单展开按钮又会出现旋转的动画特效。

3、纯CSS3蓝色蝴蝶动画

之前我们分享过几个漂亮的HTML5蝴蝶飞舞动画,比如超炫酷HTML5 Canvas蝴蝶飞舞动画和HTML5 SVG 3D蝴蝶飞舞动画都非常炫酷。今天要分享的这款蝴蝶动画是基于纯CSS3的,虽然没有前面蝴蝶动画那么绚丽,但是蓝色的蝴蝶翅膀扇动起来也是别有一番风味的。

4、SVG边框可连续变化的鼠标滑过动画按钮

今天我们要给大家分享一款基于SVG的鼠标滑过动画按钮,这款按钮的鼠标滑过动画呈现的是按钮边框线条可连续变化,非常绚丽。像这样的鼠标滑过按钮在之前我们也分享过很多,大家可以回顾一下纯CSS3鼠标滑过按钮动画 多种动画风格和jQuery/CSS3多种鼠标滑过动画按钮集合,也许其中有些按钮效果可以用得上。

5、超炫酷HTML5 Canvas蝴蝶飞舞动画

还记得很早以前我们为大家分享过一款非常炫酷的HTML5蝴蝶3D动画,它是基于HTML5和SVG实现的。这次我们要再一次为大家介绍另外一款同样也很酷的HTML5 Canvas蝴蝶飞舞动画,蝴蝶是在Canvas上绘制而成,利用HTML5的动画特性实现蝴蝶的飞舞,大家可以学习一下。

6、HTML5 SVG 绘制唐老鸭卡通形象

利用CSS3可以绘制很多人物和动物形象,比如之前介绍的纯CSS3绘制可爱小男孩动画和纯CSS3绘制可爱的蚱蜢,可见CSS3十分强大。这次我们要介绍的是利用HTML5和SVG来绘制的唐老鸭卡通形象,SVG的path特性非常灵活,可以让你绘制任何路径。

7、CSS3/SVG实现鼠标滑过3D展开文字描述图层

现在很多HTML5动画都会结合SVG来制作,因为SVG可以更方面地描述界面图形元素。今天要介绍的一款动画就是利用CSS3结合SVG实现的,它可以让我们在鼠标滑过图片时,通过3D立体的视觉效果展示文字描述图层,动画效果非常绚丽。

8、CSS3/SVG沙漏式Loading加载动画

之前我们也已经分享过很多Loading动画和进度条动画了,很多都是比较实用的应用。今天我们要再来分享一款基于CSS3和SVG的沙漏式Loading加载动画,尽管实现起来也比较简单,但是模拟效果相当逼真,适合来做整个页面加载时的等待动画。

本文固定链接: http://www.i7758.com/archives/2870.html

多特效代码请添加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代码过多没有在这里展示,大家可在群内查找

次为大家分享的是一款最近多人使用的纯HTML代码动画页面源码。

NAME:HTML5模糊的圆点背景动画特效


小编觉得当做网站背景图肯定很高大尚!




下面就来欣赏一下效果图吧!







注意!前方高能代码!


<!doctype html>

<html>

<head>

<meta charset="utf-8">

<title>PHP学习群:646724664</title>

<style>

body {

background: #000;

overflow: hidden;

}

canvas {

bottom: 0;

left: 0;

position: absolute;

right: 0;

top: 0;

}

#c1 {

opacity: 0;

}

#c2 {

background: #000;

}

</style>

</head>

<body>

<canvas id="c1"></canvas>

<canvas id="c2"></canvas>

<script>

var c1 = document.getElementById( 'c1' ),

ctx1 = c1.getContext( '2d' ),

c2 = document.getElementById( 'c2' ),

ctx2 = c2.getContext( '2d' ),

twopi = Math.PI * 2,

parts = [],

sizeBase,

cw,

opt,

hue,

count;

function rand( min, max ) {

return Math.random() * ( max - min ) + min;

}

function hsla( h, s, l, a ) {

return 'hsla(' + h + ',' + s + '%,' + l + '%,' + a + ')';

}

function create() {

sizeBase = cw + ch;

count = Math.floor( sizeBase * 0.3 ),

hue = rand( 0, 360 ),

opt = {

radiusMin: 1,

radiusMax: sizeBase * 0.04,

blurMin: 10,

blurMax: sizeBase * 0.04,

hueMin: hue,

hueMax: hue + 100,

saturationMin: 10,

saturationMax: 70,

lightnessMin: 20,

lightnessMax: 50,

alphaMin: 0.1,

alphaMax: 0.5

}

ctx1.clearRect( 0, 0, cw, ch );

ctx1.globalCompositeOperation = 'lighter';

while( count-- ) {

var radius = rand( opt.radiusMin, opt.radiusMax ),

blur = rand( opt.blurMin, opt.blurMax ),

x = rand( 0, cw ),

y = rand( 0, ch ),

hue = rand(opt.hueMin, opt.hueMax ),

saturation = rand( opt.saturationMin, opt.saturationMax ),

lightness = rand( opt.lightnessMin, opt.lightnessMax ),

alpha = rand( opt.alphaMin, opt.alphaMax );

ctx1.shadowColor = hsla( hue, saturation, lightness, alpha );

ctx1.shadowBlur = blur;

ctx1.beginPath();

ctx1.arc( x, y, radius, 0, twopi );

ctx1.closePath();

ctx1.fill();

}

parts.length = 0;

for( var i = 0; i < Math.floor( ( cw + ch ) * 0.03 ); i++ ) {

parts.push({

radius: rand( 1, sizeBase * 0.03 ),

x: rand( 0, cw ),

y: rand( 0, ch ),

angle: rand( 0, twopi ),

vel: rand( 0.1, 0.5 ),

tick: rand( 0, 10000 )

});

}

}

function init() {

resize();

create();

loop();

}

function loop() {

requestAnimationFrame( loop )

ctx2.clearRect( 0, 0, cw, ch );

ctx2.globalCompositeOperation = 'source-over';

ctx2.shadowBlur = 0;

ctx2.drawImage( c1, 0, 0 );

ctx2.globalCompositeOperation = 'lighter';

var i = parts.length;

ctx2.shadowBlur = 15;

ctx2.shadowColor = '#fff';

while( i-- ) {

var part = parts[ i ];

part.x += Math.cos( part.angle ) * part.vel;

part.y += Math.sin( part.angle ) * part.vel;

part.angle += rand( -0.05, 0.05 );

ctx2.beginPath();

ctx2.arc( part.x, part.y, part.radius, 0, twopi );

ctx2.fillStyle = hsla( 0, 0, 100, 0.075 + Math.cos( part.tick * 0.02 ) * 0.05 );

ctx2.fill();

if( part.x - part.radius > cw ) { part.x = -part.radius }

if( part.x + part.radius < 0 ) { part.x = cw + part.radius }

if( part.y - part.radius > ch ) { part.y = -part.radius }

if( part.y + part.radius < 0 ) { part.y = ch + part.radius }

part.tick++;

}

}

function resize() {

cw = c1.width = c2.width = window.innerWidth,

ch = c1.height = c2.height = window.innerHeight;

create();

}

function click() {

create()

}

window.addEventListener( 'resize', resize );

window.addEventListener( 'click', click );

init();</script>

<footer><div style="position:absolute;bottom: 0px;">

<a href="http://www.miitbeian.gov.cn/" target="_blank" >粤ICP备17135247号-1</a>

<a href="http://www.13240chk.com" target="_blank" ></a></div></footer>

</body>

</html>

学习中有什么问题可以一起交流讨论,PHP编程群: 646724664