ProfiPHPProfiPHP
Категория: jQuery

Визуальная онлайн загрузка на Jquery и CSS3

Существует множество задач, для которых очень полезно будет реализовать визуальную загрузку (прогресс-бар). Например, вы оптимизируете изображения на сайте. Если все делать рекурсивно, на странице браузера вы увидите пустую страницу, которая будет постоянно в режиме загрузки. Но, на самом деле, процесс может и зависнуть, и работать не правильно. Гораздо удобнее будет выводить на экран процесс обработки в процентах, тем самым давая возможность пользователю рассчитать приблизительное время выполнения.

Для начала добавим стили и оформление загрузки:
<div class="progressbar">
<div class="progressbar-inner" style="width: 0%;"></div>
</div>
<div class="procent">0%</div>
<style type="text/css">
.progressbar{ width: 100%; height: 30px; margin: 0 auto 20px auto; padding: 0px; background: #cfcfcf; border-width: 1px; border-style: solid; border-color: #aaa #bbb #fff #bbb; box-shadow: inset 0px 2px 3px #bbb }
.progressbar,
.progressbar-inner{ border-radius: 4px; -moz-border-radius: 4px; -webkit-border-radius: 4px; -o-border-radius: 4px }
.progressbar-inner{ width: 0%; height: 100%; background: #999; background-size: 18px 18px; background-color: #fb5; background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .2) 50%, rgba(255, 255, 255, .2) 75%, transparent 75%, transparent); background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, .2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .2) 50%, rgba(255, 255, 255, .2) 75%, transparent 75%, transparent); background-image: -ms-linear-gradient(45deg, rgba(255, 255, 255, .2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .2) 50%, rgba(255, 255, 255, .2) 75%, transparent 75%, transparent); background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .2) 50%, rgba(255, 255, 255, .2) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, .2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .2) 50%, rgba(255, 255, 255, .2) 75%, transparent 75%, transparent); box-shadow:inset 0px 2px 8px rgba(255, 255, 255, .5), inset -1px -1px 0px rgba(0, 0, 0, .2) }
.progressbar .progressbar-inner{ -webkit-transition:width .5s ease-in; -moz-transition:width .5s ease-in; -o-transition:width .5s ease-in; transition:width .5s ease-in }
</style>
Код JavaScript:
function progressBar( )
{
$.ajax({
url: '/test.php',
success: function( data ) {
obj = $.parseJSON( data );
if ( obj.Repeat ) {
$(".progressbar").html( '<div class="progressbar-inner" style="width: '+obj.Num+'%;"></div>' );
$(".procent").html( obj.Num+' %' );
progressBar( );
}
else if ( obj.Success ) {
alert( 'GOOD' );
}
}
});
}
progressBar( );
В исполняемом файле PHP вывод необходимо осуществить следующим образом:
if ( $procent == 100 ) {
$output['Success'] = True;
}
else {
$output['Num'] = $procent;
$output['Repeat'] = True;
}
exit( json_encode( $output ) );
Логика работы скрипта зависит от задачи, но принцип вывода визуальной загрузки реализован в данных примерах.

Добавить комментарий

Имя:
Текст комментария: