html流体效果网页,利用HTML5实现Canvas流体加载动画特效

这篇博客详细介绍了如何使用HTML5的Canvas API创建动态的流体加载动画特效。通过粒子系统,作者展示了如何生成并更新粒子的位置、速度和生命周期,从而形成流畅的视觉效果。代码中涉及到了数学运算、颜色处理以及动画帧的更新,为前端开发者提供了一种创新的网页交互元素设计思路。
摘要由CSDN通过智能技术生成

特效描述:利用HTML5实现 Canvas 流体加载 动画特效。利用HTML5实现Canvas流体加载动画特效

代码结构

1. HTML代码

var $ = {};

$.Particle = function( opt ) {

this.radius = 7;

this.x = opt.x;

this.y = opt.y;

this.angle = opt.angle;

this.speed = opt.speed;

this.accel = opt.accel;

this.decay = 0.01;

this.life = 1;

};

$.Particle.prototype.step = function( i ) {

this.speed += this.accel;

this.x += Math.cos( this.angle ) * this.speed;

this.y += Math.sin( this.angle ) * this.speed;

this.angle += $.PI / 64;

this.accel *= 1.01;

this.life -= this.decay;

if( this.life <= 0 ) {

$.particles.splice( i, 1 );

}

};

$.Particle.prototype.draw = function( i ) {

$.ctx.fillStyle = $.ctx.strokeStyle = 'hsla(' + ( $.tick + ( this.life * 120 ) ) + ', 100%, 60%, ' + this.life + ')';

$.ctx.beginPath();

if( $.particles[ i - 1 ] ) {

$.ctx.moveTo( this.x, this.y );

$.ctx.lineTo( $.particles[ i - 1 ].x, $.particles[ i - 1 ].y );

}

$.ctx.stroke();

$.ctx.beginPath();

$.ctx.arc( this.x, this.y, Math.max( 0.001, this.life * this.radius ), 0, $.TWO_PI );

$.ctx.fill();

var size = Math.random() * 1.25;

$.ctx.fillRect( ~~( this.x + ( ( Math.random() - 0.5 ) * 35 ) * this.life ), ~~( this.y + ( ( Math.random() - 0.5 ) * 35 ) * this.life ), size, size );

}

$.step = function() {

$.particles.push( new $.Particle({

x: $.width / 2 + Math.cos( $.tick / 20 ) * $.min / 2,

y: $.height / 2 + Math.sin( $.tick / 20 ) * $.min / 2,

angle: $.globalRotation + $.globalAngle,

speed: 0,

accel: 0.01

}));

$.particles.forEach( function( elem, index ) {

elem.step( index );

});

$.globalRotation += $.PI / 6;

$.globalAngle += $.PI / 6;

};

$.draw = function() {

$.ctx.clearRect( 0, 0, $.width, $.height );

$.particles.forEach( function( elem, index ) {

elem.draw( index );

});

};

$.init = function() {

$.canvas = document.createElement( 'canvas' );

$.ctx = $.canvas.getContext( '2d' );

$.width = 300;

$.height = 300;

$.canvas.width = $.width * window.devicePixelRatio;

$.canvas.height = $.height * window.devicePixelRatio;

$.canvas.style.width = $.width + 'px';

$.canvas.style.height = $.height + 'px';

$.ctx.scale(window.devicePixelRatio, window.devicePixelRatio);

$.min = $.width * 0.5;

$.particles = [];

$.globalAngle = 0;

$.globalRotation = 0;

$.tick = 0;

$.PI = Math.PI;

$.TWO_PI = $.PI * 2;

$.ctx.globalCompositeOperation = 'lighter';

document.body.appendChild( $.canvas );

$.loop();

};

$.loop = function() {

requestAnimationFrame( $.loop );

$.step();

$.draw();

$.tick++;

};

$.init();

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值