mp-progress — это инструмент, который позволяет создавать круговые индикаторы прогресса в мини-программах.
В настоящее время существует множество сторонних UI-компонентов для мини-приложений. Если стиль проекта близок к стороннему, то использование готовых библиотек компонентов может быть удобным решением. Однако если вы используете только несколько компонентов из большой библиотеки, установка всего пакета может быть нецелесообразной.
Цель mp-progress: создать небольшой по размеру файл (менее 7 КБ), который можно легко вызвать с помощью JavaScript и использовать с нативным тегом canvas. Это особенно полезно для проектов, где требуется высокий уровень контроля над реализацией.
Для установки mp-progress выполните следующую команду:
$ npm install mp-progress --save
Согласно документации, поддерживаются версии базовой библиотеки 2.7.0 и выше. Рекомендуется использовать последнюю версию базовой библиотеки для достижения наилучших результатов.
Чтобы использовать пакет npm в нативной мини-программе WeChat, необходимо выполнить дополнительную настройку. Подробные инструкции можно найти здесь: https://developers.weixin.qq.com/community/develop/article/doc/0008aecec4c9601e750be048d51c13.
Добавьте компонент в соответствующую страницу, инициализируйте данные и используйте компонент в файле wxml.
Обратите внимание, что этот способ не подходит для использования в среде wepy.
Пример кода:
{
"navigationBarTitleText": "Главная",
"usingComponents": {
"mpProgress": "mp-progress/dist/component/mp-progress"
}
}
...
// Способ использования параметров такой же, canvasSize по умолчанию равен 400*400
data = {
config: {
canvasSize: {
width: 400,
height: 400
},
percent: 100,
barStyle: [{width: 20, fillStyle: '#f0f0f0'}, {width: 20, animate: true, fillStyle: [{position: 0, color: '#56B37F'}, {position: 1, color: '#c0e674'}]}],
needDot: true,
dotStyle: [{r: 20, fillStyle: '#ffffff', shadow: 'rgba(0,0,0,.15)'}, {r: 10, fillStyle: '#56B37F'}]
},
percentage: 10
}
...
<mpProgress config="{{config}}" percentage="{{percentage}}"></mpProgress>
Этот способ следует принципу двусторонней привязки данных. Когда страница изменяет значение percentage, mp-progress автоматически обновляет представление.
Этот метод подходит для среды wepy, но должен быть вызван в функции onReady.
Передаваемые единицы измерения — rpx. Например, если ширина canvas равна 400 rpx, передайте 400. Затем будет автоматически вычислен фактический размер.
import MpProgress from 'mp-progress';
...
// Инициализация
// Обратите внимание: в среде wepy вызов должен осуществляться в функции onReady
const mprogress = new MpProgress({
target: this,
canvasId: 'progress',
canvasSize: {width: 400, height: 400},
barStyle: [{width: 12, fillStyle: '#f0f0f0'}, {width: 12, fillStyle: [{position: 0, color: '#56B37F'}, {position: 1, цвет: '#c0e674'}]}]
});
// Начало рисования прогресса, 60 представляет 60%
mprogress.draw(60);
...
<canvas class="canvas" type="2d" id="progress"></canvas>
Эффект | Описание |
---|---|
![]() |
Нормальный режим (по умолчанию) |
![]() |
Режим процента (достаточно передать процент, чтобы использовать его) |
Параметр | Тип данных | Обязательный параметр | Описание | Пример |
---|---|---|---|---|
target | Объект | Да | Контекст страницы | this |
canvasId | Строка | Да | Идентификатор canvas на странице | progress |
canvasSize | Объект | Да | Размер холста, единица измерения — rpx | {ширина: 200, высота: 300} |
percent | Число | Нет | По умолчанию используется 360 градусов для расчёта и отображения круговой диаграммы. Если передано 80%, автоматически рассчитывается максимальный полукруг в соответствии с размером холста. Допустимые значения: от 50% до 100%. | 100 |
barStyle | Массив | Да | Стиль круговой диаграммы, элементы массива располагаются в порядке их следования. Первый элемент обычно определяет цвет заливки всего круга, а второй элемент определяет цвет заполнения в зависимости от процентного соотношения. fillStyle может быть обычным цветом или градиентом. Для использования градиента необходимо передать информацию о каждой точке в виде массива. | [{ширина: 12, fillStyle: '#f0f0f0'}, {ширина: 12, анимация: истина, fillStyle: [{позиция: 0, цвет: '#56B37F'}, {позиция: 1, цвет: '#c0e674'}]}] |
needDot | Логическое значение | Нет | Требуется ли отображение точек прогресса | Ложно |
dotStyle | Массив | Нет | Стиль точек прогресса. Поддерживается максимум два стиля. Первый стиль по умолчанию добавляет тень для обеспечения чёткого отображения точек. Если первый диаметр точки больше, чем у круговой диаграммы, для полного отображения точки на холсте необходимо уменьшить соответствующий радиус круговой диаграммы на разницу. shadow является необязательным параметром. Значение shadow равно (0, 0, r/2, shadow)
|
dotStyle: [{r: 24, fillStyle: '#fff', shadow: 'rgba(0,0,0,.15)'}, {r: 10, fillStyle: '#56B37F'}] |
Учитывая, что индикатор выполнения может обновляться несколько раз на одной странице, после создания экземпляра компонента необходимо вручную вызвать функцию draw для рисования.
Параметр | Тип данных | Обязательный параметр |
---|---|---|
percentage | Число | Да |
Можно добавить параметр lineCap в любой элемент массива barStyle, например: barStyle: [{ширина: 12, lineCap: 'round', fillStyle: '#56B37F'}]. Допустимые значения lineCap можно посмотреть в документации.
Компонент использует новейший метод рендеринга WeChat, который требует версии SDK не ниже 2.7.0.
Если dotStyle содержит shadow, автоматически уменьшается радиус круговой диаграммы для обеспечения полного отображения shadow на всех точках.
Текущая анимация действует только в определении последнего элемента barStyle. Каждый кадр анимации составляет 2% от общей анимации.
Реализация кода может ссылаться на:
<view class="garage-status">
<canvas class="canvas" type="2d" id="progress"></canvas>
<view class="status-ctn">
<view class="status-count">127/127</view>
<view class="desc-text">Свободные парковочные места</view>
</view>
</view>
Изображение обратной связи можно посмотреть здесь:
<view class="feedback">
...
</view>
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )