Для того чтобы верстать быстрее и легче поддерживать проект мы сделали jade-миксин для элементов форм. На вид это большая колбаса кода:
Однако на самом деле это очень простой в использовании миксин. С помощью него мы можем делать следующие виды элементов форм:
input(type=”text”)
input(type=”password”)
input(type=”email”)
input(type=”checkbox”)
input(type=”radio”)
select
textarea
Один из примеров вызова:
Давайте сначала посмотрим как работает миксин.
Обратите внимание, что миксин имееет один параметр - config. Это объект, который будет содержать наши опции. В начале мы объявляем значения по умолчанию. Эти значения будут в дальнейшем использованы в миксине. Если значение не заданно - мы заменяем его на пустую строку:
Далее редактируем идентификатор нашего поля. Если он не задан - будет равен параметру title.
Суть данной операции - привести id поля в валидный вид. Давайте рассмотрим эти трансформации на примере(было➞стало):
Далее миксин разделяется на 2 основные части в зависимости от вида поля. Если это input(type=”text”),input(type=”password”),input(type=”email”),select,textarea мы будем использовать структуру dl,dt,dd:
Мы используем эту структуру, потому что она наиболее семантична. Более подробно она описана в статье на xiper.net
Для добавления классов-модификаторов в миксине есть параметр class_array(массив классов). Вот как добавляется класс в миксине:
А вот пример вызова вместе с определением массива классов.
Это нужно для того, чтобы создать несколько видов полей и потом смело их переиспользовать. Например у вас на сайте 3 вида полей(например input(type=”text”)). Вы просто создаете 3 таких массива и используете их:
Далее рассмотрим следующий участок кода:
Разделение идет по типу поля, а также по параметру value. Обратите внимание на выражение ‘block’, это позволяет вставлять любые элементы после поля. Пример, ссылку:
В результате получаем следующий html:
После инпута вставилась ссылка.
Для input(type=”file”) используется следующая структура:
Все просто, может изменяться в зависимости от макета.
Для селекта используется следующая структура:
Т.е. для селекта в вызове миксина нужно передать массив опций.Пример вызова:
Структура для чекбоксов и радио-кнопок такова
Эту структуру наиболее легко стилизовать. Здесь разделение идет по параметру ‘checked’. На этом разбор миксина завершен.
Примеры вызова
input(type=”text”)
jade:
html:
input(type=”password”)
jade:
html:
input(type=”email”)
jade:
html:
textarea
jade:
html:
input(type=”checkbox”)
jade:
html:
input(type=”radio”)
jade:
html:
select
jade:
html:
Все опции
type - тип поля. Возможные значения - ‘text’,’textarea’,’email’,’password’,’checkbox’,’radio’,’select’.Обязательное поле
title - название поля. Обычно находится в dt, за исключением checkbox и radio.Обязательное поле
id - Идентификатор поля.
class_array - массив классов-модификаторов.
add_class - дополнительный класс для поля.
value - атрибут value для поля.
placeholder - атрибут placeholder для поля. Для селектов добавляется в data-placeholder.
options - массив опций. Только для селектов.
name - имя поля. Только для checkbox и radio.
checked - атрибут checked. Только для checkbox и radio.