Круглый прогресс бар который можно анимировать.
<div>
<div class="skill" data-cpb="200,100,20,10" data-cpb-animate="3000,0,easeInOutBack">
<div class="skill__outer" data-cpb-outer>
<div class="skill__inner" data-cpb-inner>
<div class="skill__number" data-cpb-number>
</div>
</div>
</div>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
<circle></circle>
</svg>
</div>
</div>
data-cpb="size,percent,innerBarSize,outerBarSize"
Это обязательный аттрибут, для работы прогресс бара. Все его значения необходимо заполнить.
- size - Высота и ширина прогресс бара
- percent - Процент заполнения прогресс бара
- innerBarSize - Ширина линии, которая будет заполняться
- outerBarSize - Ширина линии, которая будет всегда заполнена на 100%
data-cpb-outer
Это обязательный аттрибут. Необходим для просчета внутренней ширины и высоты, учитывая ширину outerBarSize.
data-cpb-inner
Это обязательный аттрибут. Необходим для просчета внутренней ширины и высоты, учитывая ширину innerBarSize и outerBarSize.
data-cpb-number
Это обязательный аттрибут. Сюда вставляются проценты percent.
data-cpb-animate="duration,delay,property"
Это НЕ обязательный аттрибут. Отвечает за анимированное заполнени.
- duration - Длительность анимации
- delay - Задержка перед стартом
- property - Тип анимации (Типы анимации смотрите ниже)
data-cpb-animate-stop
Это НЕ обязательный аттрибут. Отвечает за запуск анимации по событию.
- easeInSine
- easeOutSine
- easeInOutSine
- easeInQuad
- easeOutQuad
- easeInOutQuad
- easeInCubic
- easeOutCubic
- easeInOutCubic
- easeInQuart
- easeOutQuart
- easeInOutQuart
- easeInQuint
- easeOutQuint
- easeInOutQuint
- easeInExpo
- easeOutExpo
- easeInOutExpo
- easeInCirc
- easeOutCirc
- easeInOutCirc
- easeInBack
- easeOutBack
- easeInOutBack
- easeInElastic
- easeOutElastic
- easeInOutElastic
- easeInBounce
- easeOutBounce
- easeInOutBounce
Часто бывают задачи, когда нужно запустить анимацию по определённому событию.
Для этого:
- Добавляем аттрибут data-cpb-animate-stop к нужному прогрессбару;
- При срабатывагии нужного события, удаляем, у конкретного прогрессбара, аттрибут data-cpb-animate-stop;
- Запускаем функцию прогрессбара, только для текущего элемента;
! Важно - Функция прогрессбара progressBarStart(array) принимает только массивы.
Выглядеть это будет примерно так:
<div class="skill" data-cpb-animate-stop data-cpb="200,100,20,10" data-cpb-animate="3000,0,easeInOutBack">
...
</div>
const startElements = document.querySelectorAll('[data-cpb-animate-stop]');
if (startElements.length > 0) {
startElements.forEach(el => {
el.addEventListener('click', function (e) {
if (el.getAttribute('data-cpb-animate-stop') != null) {
el.removeAttribute('data-cpb-animate-stop');
progressBarStart([el]);
}
});
});
}
- Устанавливаем Node.js
- Копируем все файлы из репозитория на ваш PC
- Запускаем консоль в той папке, куда вы скачали все файлы
- Устанавливаем все необходимые пакеты с помощью команды: npm i
- Запускаем сборку с помощью команды: gulp
- #src
- fonts
- html
- _head.html
- _index.html
- _scripts.html
- img
- js
- plugins
- function.js
- scripts.js
- scss
- basis
- _FONTS.scss
- _MIXINS.scss
- _NULL.scss
- plugins
- element-theme.scss
- element.scss
- visual-page.scss
- style.scss
- index.html
- dist
- public
- node_modules
- .gitignore
- README.md
- gulpfile.js
- package-lock.json
- package.json
Папка #src предназначина для удобной разработики элементов для будующих проектов. Именно из этой папки собираются папки dist и public
fonts
Здесь размещен основной шрифт, который я использую.
html
Сюда входят три файла, которые подключаются в файле index.html
- _head.html - Тут содержание тега , а также подключение css файлов
- _index.html - Тут вся разметка элемента
- _scripts.html - Тут подключаю все необходимые скрипты
img
Тут могут находится необходимые для работы элемента изображения
js
Сюда входят два файла и папка для плагинов
- plugins - Папка для хранения неободимых плагинов
- function.js - Функция, где описана логика работы созданного элемента
- scripts.js - Запуск js кода
scss
Стили для демонстрации и работы элемента
- basis - Папка для основных настроек страницы
- _FONTS.scss - Подключение шрифта
- _MIXINS.scss - Подключение миксинов
- _NULL.scss - Обнуление стилей
- plugins - Папка для хранения неободимых плагинов
- element-theme.scss - Стили для визульного оформления элемента
- element.scss - Стили, необходимые для работы элемента
- visual-page.scss - Стили, для оформления страницы демонстрации
- style.scss - Тут подключаюстся все вышеперечисленные стили
index.html
Основная HTML разметка всей страницы. Тут подключаются три файла: _head.html, _index.html, _scripts.html.
Папка dist предназначина для удобного копирования, лишь необходимых для работы элемента, файлов.
element-theme.scss - Эти стили можно не копировать, если хотим реализовать полностью свой визуальный стиль.
Папка public предназначина для демонстрации работы элемента.
Нижеперечисленные файлы предназначены для запуска GULP сборки и/или github. Для работы элемента они не нужны. Все необходимые файлы для работы элемента находятся в папке dist .
- node_modules
- .gitignore
- README.md
- gulpfile.js
- package-lock.json
- package.json