Повзунок діапазону
Навігація
-
Макет повзунка діапазонаОдин діапазон
Подвійний діапазон
- Кольори повзунка діапазону
- Методи застосунку Повзунок діапазону
- Параметри повзунка діапазону
- Методи та властивості повзунка діапазону
-
Події повзунка діапазануПодії DOM
Події екземплярів застосунку та повзунка діапазону
- Автоматична ініціалізація повзунка діапазону
- Змінні CSS
- Приклади
Макет повзунка діапазону
Один діапазон
<!-- Елемент повзунка діапазону -->
<div class="range-slider">
<!-- введення діапазону-->
<input type="range" min="0" max="100" step="1" value="10" />
</div>
Подвійний діапазон
input:range
не підтримує подвійний діапазон:<!-- Елемент повзунка діапазону -->
<div class="range-slider"></div>
Кольори повзунка діапазону
color-[color]
до елемента повзунка діапазону.<!-- червоний повзунок діапазону -->
<div class="range-slider color-red">...</div>
<!-- оранжевий повзунок діапазону -->
<div class="range-slider color-orange">...</div>
Методи застосунку Повзунок діапазону
Метод | Опис |
---|---|
app.range.create( parameters ) | створити екземпляр повзунка діапазону
● Метод повертає створений екземпляр повзунка діапазону |
app.range.destroy( el ) | знищити екземпляр повзунка діапазону
● |
app.range.get( el ) | отримати екземпляр повзунка діапазону за елементом HTML
● Метод повертає екземпляр повзунка діапазону |
app.range.getValue( el ) | отримати значення повзунка діапазону
● Метод повертає значення повзунка діапазону |
app.range.setValue( el, value ) | встановити нове значення повзунка діапазону
● ● Метод повертає значення повзунка діапазону |
Параметри повзунка діапазону
Параметр | За замовчуванням | Опис | Тип |
---|---|---|---|
el | Елемент повзунка діапазону. HTMLElement або рядок із CSS-селектором елемента повзунка діапазону | HTMLElement string | |
inputEl | Елемент введення повзунка діапазону або селектор CSS елемента введення. Якщо не вказано, буде спроба шукати input type="range" всередині елемента повзунка діапазону | HTMLElement string | |
dual | false | Увімкнути повзунок подвійного діапазону | boolean |
step | 1 | Мінімальний крок між значеннями | number |
label | false | Вмикає додаткову мітку навколо повзунка діапазону | boolean |
formatLabel | Метод має повертати форматований текст мітки регулятора діапазону. Як аргумент він отримує значення мітки | function(value) | |
min | Мінімальна знаечення | number | |
max | Максимальне значення | number | |
value | Початкове значення. Число у разі одного діапазону та масив значень у разі подвійного діапазону | number array | |
draggableBar | true | Якщо ввімкнено, також можна взаємодіяти з повзунком діапазону (змінити значення) на панелі діапазону, клацнувши та провівши пальцем | boolean |
vertical | false | Вмикає вертикальний повзунок діапазону | boolean |
verticalReversed | false | Перевертає повзунок вертикального діапазону ( vertical також має бути ввімкнено) | boolean |
scale | false | Вмикає шкалу повзунка діапазону | boolean |
scaleSteps | 5 | Кількість позначок шкали | number |
scaleSubSteps | 0 | Кількість підетапів шкали (кожен крок буде поділено на це значення) | number |
formatScaleLabel | Метод має повертати форматоване значення масштабу. Як аргумент він отримує поточне значення кроку масштабу. Цей метод буде викликаний для кожного кроку шкали. | function (value) | |
limitKnobPosition | Обмежує положення регулятора розміром смужки діапазону. За замовчуванням увімкнено у темі iOS | boolean |
Параметр | Опис | Тип |
---|---|---|
on | Об'єкт з обробниками подій. Наприклад: | object |
var range = app.range.create({
el: '.range-slider',
on: {
change: function () {
console.log('Range Slider value changed')
}
}
})
Методи та властивості повзунка діапазону
var range = app.range.create({ /* parameters */ })
range
змінна у прикладі вище) з корисними методами та властивостями:Властивості
Властивість | Опис |
---|---|
range.app | Посилання на глобальний екземпляр застосунку |
range.el | HTML-елемент повзунка діапазону |
range.$el | Примірник Dom64 із HTML-елементом повзунка діапазону |
range.inputEl | Вхідний HTML-елемент повзунка діапазону |
range.$inputEl | Екземпляр Dom64 із вхідним HTML-елементом повзунка діапазону |
range.rangeWidth | Ширина повзунка діапазону (у пікселях) |
range.dual | Логічна властивість, яка вказує, чи є вона подвійною чи ні |
range.min | Мінімальне значення діапазону |
range.max | Максимальне значення діапазону |
range.value | Значення діапазону |
range.scale | Логічна властивість, яка вказує, чи scale ввімкнено чи ні |
range.scaleSteps | Кількість ступенів шкали |
range.scaleSubSteps | Кількість підступень шкали |
range.$scaleEl | Екземпляр Dom64 із згенерованим елементом HTML масштабу |
range.knobs | Масив, де кожен елемент представляє HTMLElement створеної ручки діапазону (2 ручки у випадку подвійного повзунка) |
range.labels | Масив, де кожен елемент представляє HTMLElement створеної мітки регулятора діапазону (2 мітки у випадку подвійного повзунка) |
range.vertical | Логічна властивість, яка вказує на те, вертикальна вона чи ні |
range.verticalReversed | Логічна властивість, яка вказує, чи є вона вертикальною та перевернутою чи ні |
range.params | Параметри повзунка діапазону |
Методи
Метод | Опис |
---|---|
range.getValue() | Повертає значення повзунка діапазону |
range.setValue( value ) | Установіть нове значення повзунка діапазону |
range.updateScale() | Повторно обчислити та повторно відобразити шкалу повзунка |
range.destroy() | Знищує екземпляр повзунка діапазону |
range.on( event, handler ) | Додати обробник подій |
range.once( event, handler ) | Додати обробник подій, який буде видалено після запуску |
range.off( event, handler ) | Видалити обробник подій |
range.off( event ) | Видалити всі обробники для вказаної події |
range.emit( event, ...args ) | Запустити подію на примірнику |
Події повзунка діапазону
Події DOM
Подія | Об'єкт | Опис |
---|---|---|
range:change | Елемент повзунка діапазона | Подія буде ініційована, коли значення повзунка діапазону буде змінено |
range:changed | Елемент повзунка діапазона | Подія буде ініційована після відпускання повзунка після зміни значення |
range:beforedestroy | Елемент повзунка діапазона | Подія буде запущена безпосередньо перед знищенням повзунка діапазону |
Події екземплярів застосунку та повзунка діапазону
range
.Подія | Аргумент | Опис | Об'єкт |
---|---|---|---|
change | (range, value) | Подія буде ініційована, коли значення діапазону буде змінено. Як аргумент обробник події отримує екземпляр діапазону | range |
rangeChange | (range, value) | Подія буде ініційована, коли значення діапазону буде змінено. Як аргумент обробник події отримує екземпляр діапазону | app |
changed | (range, value) | Подія буде ініційована після відпускання повзунка після зміни значення. Як аргумент обробник події отримує екземпляр діапазону | range |
rangeChanged | (range, value) | Подія буде ініційована після відпускання повзунка після зміни значення. Як аргумент обробник події отримує екземпляр діапазону | app |
beforeDestroy | (range) | Подія буде запущена безпосередньо перед знищенням повзунка діапазону. Як аргумент обробник події отримує екземпляр діапазону | range |
rangeBeforeDestroy | (range) | Подія буде запущена безпосередньо перед знищенням повзунка діапазону. Як аргумент обробник події отримує екземпляр діапазону | app |
Автоматична ініціалізація повзунка діапазону
range-slider-init
:<!-- додати клас range-slider-init -->
<div class="range-slider range-slider-init">
<input type="range" min="0" max="100" step="1" value="10" />
</div>
app.range.get
методом застосунку:var range = app.range.get('.range-slider');
if (range.value > 50) {
// щось зробити
}
● У випадку, якщо ви використовуєте повзунок з одним діапазоном і у вас є input:range
всередині, тоді параметри step
, min
, max
, value
можна встановити з тих самих атрибутів введення:
<!--Параметри min, max, step, value будуть встановлені для відповідних вхідних атрибутів -->
<div class="range-slider range-slider-init">
<input type="range" min="0" max="100" step="1" value="10" />
</div>
● В іншому випадку, якщо у вас немає input:range
або ви використовуєте введення подвійного діапазону, ви можете встановити всі доступні параметри за допомогою data-
атрибутів елемента повзунка діапазону.
<!-- параметри встановлені через data- attributes -->
<div
class="range-slider range-slider-init"
data-min="0"
data-max="100"
data-step="10"
data-label="true"
data-value="50"
></div>
data-value-left
і data-value-right
:<!-- параметри встановлені через data- attributes -->
<div
class="range-slider range-slider-init"
data-dual="true"
data-min="0"
data-max="100"
data-step="10"
data-label="true"
data-value-left="30"
data-value-right="60"
></div>
Змінні CSS
:root {
/*
--t4-range-bar-active-bg-color: var(--t4-theme-color);
--t4-range-scale-bg-color: var(--t4-range-bar-bg-color);
--t4-range-scale-substep-bg-color: var(--t4-range-bar-bg-color);
*/
--t4-range-scale-step-height: 5px;
--t4-range-scale-substep-width: 1px;
--t4-range-scale-substep-height: 4px;
--t4-range-bar-bg-color: rgba(0, 0, 0, 0.2);
}
:root .dark,
:root.dark {
--t4-range-bar-bg-color: rgba(255, 255, 255, 0.2);
}
.ios {
--t4-range-size: 28px;
--t4-range-bar-size: 4px;
--t4-range-bar-border-radius: 2px;
--t4-range-knob-size: 28px;
--t4-range-knob-color: #fff;
--t4-range-knob-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
--t4-range-label-size: 24px;
--t4-range-label-text-color: #000;
--t4-range-label-bg-color: #fff;
--t4-range-label-font-size: 12px;
--t4-range-label-font-weight: 500;
--t4-range-label-border-radius: 5px;
--t4-range-label-padding: 0px 2px;
--t4-range-scale-text-color: #666;
--t4-range-scale-step-width: 1px;
--t4-range-scale-font-size: 12px;
--t4-range-scale-font-weight: 400;
--t4-range-scale-label-offset: 4px;
}
.md {
--t4-range-size: 20px;
--t4-range-bar-size: 2px;
--t4-range-bar-border-radius: 0px;
--t4-range-knob-size: 12px;
--t4-range-knob-box-shadow: none;
--t4-range-label-size: 26px;
--t4-range-label-font-weight: normal;
--t4-range-label-font-size: 10px;
--t4-range-label-border-radius: 50%;
--t4-range-label-padding: 0px;
--t4-range-scale-step-width: 2px;
--t4-range-scale-font-size: 12px;
--t4-range-scale-font-weight: 400;
--t4-range-scale-label-offset: 4px;
}
.md,
.md .dark,
.md [class*='color-'] {
--t4-range-knob-color: var(--t4-theme-color);
--t4-range-label-text-color: var(--t4-md-on-primary);
--t4-range-label-bg-color: var(--t4-theme-color);
--t4-range-scale-text-color: var(--t4-md-on-surface-variant);
}
Приклади
Приклади
<template>
<div class="page">
<div class="navbar">
<div class="navbar-bg"></div>
<div class="navbar-inner sliding">
<div class="title">Range Slider</div>
</div>
</div>
<div class="page-content">
<div class="block-title">Volume</div>
<div class="list list-strong-ios list-outline-ios simple-list">
<ul>
<li>
<div>
<i class="icon t4-icons if-not-md" style="width: 28px">speaker_fill</i>
<i class="icon material-icons md-only" style="width: 24px">volume_mute</i>
</div>
<div style="width: 100%; margin: 0 16px">
<div class="range-slider range-slider-init">
<input type="range" min="0" max="100" step="1" value="10" />
</div>
</div>
<div>
<i class="icon t4-icons if-not-md" style="width: 28px">speaker_3_fill</i>
<i class="icon material-icons md-only" style="width: 24px">volume_up</i>
</div>
</li>
</ul>
</div>
<div class="block-title">Brightness</div>
<div class="list list-strong-ios list-outline-ios simple-list">
<ul>
<li>
<div>
<i class="icon t4-icons if-not-md" style="width: 28px">sun_min</i>
<i class="icon material-icons md-only" style="width: 24px">brightness_low</i>
</div>
<div style="width: 100%; margin: 0 16px">
<div class="range-slider range-slider-init color-orange" data-label="true">
<input type="range" min="0" max="100" step="1" value="50" />
</div>
</div>
<div>
<i class="icon t4-icons if-not-md" style="width: 28px">sun_max_fill</i>
<i class="icon material-icons md-only" style="width: 24px">brightness_high</i>
</div>
</li>
</ul>
</div>
<div class="block-title display-flex justify-content-space-between">
Price Filter <span class="price-value">$${priceMin} - $${priceMax}</span>
</div>
<div class="list list-strong-ios list-outline-ios simple-list">
<ul>
<li class="item-row">
<div>
<i class="icon t4-icons if-not-md" style="width: 28px">money_dollar_circle</i>
<i class="icon material-icons md-only" style="width: 24px">attach_money</i>
</div>
<div style="width: 100%; margin: 0 16px">
<div class="range-slider range-slider-init color-green" @range:change=${onPriceChange} data-label="true"
data-dual="true" data-min="0" data-max="500" data-step="1" data-value-left="200" data-value-right="400">
</div>
</div>
<div>
<i class="icon t4-icons if-not-md" style="width: 28px">money_dollar_circle_fill</i>
<i class="icon material-icons md-only" style="width: 24px">monetization_on</i>
</div>
</li>
</ul>
</div>
<div class="block-title">With Scale</div>
<div class="block block-strong-ios block-outline-ios">
<div class="range-slider range-slider-init" data-min="0" data-max="100" data-label="true" data-step="5"
data-value="25" data-scale="true" data-scale-steps="5" data-scale-sub-steps="4"></div>
</div>
<div class="block-title">Vertical</div>
<div class="block block-strong-ios block-outline-ios display-flex justify-content-center">
<div class="range-slider range-slider-init margin-right" data-vertical="true" data-min="0" data-max="100"
data-label="true" data-step="1" data-value="25" style="height: 160px"></div>
<div class="range-slider range-slider-init margin-horizontal" data-vertical="true" data-min="0" data-max="100"
data-label="true" data-step="1" data-value="50" style="height: 160px"></div>
<div class="range-slider range-slider-init margin-horizontal" data-vertical="true" data-min="0" data-max="100"
data-label="true" data-step="1" data-value="75" style="height: 160px"></div>
<div class="range-slider range-slider-init margin-left" data-dual="true" data-vertical="true" data-min="0"
data-max="100" data-label="true" data-step="1" data-value-left="25" data-value-right="75"
style="height: 160px"></div>
</div>
<div class="block-title">Vertical Reversed</div>
<div class="block block-strong-ios block-outline-ios display-flex justify-content-center">
<div class="range-slider range-slider-init color-red margin-right" data-vertical="true"
data-vertical-reversed="true" data-min="0" data-max="100" data-label="true" data-step="1" data-value="25"
style="height: 160px"></div>
<div class="range-slider range-slider-init color-red margin-horizontal" data-vertical="true"
data-vertical-reversed="true" data-min="0" data-max="100" data-label="true" data-step="1" data-value="50"
style="height: 160px"></div>
<div class="range-slider range-slider-init color-red margin-horizontal" data-vertical="true"
data-vertical-reversed="true" data-min="0" data-max="100" data-label="true" data-step="1" data-value="75"
style="height: 160px"></div>
<div class="range-slider range-slider-init color-red margin-left" data-dual="true" data-vertical="true"
data-vertical-reversed="true" data-min="0" data-max="100" data-label="true" data-step="1" data-value-left="25"
data-value-right="75" style="height: 160px"></div>
</div>
</div>
</div>
</template>
<script>
export default (props, { $t4, $el, $update }) => {
let priceMin = 200;
let priceMax = 400;
const onPriceChange = (e) => {
const range = $t4.range.get(e.target);
priceMin = range.value[0];
priceMax = range.value[1];
$update();
};
return $render;
};
</script>
Techno4 Framework
- Get Started
- Introduction
- Kitchen Sink
- Installation
- Package Structure
- App HTML Layout
- RTL Layout
- Initialize App
- Events
- Router Component
- Routes
- Store
- App/Core
- Accordion/Collapsible
- Action Sheet
- Area chart
- Autocomplete
- Badge
- Block/Content Block
- Breadcrumbs
- Button
- Calendar/Date Picker
- Cards
- Checkbox
- Chips
- Color Picker
- Contact List
- Data Table
- Dialog
- Floating action button
- Form
- Gauge
- Icons
- Inputs / Form Inputs
- Grid /Layout Grid
- Link
- List Button
- List View
- List Index
- Login Screen
- Menu List
- Messagebar
- Navbar
- Messages
- Notification
- Panel/Side Panels
- Photo Browser
- Picker
- Pie Chart
- Popover
- Popup
- Preloader
- Progressbar
- Pull to Refresh
- Radio
- Range Slider
- Searchbar