tastySelect
Плагин для стилизации select без зависимостей.
Плагин для стилизации select без зависимостей.
На мобилках будет вызван нативный обработчик, а на компьютерах нормальный, красивый селект.
Запуск плагина в этом случае выглядит так:
tastySelect({ defaultText: "Можешь выбрать покушать! (Ctrl+Click)", });
Стилизовать можно вообще как угодно!
Структура одна, я просто меняю класс! Прекрасно стилизуется :з
Вообще-то хотел сделать больше стилей, но стало лень.
Скачивай скорее прямо из печи! Достаточно всего лишь подключить скрипт на страницу и вызвать функцию! Где такое видано? (тссс.. Я знаю что везде)
На самом деле не представляю как нормально объяснить структуру)
classes.whatever - Это класс, который мы передали в настройках. Например для classes.outer по умолчанию задано "style-select". Все классы указанные по умолчанию можно посмотреть здесь
<div class=classes.outer> Оболочка для стилизации и селекта <div class=classes.title></div> Видимая часть (если выпадашка скрыта) <div class=classes.options> Общий блок для элементов <ul class=classes.list> Такой список используется для элементов без подгруппы <li class=classes.option attributes.value attributes.index></li> Сам элемент. attributes.index - позиция элемента в select, attributes.value - значение оригинального option </ul> <ul class=classes.optgroup> Такой список используется для элементов подгруппы <li class=classes.label></li> Заголовок для подгруппы. Значение берется из атрибута label тега optgroup <li class=classes.option attributes.value attributes.index></li> Сам элемент. attributes.index - позиция элемента в select, attributes.value - значение оригинального option </ul> </div> <select>...</select> Оригинальный select. Разумеется его стоит скрыть в css. </div>
На мобилках все дурацко. Пропадает смысл такой стилизации и я предлагаю накладывать прозрачный select на нашу стилизацию. Селект продолжит работать, только вместо выпадашки будет нативный выбор. Дело ваше.
(classes.outer).(classes.mobile) select{ position: absolute; width: 100%; height: 100%; top: 0; left: 0; z-index: 10; opacity: 0; }
При тестах заметил интересное. Мобилка не дает выбрать первый option при множественном выборе. Написал решалку для этой штуки, по умолчанию она чинится. Что бы отключить нужно передать в настройках следующее:
tastySelect({ mobileFix: false, });
Вообще все настройки передаются при вызове в объекте.
Свойство | Значение |
---|---|
selector |
String Селектор элементов, которые надо обработать Значение по умолчанию: 'select' |
mobileFix |
Boolean Данный флаг позволяет сделать первый элемент активным для выбора. Обычно на мобилках это не работает Значение по умолчанию: true |
mask |
String Это маска для отображения выбранных элементов. Значение по умолчанию: '%' |
maskJoin |
String Если у нас в маске указано перечисление, то соединяться оно будет этой строкой Значение по умолчанию: ', ' |
defaultText |
Sctring Если поле не выбрано, то отображаться будет этот текст Значение по умолчанию: 'Select item...' |
classes |
Object В данный объект передаются классы по ключам, объяснение дальше Значение по умолчанию: {..Перечисление классов..} |
attributes |
Object В данный объект передаются атрибуты по ключам, объяснение дальше Значение по умолчанию: {..Перечисление атрибутов..} |
Классы настраиваются именно так:
Свойство | Значение |
---|---|
outer |
String Родитель всех родителей, внутри него все ( структура + select ) Значение по умолчанию: 'style-select' |
title |
String "Кнопка" селекта. В общем это видимая часть селекта без выпадашки Значение по умолчанию: 'style-select-title' |
options |
String Выпадашка Значение по умолчанию: 'style-select-options' |
optgroup |
String Если в select есть группы optgroup, то элементы группы попадут в список с этим классом Значение по умолчанию: 'style-select-optgroup' |
list |
String Если элементы висят без группы, то у списка будет этот класс Значение по умолчанию: 'style-select-list' |
label |
String Если есть группа, то ее заголовок поместится в li с этим классом Значение по умолчанию: 'style-select-label' |
item |
String Класс для элемента списка Значение по умолчанию: 'style-select-option' |
open |
String Данный класс добавляется к родительскому блоку, если выпадашка открыта Значение по умолчанию: 'st_open' |
selected |
String Этот класс добавляется к элементу списка, если он выбран Значение по умолчанию: 'st_selected' |
mobile |
String Класс добавляется к родительскому блоку, если это мобилка Значение по умолчанию: 'is_mobile' |
Атрибуты, вдруг пригодятся:
Свойство | Значение |
---|---|
index |
String Атрибут добавляется к элементу списка, а значением будет его оригинальная позиция в select Значение по умолчанию: 'data-index' |
value |
String Атрибут добавляется к элементу списка, значение - оригинальный value Значение по умолчанию: 'data-value' |