Як використовувати і стилізувати смугу завантаження в HTML5

16

Від автора: В HTML5 з’явився новий елемент – progress, який працює також, як і звичайна смуга завантаження (progress bar), і використовується для того, щоб візуалізувати процес виконання певного завдання, наприклад, завантаження даних на сервер.

У даній статті розглядається приклад того, як додавати подібні елементи на сторінку і стилізувати їх; також в цій статті показаний метод зміни значень в таких елементів з допомогою JavaScipt.

Як використовувати і стилізувати смугу завантаження в HTML5

Додавання смуги на сторінку завантаження

Щоб додати смугу завантаження на сторінку, необхідно використовувати елемент progress. Значення смуги завантаження визначаються з допомогою атрибутів value і max. Ось приклад:

Оскільки в базовій реалізації використовуються стандартні форми, то візуальне подання даного елемента залежить від платформи. Нижче наведено приклад того, як смуга завантаження виглядає в Windows 7.

Як використовувати і стилізувати смугу завантаження в HTML5

Як вже було сказано, елемент progress є звичайною смугою завантаження HTML5 і, простіше кажучи, відображає прогрес виконання якого-небудь завдання. При цьому атрибут max визначає максимальне значення, необхідне для виконання задачі, а атрибут value визначає, скільки вже виконано на поточний момент.

Браузерна підтримка: Chrome 8+, Firefox 16+, IE 10+, Opera 11+, Safari 6+.

Стилізація смуги завантаження

Тепер давайте визначимо стилі для смуги завантаження, щоб вона виглядала однаково на всіх платформах. Щоб додати стилі для елемента progress, ми просто використовуємо селектор тега. У наступному прикладі ми змінюємо колір фону, прибираємо кордону і скругляем кути у даного елемента.

progress {
background-color: #00FEFD;
border-radius: 10px;
border: 0;
height: 20px;
width: 200px;
}

Але тут криється проблема, оскільки кожен браузер трохи по-своєму відображає дані стильові правила:

У Firefox стилі зачіпають тільки смугу завантаження, а індикатор завантаження, що відображає поточне значення, залишається незмінним.

У Chrome і Safari дані стилі зовсім не застосовуються, за винятком стилів з вендорным префіксом -webkit-.

Як використовувати і стилізувати смугу завантаження в HTML5

Отже, в Chrome та Safari зовнішній вигляд елемента progress може бути змінений завдяки використанню псевдо-класів: -webkit-progress-bar і -webkit-progress-value. Перший з них використовується для визначення стилів для завантаження смуги, а другий – для індикатора завантаження (поточне значення виконуваного завдання).

rogress::-webkit-progress-bar {
/* стилі */
}
progress::-webkit-progress-value {
/* стилі */
}

У Firefox є власний псевдо-клас -moz-progress-bar, який можна використовувати тільки для стилізації індикатора прогресу.

progress::-moz-progress-bar {
/* стилі */
}

Ось повний список всіх селекторів, необхідних для стилізації елемента progress.

progress {
/* стилі */
}
progress::-webkit-progress-bar {
/* стилі */
}
progress::-webkit-progress-value {
/* стилі */
}
progress::-moz-progress-bar {
/* стилі */
}

Зміна значення смуги завантаження з допомогою JavaScript

А тепер давайте розглянемо простий приклад використання смуги завантаження з наступним HTML-кодом.

Щоб змінити значення смуги завантаження JavaScript, можна використовувати наступний код.

document.getElementById( ‘demo-progress-bar’ ).value = 45;

Даний код змінює значення елемента progress, id якого дорівнює «demo-progress-bar», на 45. Ось простий JavaScript код, який змінює значення елемента progress з 0 до 100, збільшуючи значення на одиницю кожні 100 мілісекунд.

var counter = 0;
function progressDemo() {
counter++;
document.getElementById( ‘demo-progress-bar’ ).value = counter;
if( counter == 100 ) {
clearInterval( timer );
}
}
var timer = setInterval( progressDemo, 100 );