Стилобат

Типы

Привет, мир!1

Бейзлайнер

Тип для выравнивания по базовой линии блоков, для которых не оно не работает (например, блоков с overflow: hidden).

Базовый тип задаёт инлайн-блочное поведение, да само выравнивание:

kind: baseliner

Контент, который хочется выравнивать, нужно обернуть в элемент -content:

kind: baseliner (-content '&-content')

По умолчанию у бейзлайнера создаётся элемент -helper на :before, если необходимо, это можно поменять:

kind: baseliner (-helper '&-helper') (-content '&-content')

Блок

kind: block

Стандартный тип для любого обычного блока. Делает элемент блочным, кроме того добавляет ему явное позиционирование.

Модификация позиционирования

По умолчанию kind-block имеет относительное позиционирование. В редких случаях может возникнуть необходимость в статичном позиционировании, и в этом случае важно его задавать явно, для этого есть модификатор static:

kind: block static

Инлайн-блоки

По умолчанию kind-block имеет display: block, в случае, если этот блок нужен в инлайновом контексте, необходимо применять модификатор inline:

kind: block inline

Это даст display: inline-block и вертикальное выравнивание по умолчанию

Вертикальное выравнивание инлайн-блоков

По умолчанию инлайновые блоки имеют vertical-align: top, если хочется это поменять, можно передать соответствующий параметр:

kind: block inline baseline

kind: block inline middle

kind: block inline bottom

Кнопка

(дописать что-нибудь о том, что кнопка наследует pill)

kind: button

Стандартный тип для кнопок. Задаёт все необходимые любой кнопке стили, в том числе делает и соответствующий ресет.

Отключение ресета

Если же применяется к блоку, гарантированно никогда не могущим быть тегом <button> в HTML, можно применить параметр no-reset, который даст всё, полагающееся кнопке, но не будет применять к блоку ресет.

kind: button no-reset

Вертикальное выравнивание кнопок

По умолчанию кнопки имеют vertical-align: baseline, если хочется это поменять, можно передать соответствующий параметр:

kind: button middle

kind: button top

kind: button bottom

Центрирование

kind: centering

Сложный тип для центрирования чего-либо внутри чего-то другого.

Враппер, задаваемый kind: centering задаёт контект центрирования.

Центрируемые элементы

Чтобы указать какие элементы будут подвергаться центрированию, нужно или использовать параметр-элемент -item, или вызвать соответствущий элемент вручную:

.menu
  kind: centering (-item '&-item')

или

.menu-item
  kind: centering-item

Хелпер для центрирования

Для центрирования используется метод на инлайн-блоках, поэтому для этого нужен какой-то дополнительный элемент. По умолчанию это псевдоэлемент :before, но если это потребуется изменить, можно применить соответствующий параметр-элемент -helper:

.menu
  kind: centering (-helper '&-helper')

или же вызвать его на нужном элементе вручную:

.menu-helper
  kind: centering-helper

Клеарфикс

kind: clear

Этот тип используется в качестве клеарфикса. Используется метод микроклеарфикса, поэтому по умолчанию элемент клирится и сверху, и снизу.

Элементы для клеарфикса

По умолчанию блок клирится псевдоэлементами, если же необходимо сделать это обычным элементом (или применить на сам блок), можно воспользоваться параметрами-элементами -before и -after:

kind: clear (-after '& > .clearfix')

Клеарфикс только с нужной стороны

Если нужно заклирить только с одной стороны, можно использовать параметры after или before:

kind: clear (-before '')

kind: clear (-after '')

Контент

kind: content 1em

Сложный тип для «умного» контента. Принимает от одного до четырёх численных параметров (как padding или margin), после чего даёт элементу соответствующие отступы, но так, что верхний и нижний отступ будут «сквозными», то есть они могут съедаться соответствующими маджинами расположенных около них элементов.

Элементы для сквозных отсупов

По умолчанию сквозные отступы создаются псевдоэлементами (а в IE они не применяются, становясь обычными паддингами), если же необходимо использовать для этого обычные элементы, можно использовать соответствующие параметры-элементы -before и -after:

kind: content 1em (-after '&-helper')

Ограничение сторон

Если не нужно применять сквозные отступы, можно обнулить соответствующие стороны с помощью пустых селекторов для соответствующих параметров -before или -after, в этом случае соответствующая сторона получит обычный паддинг.

kind: content 1em (-before '')

Отключение

kind: disabled

Тип для «отключения» тех или иных блоков. Делает блок полупрозрачным и убирает курсор и все события по ховеру с блока.

Полупрозрачность

По умолчанию блок становится полупрозрачным на 50%, если нужно это изменить, достаточно передать соответствующее значение opacity параметром:

kind: disabled 0.6

Вложенные блоки

Этот тип по умолчанию можно применять и для родителей: в этом случае опасити не будет применяться для детей.

Если нужно это отлючить или же возникнет желание поменять селектор, с помощью которого это делается, нужно переопределить элемент -nested:

kind: disabled (-nested '')

События

По умолчанию на отключенный элемент ставится pointer-events: none, чтобы это отключить нужно задать параметр with-events:

kind: disabled with-events

Многоточие

Тип для добавления многоточия для длинного однострочного текста.

kind: ellipsis

Если нужно заодно сделать элемент инлайновым — можно добавить модификатор _inline:

kind: ellipsis _inline

Заполнение

kind: fill

Тип для расположения элемента поверх другого элемента, используя абсолютное позиционирование.

Параметры сторон

Этот тип может принимать до четырёх численных параметров (как padding или margin), задающих соответствующие отступы по сторонам (свойства top, right, bottom и left):

kind: fill 10px 20px 30px 40px

Аналогично свойствам вроде padding можно использовать шорткаты для задания одинаковых значений разным сторонам:

kind: fill 10px 20px

Естественно, допустимо использовать и отрицательные значения:

kind: fill -1px

Параметр фона

Опционально можно передать параметром цвет или строку. В случае цвета это значение станет цветом фона элемента:

kind fill red

Cтрока обрамится в url() и получит некоторые дефолтные стили фона:

kind fill 'pattern.png'

(нужно сделать вариант с сущностью url(), иначе оно не будет работать там, где нужен резолвер)

Цвет и изображение можно совмещать:

kind fill -1px rgba(0,0,0, 0.5) 'pattern.png'

Параметры повторения фона

Изначально переданное изображение не будет повторяться (no-repeat), для изменения этого можно передать параметром соответствующее значение повторения фона:

kind fill 'pattern.png' repeat

kind fill 'pattern.png' repeat-x

kind fill 'pattern.png' repeat-y

Группа

«Группа» это набор разных элементов, соединённых в один элемент. Обычно такие элементы располагаются вплотную друг к другу, например, кнопка и тексовое поле ввода.

Базовый тип group почти ничего не задаёт кроме запрета переноса для внутренних элементов:

kind: group

Элементы группы

Элементы группы можно разделить на три типа: абстрактные group-item, а также конкретные group-start, group-middle и group-end.

Абстрактные элементы group-item, по сути, являются шорткатами для конкретных, записанных через CSS-селекторы :first-child и :last-child. Их имеет смысл применять если список элементов однородный и унифицированный:

kind: group-item

Если же визуальный порядок элементов будет отличаться от их порядка в DOM, лучше применять конкретные обозначения начала, середины и конца группы:

kind: group-start

kind: group-middle

kind: group-end

Элементы группы можно настроить: по умолчанию таким элементам на стыках сбрасываются скругления и элементы сдвигаются внахлёст на один пиксель. Сброс скруглений можно отключить параметром no-radius, а нахлёст — no-margin.

Кроме того, если визуальное отображение элемента находится внутри айтема, можно переопределить селектор, на котором будут сбрасываться стили на стыках, в этом же селекторе можно сбрасывать стили на нескольких блоках, скажем, на псевдоэлементах:

kind: group-item '& > .complex-button-inner, & > .complex-button-inner:before'

Направляющие

kind: guide

Этот тип расширяет тип fill, делая блок некликабельным. Для определения элементов, которые будут кликабельны, нужно задать их параметром-элементом:

kind: guide (-item '&-item')

Параметр метода направляющих

По умолчанию необходимая функциональность достигается с помощью применения visibility: hidden на враппере и visibility: visible на элементах. Если необходимо использовать этот тип внутри другого элемента, использующего visibility, или если нужно использовать визуальное отображение враппера, можно использовать параметр visible — в этом случае изменения кликабельности будет достигаться с помощью свойства pointer-events.

kind: guide visible

Скрытие

kind: hidden

Этот тип используется для гарантированного скрытия элемента через display: none !important;.

Визуальное скрытие

Если по каким-то причинам нужно скрыть блок только «визуально», но так, чтобы он был виден в структуре документа, например, для устройств-помощников типа Voice Over, можно использовать параметр visually:

kind: hidden visually

Иконка

kind: icon

Этот тип используется для иконок и подобных сущностей. Он наследует стили от блочного типа с инлайновым параметром, а также задаёт небольшой сдвиг вверх для компенсации визаульного расположения иконок бок о бок с текстом.

Параметр размера

Если нужно задать иконке явный размер, можно передать именованный параметр size, где первое число — ширина иконки, второе — высота.

kind: icon (size 16px 18px)

Если передать одно число, оно будет использованно и для ширины, и для высоты.

kind: icon (size 16px)

Параметр изображения

(нужно сделать вариант с сущностью url(), иначе оно не будет работать там, где нужен резолвер)

Опционально можно передать параметром строку. В этом случае строка будет использованна как url() для изображения.

kind: icon 'send.png'

По умолчанию изображение не повторяется и выравнивается по центу иконки.

Автоопределение размеров иконки

По умолчанию, если не были переданны размеры иконки, но был передан адрес изображения, иконка получит размеры по размерам изображения, если оно будет найдено в файловой системе. Для отключения этого поведения можно использовать параметр sizeless:

kind: icon 'send.png' sizeless

Вертикальное выравнивание

По умолчанию иконка наследует выравнивание от блочного типа с инлайновым параметром, если хочется это поменять, можно передать соответствующий параметр:

kind: icon baseline

kind: icon middle

kind: icon bottom

Замена изображений

Иногда может возникнуть необходимость заменить изображение, заданное <img src="…"/> на другое, в этом случае, помимо размеров, можно передать и параметр replace-image, с помощью которого оригинальное изображение скроется, а размеры нового изображения будут заданы паддингами.

Инпуты

kind: input

Стандартный тип для инпутов. Задаёт минимально необходимые инпутам стили, в том числе делает и соответствующий ресет.

Ширина инпута

По умолчанию ширина инпута равна примерно 400 пикселям, плюс применяется максимальная ширина в 100%. Если необходимо задать иную явную ширину инпуту, можно передать любое числовое значение параметром — оно задаст ширину.

kind: input 10em

Отключение ресета

Если же применяется к блоку, гарантированно никогда не могущим быть тегами <input> или <textarea> в HTML, можно применить параметр no-reset, который даст всё, полагающееся игпуту, но не будет применять к блоку ресет.

kind: input no-reset

Вертикальное выравнивание инпутов

По умолчанию инпуты имеют vertical-align: baseline, если хочется это поменять, можно передать соответствующий параметр:

kind: input middle

kind: input top

kind: input bottom
kind: link

Это стандартный тип для ссылок. По умолчанию такие ссылки подчёркиваются и окрашены в синий, а по наведению становятся красными. Всё это можно очень гибко настроить.

Подчёркивание

Чтобы убрать подчёркивание у ссылки, достаточно передать пустой модификатор _underline:

kind: link (_underline '')

Если нужно подчёркивать ссылку не всё время, а только по наведению, достаточно добавить селектор к модификатору:

kind: link (_underline '&:hover')

Ховер

По умолчанию ссылка будет становиться красной по ховеру, чтобы убрать это поведение, достаточно передать пустой селектор соответствующему модификатору:

kind: link (_hover '')

Смена цвета

Чтобы сменить цвет ссылки достаточно передать цвет параметром:

kind: link #22C

Это сменит только цвет ненаведённой ссылки, так что если захочется сменить цвет ссылки по ховеру, нужно передать соответствующий цвет в соответствующий модификатор (не забыв указать селектор):

kind: link #22C (_hover '&:hover' #D00) 

Псевдо-ссылка

Чтобы сделать псевдо-ссылку, достаточно применить модификатор _pseudo:

kind: link _pseudo

Сложные ссылки

Часто может возникнуть необходимость применить подчёркивание только ко внутреннему элементу, чтобы оставить без подчёркивания какие-либо внешние символы или не делать подчёркивание между текстом ссылки и иконкой. Для этого достаточно применить соответствующие параметры подчёркивания или псевдоссылки для соответствующего элемента:

kind: link (_underline '&-inner')

kind: link (_pseudo '&-inner')

Модальность

Позиционирование

kind: modal-wrap

Тип для создания модального элемента (поверх всех элементов на странице), отвечает за позиционирование.

Расширяет типы guide и centering

Параметр клеарфикса

Если указан параметр no-elements, то клеарфиксы не будут сгенерированы

kind: modal-wrap no-elements

Содержимое

kind: modal

Тип для создания содержимого модального элемента. Заполняет весь размер обертки kind: modal-wrap.

Расширяет типы guide-item и centering-item

Паранжа

kind: modal-overlay

Тип для создания на странице панаржи, закрывающие все элементы.

Расширяет типы guide-item и fill

Схлопывание

Тип схлопывания полезен если нужно от какого-то блока с контентом «отъедать» ширину другими блоками, расположенными слева/справа.

По сути это всего лишь враппер над поведением флоатов, включающий в себя клерфикс и дополнительные правки для инлайнового поведения.

Основным типом — shrink — отмечается блок, который нужно схлопывать:

kind: shrink

Если для текста внутри этого блока нужно отображать многоточие при обрезании, достаточно добавить тип ellipsis:

kind: shrink, ellipsis

Если схлопывающийся блок хочется сделать инлайновым, надо добавить параметр inline:

kind: shrink inline

Если вы делаете блок инлайновым или вам просто нужно его заклирить, нужно обернуть этот блок в shrink-wrap:

kind: shrink-wrap

или

kind: shrink-wrap inline

Теперь нужно присвоить подтипы для блоков, которые, собственно, будут отъедать место от основного блока. Это подтипы shrink-left и shrink-right.

Важный момент: в DOM эти блоки должны идти до блока с kind: shrink, иначе магия не сработает.

kind: shrink-left

kind: shrink-right
Яндекс.Метрика