画布html5插件,HTML5 画布的加载图像插件

c1fe058b6dc70abef5d2f20c1b08cfcd.png

c714816320c3c7678952c0af200e40b9.png

插件描述:Sonic 是一个很小的 JavaScript 类,用于创建基于 HTML5 画布的加载图像。更强大的是提供了基于现成的例子的创建工具,可以帮助你实现更多自定义的加载动画效果

var loaders = [

{

width: 100,

height: 50,

padding: 10,

stepsPerFrame: 2,

trailLength: 1,

pointDistance: .03,

strokeColor: '#FF7B24',

step: 'fader',

multiplier: 2,

setup: function() {

this._.lineWidth = 5;

},

path: [

['arc', 10, 10, 10, -270, -90],

['bezier', 10, 0, 40, 20, 20, 0, 30, 20],

['arc', 40, 10, 10, 90, -90],

['bezier', 40, 0, 10, 20, 30, 0, 20, 20]

]

},

{

width: 30,

height: 30,

stepsPerFrame: 2,

trailLength: .3,

pointDistance: .1,

padding: 10,

fillColor: '#D4FF00',

strokeColor: '#FFF',

setup: function() {

this._.lineWidth = 20;

},

path: [

['line', 0, 0, 30, 0],

['line', 30, 0, 30, 30],

['line', 30, 30, 0, 30],

['line', 0, 30, 0, 0]

]

},

{

width: 100,

height: 100,

stepsPerFrame: 1,

trailLength: 1,

pointDistance: .025,

strokeColor: '#05E2FF',

fps: 20,

setup: function() {

this._.lineWidth = 2;

},

step: function(point, index) {

var cx = this.padding + 50,

cy = this.padding + 50,

_ = this._,

angle = (Math.PI/180) * (point.progress * 360);

this._.globalAlpha = Math.max(.5, this.alpha);

_.beginPath();

_.moveTo(point.x, point.y);

_.lineTo(

(Math.cos(angle) * 35) + cx,

(Math.sin(angle) * 35) + cy

);

_.closePath();

_.stroke();

_.beginPath();

_.moveTo(

(Math.cos(-angle) * 32) + cx,

(Math.sin(-angle) * 32) + cy

);

_.lineTo(

(Math.cos(-angle) * 27) + cx,

(Math.sin(-angle) * 27) + cy

);

_.closePath();

_.stroke();

},

path: [

['arc', 50, 50, 40, 0, 360]

]

},

{

width: 100,

height: 50,

stepsPerFrame: 1,

trailLength: 1,

pointDistance: .1,

fps: 15,

padding: 10,

//step: 'fader',

fillColor: '#FF2E82',

setup: function() {

this._.lineWidth = 20;

},

path: [

['line', 0, 20, 100, 20],

['line', 100, 20, 0, 20]

]

},

{

width: 100,

height: 100,

stepsPerFrame: 7,

trailLength: .7,

pointDistance: .01,

fps: 30,

setup: function() {

this._.lineWidth = 10;

},

path: [

['line', 20, 70, 50, 20],

['line', 50, 20, 80, 70],

['line', 80, 70, 20, 70]

]

},

{

width: 100,

height: 100,

stepsPerFrame: 4,

trailLength: 1,

pointDistance: .01,

fps: 25,

fillColor: '#FF7B24',

setup: function() {

this._.lineWidth = 10;

},

step: function(point, i, f) {

var progress = point.progress,

degAngle = 360 * progress,

angle = Math.PI/180 * degAngle,

angleB = Math.PI/180 * (degAngle - 180),

size = i*5;

this._.fillRect(

Math.cos(angle) * 25 + (50-size/2),

Math.sin(angle) * 15 + (50-size/2),

size,

size

);

this._.fillStyle = '#63D3FF';

this._.fillRect(

Math.cos(angleB) * 15 + (50-size/2),

Math.sin(angleB) * 25 + (50-size/2),

size,

size

);

if (point.progress == 1) {

this._.globalAlpha = f 

this._.fillStyle = '#EEE';

this._.beginPath();

this._.arc(50, 50, 5, 0, 360, 0);

this._.closePath();

this._.fill();

}

},

path: [

['line', 40, 10, 60, 90]

]

},

{

width: 100,

height: 100,

stepsPerFrame: 3,

trailLength: 1,

pointDistance: .01,

fps: 30,

step: 'fader',

strokeColor: '#D4FF00',

setup: function() {

this._.lineWidth = 6;

},

path: [

['arc', 50, 50, 20, 360, 0]

]

},

{

width: 100,

height: 100,

stepsPerFrame: 1,

trailLength: 1,

pointDistance: .02,

fps: 30,

fillColor: '#05E2FF',

step: function(point, index) {

this._.beginPath();

this._.moveTo(point.x, point.y);

this._.arc(point.x, point.y, index * 7, 0, Math.PI*2, false);

this._.closePath();

this._.fill();

},

path: [

['arc', 50, 50, 30, 0, 360]

]

},

{

width: 100,

height: 100,

stepsPerFrame: 1,

trailLength: 1,

pointDistance: .05,

strokeColor: '#FF2E82',

fps: 20,

setup: function() {

this._.lineWidth = 4;

},

step: function(point, index) {

var cx = this.padding + 50,

cy = this.padding + 50,

_ = this._,

angle = (Math.PI/180) * (point.progress * 360),

innerRadius = index === 1 ? 10 : 25;

_.beginPath();

_.moveTo(point.x, point.y);

_.lineTo(

(Math.cos(angle) * innerRadius) + cx,

(Math.sin(angle) * innerRadius) + cy

);

_.closePath();

_.stroke();

},

path: [

['arc', 50, 50, 40, 0, 360]

]

}

];

var d, a, container = document.getElementById('in');

for (var i = -1, l = loaders.length; ++i 

d = document.createElement('div');

d.className = 'l';

console.log(i);

a = new Sonic(loaders[i]);

d.appendChild(a.canvas);

container.appendChild(d);

a.canvas.style.marginTop = (150 - a.fullHeight) / 2 + 'px';

a.canvas.style.marginLeft = (150 - a.fullWidth) / 2 + 'px';

a.play();

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值