Повзунок діапазону
Навігація
- 
    
        
                Макет повзунка діапазонаОдин діапазон
Подвійний діапазон
 - Кольори повзунка діапазону
 - Методи застосунку Повзунок діапазону
 - Параметри повзунка діапазону
 - Методи та властивості повзунка діапазону
 - 
    
        
                Події повзунка діапазануПодії 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