v0.5.2
Это библиотека для переключения элементов на веб-странице.
Используется один обработчик событий на коллекцию NodeList, так же в методах используется кеширование, что минимизирует обращение к DOM.
Визуальные примеры: https://artnv.github.io/switcher/index.html
Примеры кода со страницы, находятся в директории /examples/
Для лучшего понимания, читать последовательно!
-
var x = Switcher.items()
- Возвращает новый объект, с управляющими методамиx.addTabs()
- Добавляет табыx.addBlocks()
- Добавляет блокиx.turnOn()
- Сначала выключает все элементы (или ранее включенный элемент), а потом включает один элемент (номер-индекс из аргумента)x.turnOff()
- Выключает все элементыx.stop()
- Блокирует реакцию табов на событияx.next()
- Возобновляет реагирование табов на события
-
Switcher.addEnemies()
- Оставляет включенным только один объект, остальные отключает -
Switcher.addFriends()
- Вызывается после.addEnemies()
. Создает комбинации из объектов, которые будут работать параллельно не отключая друг друга
this.index
- Свойство возвращает текущий индекс в NodeList, как табов, так и блоковthis.stop()
иthis.next()
- Одноименные синонимы методов что выше
Метод возвращает объект и принимает необязательный аргумент в виде объекта со свойствами.
var x = Switcher.items({
eventMethod: "mouseover", // Реакция на события (названия из стандартного списка). По умолчанию - onclick
backClickTurnOff: true // Свойство которое позволяет включать и отключать один и тот же элемент, при повторном событии. По умолчанию - false
});
Этот метод добавляет табы, они реагируют на события и переключают как самих себя так и блоки. Табы можно использовать без блоков.
.addTabs()
принимает три аргумента:
- Строку с тегами указывающими на коллекцию элементов(NodeList), либо на одиночный элемент
- Функция срабатывает при включении таба
- Функция срабатывает при отключении таба
Функции-обработчики можно не добавлять. По умолчанию, у табов их нет, а у блоков display: block/none
.
Внутри функций-обработчиков можно обращаться к активному табу через this.
Так же внутри этих функций будут доступны свойства и методы this.index
, this.stop()/.next()
, как в табах, так и в блоках
var x = Switcher.items();
x.addTabs('ul li', function () {
// Функция срабатывает при включении таба
this.style.color = "red";
}, function () {
// Функция срабатывает при отключении таба
this.style.color = "black";
});
Метод добавляет блоки, которые переключаются табами.
Все так же как и у табов, .addBlocks()
принимает три аргумента:
- Строку с тегами указывающими на коллекцию элементов(NodeList), либо на одиночный элемент. Количество элементов должно совпадать с количеством табов!
- Функция срабатывает при включении блока
- Функция срабатывает при отключении блока
x.addBlocks('#block span'); // Так же можно добавить функции-обработчики. Поведение такое же как и у табов
Метод включающий элемент по номеру, который передается в качестве аргумента. Отсчет с нуля. При включении сначала отключает все остальные элементы (или отключает ранее включенный из кеша).
x.turnOn()
- Для включения и отключения элементов, запускает функции-обработчики, который ранее были переданы в методы .addtabs()
и .addBlocks()
x.turnOn(0); // Включит первый элемент
x.turnOn(1); // Включит второй элемент, и отключит первый
Метод выключающий все элементы
x.turnOff()
x.stop()
- Блокирует реакцию табов на события.
x.next()
- Возобновляет реагирование.
Синонимы методов доступны внутри функций-обработчиков как this.stop()
и this.next()
.
x.addBlocks('#block img', function() {
var that = this;
this.stop(); // Табы блокируются
setTimeout(function() {
this.next(); // Табы реагируют
}, 5000)
}, function() {});
Метод принимает неограниченное количество объектов от Switcher.items()
, в качестве аргументов.
При включении одного элемента у объекта или вызова метода .turnOn()
, отключаются все элементы во всех объектах, которые были переданы в данный метод Switcher.addEnemies()
.
Попросту, включенным может быть один объект со своим табом и блоком. Остальные отключатся
Switcher.addEnemies(a, b, c, d); // Конфликтные объекты в качестве аргументов, которые будут отключат друг друга при включении
Метод должен запускаться после Switcher.addEnemies()
, который заставляет дружит конфликтные объекты.
В качестве аргументов принимает неограниченное количество массивов, состоящих из объектов, которые ранее были переданы в метод Switcher.addEnemies()
. Массивы как бы комбинации групп-друзей.
Switcher.addEnemies(a, b, c, d); // При включение одного элемента, все объекты будут отключатся, кроме активного
Switcher.addFriends([a, c], [x, y, z]); // Комбинация, которая работает параллельно, не отключая друг друга.
Свойство доступное в функциях-обработчиках, как в табах, так и в блоках, ссылающиеся на порядковый номер в коллекции NodeList. Отсчет с нуля.
x.addBlocks('ul li', function () {
console.log(this.index);
});