Главная » Файлы » Прочие скрипты » HTML5

Красивые загрузчики использующие HTML5 canvas
24.06.14, 09:06:33

Скачать файл




Демо

Красивые загрузчики использующие HTML5 canvas.
В демо приведено уже довольно много симпатичных вариантов прелоадеров, но с помощью javascript файла sonic (размером около 3 Кб в сжатом состоянии) можно создать и собственные анимации загрузки. Лучше всего sonic работает с анимацией ввиде "змейки". Пути движения "змейки" можно задать используя функции дуг, Безье или линии.

Качаем архив sonic.js кидаем в папку js



Создаём пустой div с классом in
Код
<div id="in"></div>


Вот стили
Код
div.l {  
float: left;  
margin: 20px 20px 0 0;  
border: 0 solid #c2c2c2;  
background: #fff;  
height: 150px;  
width: 150px;  
position: relative;  
  }  
  .sonic {  

  }  
  canvas { display: block; }


Вот сам код лоадеров! Выбираем и ставим!
Код
<script type="text/javascript" src="/js/sonic.js"></script>  

  <script>  

  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 < .5 ? 1-f : 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 < l;) {  

d = document.createElement('div');  
d.className = 'l';  

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();  

  }  

  </script>

Категория: HTML5 | Добавил: Apocalypse | Теги: использующие, загрузчики, Canvas, HTML5, красивые
Просмотров: 467 | Загрузок: 0 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email: