Документация к фреймворку «Стилобат»

Переменные Размеры Отступы Размеры шрифтов Цвета Цвета для фонов Цвета для текста Цвета для состояний Цвета для Теней Стрелка Кнопки Параметры кнопки Размеры «Летающая» кнопка «Отключённая кнопка» Кнопка на одном элементе Отключение активности Кнопка-действие Комбинирование модификаций Кнопка добавления файла Внедряемая кнопка добавления файла Зажатая кнопка Чекбоксы disabled Домик Группы Вертикальные группы Иконки Крестик удаления/закрытия Нотификация Стрелочка Дропдаун Галочка Инпуты Сложные инпуты Группировка Имя сервиса внутри инпута Плейсхолдеры Автоувеличивающийся инпут Автоувеличивающаяся текстария Инпут с ошибкой Центрированный инпут Острова Ссылки Параметры ссылок Меню Пункт меню Группы пунктов меню Разделитель Выбранный пункт меню Обрезание в многоточие Страница Попапы Попап с хвостиком Промо кнопка Размеры «Летающая» кнопка Псевдо-кнопка Инвертированная псевдокнопка Настраиваемая прозрачность границ Радиокнопки Селект На <select> На обычной кнопке Табы Текст Основной текст Заголовки Юзерпик

Скины

Важно: всё это дело находится в активной разработке, всё может поменяться, поломаться, исправиться.

Переменные

В островных скинах используется ряд глобальных переменных, описывающих различные общие штуки. Этот список будет постепенно пополняться, по мере рефакторинга скинов.

Размеры

Отступы

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

  1. $islands_xs — самый маленький возможный отступ, примерно равен шести пикселям.

  2. $islands_s — просто маленький отступ, примерно равен десяти пикселям.

  3. $islands_m — средний отступ, примерно равен шестнадцати пикселям.

  4. $islands_l — большой отступ, примерно равен двадцати пикселям.

Если нужно задать отсупы для какого-либо блока с текстом, правильнее всего использовать вертикальные отступы на один шаг меньше, чем горизонтальные: padding: $islands_s $islands_m — такие блоки будут лучше смотреться.

Размеры шрифтов

Пока есть два стандартных размера шрифта, вынесеных в переменные. Остальные размеры, возможно, также когда-нибудь будут задаваться в переменных, но пока можно использовать соответствующие скины.

  1. $islands_text_m — стандартный размер текста, примерно равен пятнадцати пикселям.

  2. $islands_text_s — маленький размер текста, примерно равен тринадцати пикселям.

Цвета

Цвета для фонов

  1. $islands_bg_page — фон страницы, чуть серее, чем просто белый, для контрастности чистых белых блоков.

  2. $islands_bg_main — Обычный белый фон.

Цвета для текста

  1. $islands_color_text — стандартный цвет для текста.

  2. $islands_color_text_misc — второстепенный цвет для текста.

Цвета для состояний

  1. $islands_color_focus — Жёлтый цвет для состояний фокуса.

  2. $islands_color_error — Красный цвет для ошибок.

Цвета для Теней

  1. $islands_shadow_focus — Тень для состояний фокуса, использует соответствующий цвет.
  2. $islands_shadow_error — Тень для состояния ошибки, использует соответствующий цвет.

Стрелка

Фирменная стрелка Яндекса, по умолчанию может использоваться для названия сервиса:

skin: islands-arrow
Фотки
stylcss

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

Фотки
stylcss

Если же нужна поисковая стрелка, нужно использовать параметр search для правильных отступов (+ нужно поправить выравнивание поля внутри):

skin: islands-arrow search
stylcss

Такая стрелка не тянется, так как там внутри просто обычные инлайн-блоки, ну а если надо сделать её тянущейся, нужно использовать kind: shrink с дополнительным враппером:

Пример

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

skin: islands-arrow (__helper '')

skin: islands-arrow tail

Либо можно использовать специальный параметр-элемент, создав хвостик из вызова скина:

skin: islands-arrow red 110px (__helper '& > .arrow-tail')

Кроме того, можно настраивать как цвет, так и высоту стрелки, передавая параметры соответствующих типов:

Компания
stylcss

исходный код скина   оно же на Гитхабе

Кнопки

Обычная кнопка:

skin: islands-button

Кнопка ссылкой

stylcss

Параметры кнопки

На данный момент скин кнопки переусложнён, в дальнейшем он будет упрощён, но основы API останутся теми же.

Почти все параметры можно комбинировать, как обычно, порядок параметров в коде не важен.

Размеры

У кнопки есть два основных размера: стандартный и small, который применяется довольно просто:

skin: islands-button small
stylcss

Кроме того, есть пара «служебных» размеров: адаптивный — adaptive, и отсутствие заданных размеров — sizeless:

skin: islands-button adaptive

skin: islands-button sizeless

Адаптивный размер используется для чекбоксов и радиокнопок — он зависит от размера шрифта. Безразмерный параметр можно использовать, если необходимо сверстать кнопку с определёнными размерами, дабы не возиться с переопределениями.

«Летающая» кнопка

Если кнопка находится на каком-то абстрактном фоне, можно сделать её летающий при помоши параметра fly:

skin: islands-button fly

При нажатии такая кнопка, в отличие от обычной, «приземляется», а не вдавливается.

stylcss
«Отключённая кнопка»

Делается добавлением стандартного класса .is-disabled:

Кнопка ссылкой
Кнопка на одном элементе

Как видно из примеров выше, у кнопки должен быть внутренний элемент, например, .button-content — это нужно для правильной вёрстки «нажимания» кнопки. Но есть и альтернативный вариан: использование параметра one-element.

  skin: islands-button one-element

Такую кнопку рекомендуется делать только если нет возможности в коде добавить дополнительный элемент, так как к ней гораздо сложнее добавлять какие-то сложные внутренности (даже добавление простой иконки может быть переусложнено).

Кнопка одним элементом

stylcss
Отключение активности

По умолчанию кнопка «зажимается» по маусдауну. Но если нужно убрать подобное поведение, то можно использовать параметр no-active (это используется, например, для чекбоксов):

skin: islands-button no-active

Если же после отключения активного состояния захочется его использовать вручную — при навешивании какого-либо класса, есть скин-модификатор skin-islands-button_pressed:

skin: islands-button_pressed

Кнопка-действие

Это, по сути, второй скин кнопки, в коде сейчас обе кнопки наследутся от одного общего миксина (но это не важно).

skin: islands-action-button

Эта кнопка как бы говорит: «Нажми меня!»

Кнопка ссылкой

stylcss

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

stylcss

Комбинирование модификаций

Ещё раз: не нужно в html выплёвывать все модификации. Если нужна маленькая летающая кнопка, то, конечно, можно наплодить классов вида small-fly-action-button, но, на самом деле, стоит к каждому элементу интерфейса подходить индивидуальнее, и для подобной кнопки прописать всё соответствующим образом в CSS:

stylcss

Кнопка добавления файла

Для кнопки добавления файла нужно использовать kind-file-input с любой нужной кнопкой:

stylcss

Тут видно, что мы задаём дополнительный отступ в 6px на родителе — для того, чтобы у файлового инпута не обрезалось состояние фокуса. Побочный эффект: кликабельная область чуть увеличивается, но это не страшно.

Внедряемая кнопка добавления файла

И второй вариант, для него нужно больше блоков, зато его можно применить и внутри уже имеющихся кнопок.

stylcss

Тут нужно заметить, что требуются дополнительные стили для фокуса — возможно в будущем это как-то упростится, но пока только так.

Плюсом этого решения, помимо внедряемости — отсутствие overflow: hidden на применяемом контексте. В случае с кнопкой это позволяет иметь и фокус, и правильную кликабельную область.


исходный код скина   оно же на Гитхабе

Зажатая кнопка

Иногда может возникнуть необходимость сделать «нажатое» состояние кнопки, например, если она выступает в качестве импровизированного (или даже настоящего) чекбокса.

Для этого есть специальный подскин — skin-islands-button_checked, который можно применить там, где хочется сделать постоянное вжатое состояние:

skin: islands-button_checked

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

stylcss

И работать оно будет для любых типов кнопок:

Чуть сложнее (но всё ещё достаточно просто) сделать с помощью этого скина зажатую кнопку только на CSS:

stylcss

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

Видно, что для CSS-only варианта приходится использовать чуть более сложную html-структуру, но зато всё это дело получается очень гибким и это хороший пример того, как можно сверстать один и тот же блок на разной HTML-структуре и логике, но используя один скин.


исходный код скина   оно же на Гитхабе

Чекбоксы

skin: islands-checkbox

И чекбоксы, и радиокнопки по умолчанию масштабируются под размер шрифта.

stylcss

Если же надо сделать чекбокс определённого (не зависимого от размера шрифта) размера, вне контекста, можно сделать так:


stylcss

Нужно отметить, что из-за того, что имя внутреннего элемента отличается от родителя (small-radio и radio-icon) нужно при вызове явно прокидывать имя внутреннего элемента, не опираясь на дефолт.


исходный код скина   оно же на Гитхабе

disabled

skin: islands-disabled

Используется для визуального отключения какого-либо блока.

Отключённая кнопка

stylcss

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


исходный код скина   оно же на Гитхабе

Домик

Простой домик, крыша которого автоматически подстраивается под ширину самого домика.

skin: islands-domik

По умолчанию домик блочный, если нужен инлайновый контекст, можно использовать параметр inline:

skin: islands-domik inline

У домика есть два обязательных «элемента»: крыша и контент:

skin: islands-domik (__roof '&-roof') (__content '&-content')
Домик
Более широкий домик, с большой крышей
stylcss

Пока что домик имеет одну тему, в будущем, возможно, появится возможность настройки как внешнего вида, так и размеров.


исходный код скина   оно же на Гитхабе

Группы

Некоторые скины, по сути, чуть настроенные алиасы к типам, группы — один из них.

Так как в островных стилях кнопки используется псевдоэлемент, нужно прокидывать соответствующие стили и на него, поэтому для групп, состоящих из кнопок и инпутов нужно использовать не kind: group, а skin: group.

У группы должен быть враппер:

skin: islands-group

Если элементы группы лежат на одном уровне, можно использовать CSS3-селекторы и применить group-item:

skin: islands-group-item
stylcss

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

skin: islands-nested-group-item '.toggler-view'

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

stylcss

Оно же, но с чекбоксами и на псевдокнопках:

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

skin: islands-group-start

skin: islands-group-middle

skin: islands-group-end
stylcss

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

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

skin: islands-group-item vertical

skin: islands-group-start vertical

skin: islands-group-middle vertical

skin: islands-group-end vertical
stylcss

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


исходный код скина   оно же на Гитхабе

Иконки

Крестик удаления/закрытия

Используется для закрытия попапов, очищения текстовых полей ввода и т.д.

 

stylcss

Любую иконку можно сделать «активной» — добавить курсор и ховер с опасити, используя параметр with-hover

 

stylcss

Нотификация

Иконка-баджик нотификации, с циферками.

7 42 99+

stylcss

Стрелочка

skin: islands-icon_arrow

Иконка для стрелочки. Принимает большое число опциональных параметров:

  • Размер: либо одно число, либо именованный параметр size; по умолчанию — 6px.
  • Толщина: именованный праметр width; по умолчанию — 2px.
  • Цвет: по умолчанию наследует цвет текста.
  • Направление: одно из ключевых слов top, right, bottom, left; по умолчанию — bottom.
  • Модификатор направления: можно задать дополнительные направления параметром-элементом -direction, например (-direction '&:hover' right).
  • Стандартный транзишн: чтобы включить транзишн для смены направления достаточно использовать параметр with-transition.
  • Смещение иконки по X и Y: именованные параметры offset-x и offset-y, например (offset-y -6px)

stylcss

Дропдаун

Частный случай стрелочки, используется в дропдаунах.

Текст , Дропдаун

stylcss

Галочка

Иконка с галочкой — для чекбоксов и аналогичных мест.

 

Тест на границы:  

stylcss

исходный код скина   оно же на Гитхабе

Инпуты

Простейший инпут можно сделать на одном элементе:

skin: islands-input

stylcss

Он может быть маленьким — с параметром small

skin: islands-input small

stylcss

Текстария — визуально тот же инпут, так что можно использовать те же скины и классы:

Сложные инпуты

Если же нужно что-то сложнее (нужно вставлять сущности внутрь, типа крестика и подобных штук) лучше использовать «составной» инпут.

Обычный скин инпута, на самом деле, составной: это объединение двух подскинов — skin-islands-input-box и skin-islands-input-view. Ну и ещё есть один подскин — для фокуса, чтобы можно было его перенести на нужный блок — skin-islands-input_focus.

skin: islands-input-box

skin: islands-input-view no-focus

skin: islands-input-focus

В минимальном обрамлении он выглядит аналогично обычному инпуту, но html-структура у него должна быть посложнее:

stylcss

Но если нужно будет добавить любые контролы внутрь, это становится очень легко сделать:

Конечно же, и у сложного инпута есть параметр small:

stylcss

Такой инпут легко растягивать на всю ширину:

Группировка

Для такого инпута хорошо работает группировка с кнопками:

Имя сервиса внутри инпута

Специально для использования внутри инпута есть скин для «меток», обычно они используются для имени сервиса внутри инпута:

skin: islands-input-label

stylcss

Плейсхолдеры

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

skin: islands-input-placeholder (__inner '&-inner') 

В коде сложного инпута он должен идти строго в самом начале контента.

stylcss

Для маленького плейсхолдера нужно передать дополнительный параметр small:

skin: islands-input-placeholder small (__inner '&-inner') 

stylcss

Довольно просто сделать плесхолдер-подсказку, если использовать дополнительный элемент -ghost, в который дублировать значение инпута — это позволит расположить плейсхолдер ровно после вбитого текста:

skin: islands-input-placeholder (__inner '&-inner')  (__ghost '&-ghost') 

Его же можно использовать для подсказки строчного «автокомплита» (в примере работает только со словом «Абракадабра», не исчезает по блюру и т.д.):

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

Автоувеличивающийся инпут

Со сложным инпутом становится просто сделать автоувеличивающийся по ширине инпут:

Автоувеличивающаяся текстария

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

stylcss

Инпут с ошибкой

Если нужно отобразить состояние неверно заполненного инпута, можно воспользоваться скином input_error

skin: islands-input_error
Тут что-то не так заполнено!
stylcss

Центрированный инпут

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

skin: islands-input centered

stylcss

Для сложных инпутов с плейсхолдерами пока простого пути нет, нужно просто прокинуть text-align: center куда нужно. Когда будет полноценный отдельный скин для сложных инпутов, станет попроще.


исходный код скина   оно же на Гитхабе

Острова

Стандартный блок, отличается белым фоном и тонкой тенюшкой.

skin: islands-isle
stylcss

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

skin: islands-isle fly
stylcss

Для отступов контента можно использовать специальный параметр:

skin: islands-isle (__content '&-content')

Hello, there!

I'm a normal island.

stylcss

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

skin: islands-isle (__content '&' small)
And I'm a small one!
stylcss

Также в этом примере можно увидеть, что подскин контента можно применять прямо к самому блоку.


исходный код скина   оно же на Гитхабе

skin: islands-link

Помимо обычной ссылки из коробки идут ещё два скина: для внешней ссылки и псевдоссылки:

skin: islands-outer-link

skin: islands-pseudo-link

По умолчанию ссылки (не псевдо) не подчёркнуты, для подчёркивания нужно передавать параметр underline:

skin: islands-link underline

Примеры:

In CTR we trust


styl

We don’t care


styl

I’m not a link really


styl

Параметры ссылок

При определении ссылки опциональным параметром можно задать цвет:

skin: islands-link #070

По умолчанию ссылки имеют красный ховер, если ссылка должна быть без ховера, можно использовать параметр no-hover:

skin: islands-link no-hover

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

skin: islands-link #070 #D00

Иногда может возникнуть желание перенести часть внешнего вида ссылки на внутренние элементы, в этом случае можно использовать параметр nested, в этом случае этот блок не получит ховер, цвет и курсор. Кроме того, для некоторых браузеров можно починить некликабельные промежутки между внутренними элементами, для этого нужно использовать параметр fix-gaps.

© «Яндекс»


styl

исходный код скина   оно же на Гитхабе

Меню

«Меню» — вертикальный список с различными пунктами.

skin: islands-menu

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

Опционально можно использовать параметр padded, это добавит соответствующие отступы сверху и снизу:

skin: islands-menu padded

Дополнительным параметром можно передать размер, пока доступно два варианта: по-умолчанию и маленький — small:

skin: islands-menu padded small

Пункт меню

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

skin: islands-menu-item

По умолчанию такой пункт обладает некоторой раскладкой и подсвечивается по наведению:

stylcss

И пример маленьких пунктов меню и без враппера с паддингами:

stylcss

Если нужно убрать ховер с пункта меню, можно использовать параметр no-hover:

skin: islands-menu-item no-hover

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

skin: islands-menu-item (_hover '&_hover_yes')

Группы пунктов меню

Пунты меню можно разделять по группам, для этого используется элемент menu-group:

skin: islands-menu-group

Две подряд идущих друг за другом группы будут разделены полоской, если есть параметр padded, то и отступами.


stylcss

Разделитель

Для создания разделителя между пунктами меню можно использовать не только группы, но и отдельный элемент-разделитель.

skin: islands-menu-separator

Аналогично остальным элементам меню, разделитель может принимать как параметр padded, так и small

stylcss

Выбранный пункт меню

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

skin: islands-menu-item_checked
stylcss

Обрезание в многоточие

Если внутри пункта меню может быть много контента, нужно использовать параметр ellipsis. Он не стоит по умолчанию, так как включает overflow: hidden, что не всегда может быть нужно.

skin: islands-menu-item ellipsis
stylcss

исходный код скина   оно же на Гитхабе

Страница

Один из ключевых скинов, задающих базовые стили для страницы.

Состоит из skin-islands-page() и skin-islands-page-body(), состоящих из базовых стилей для html и body соответственно.

Их можно применить и вручную:

html
  skin: islands-page
body
  skin: islands-page-body

Однако, есть «шорткат», позволяющий это сделать проще: нужно перед подключением островных скинов включить соответствующую настройку:

$init_islands_root = true

Это выполнит автоматическую инициацию вышеупомянутых скинов.

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

Таким образом, если вы пишете проект на Стилобате с ноля — нужно инициировать базовые стили, если же вы дописываете стили в уже существующий проект, инициация может что-то сломать, так что без неё блоки будут независимее, потому нужно опустить инициирование и задать явное значение для rem.


исходный код скина   оно же на Гитхабе

Попапы

Хотя скин попапа — по сути скин летающего острова, есть соответствующий алиас:

skin: islands-popup

Кроме того, существует несколько скинов-помощников: -content для стилей контента, -close для закрывающего крестика и -overlay для затемняющего слоя поверх контента.

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

stylcss

Как видно в styl-исходнике выше, у попапа могут быть два элемента: контент и кнопка закрыти. Если они не нужны, можно опустить соответствующие вызовы стилей.

Элемент контента задаёт внутренние отступы у блока, поэтому если хочется, можно или перенести их напрямую к блоку попапа — если не задавать соответствующий селектор, либо использовать параметр small для уменьшения соответствующих отступов:

Большое мороженное с орехами и карамелью в вафельном рожке
stylcss

Если же нужен модальный попап, лучше воспользоваться соответствующими типами семейства modal:

stylcss

Попап с хвостиком

Для попапа с хвостиком («дропдауна») нужно передать соответствующий параметр при создании попапа:

skin: islands-popup (__tail '&-tail')

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

stylcss

styl

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

Надо отметить, что сейчас хвостик позиционируется относительно своего центра, поэтому если нужно прижать его к краю, то нужно задавать соответствующую величину не меньше 11 пикселей.

Если нужно позиционировать хвостик справа или снизу, нужно не забыть переопределять top: auto или left: auto.

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


исходный код скина   оно же на Гитхабе

Промо кнопка

skin: islands-promo-button
stylcss

Размеры

У промо кнопки есть четыре размера: стандартный, small, large и xlarge, нестандартный размер задается параметром:

skin: islands-promo-button small
stylcss
skin: islands-promo-button large
stylcss
skin: islands-promo-button xlarge
stylcss

«Летающая» кнопка

Как и простую кнопку, промо кнопку можно сделать летающей при помощи параметра fly:

skin: islands-promo-button fly
stylcss

исходный код скина   оно же на Гитхабе

Псевдо-кнопка

skin: islands-pseudo-button

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

Псевдокнопка ссылкой

stylcss

Аналогично обычной кнопке, псевдокнопка может быть обычного размера, и маленькая — если использовать параметр small:

skin: islands-pseudo-button small
stylcss

Инвертированная псевдокнопка

Так как псевдокнопка не имеет фона, то если понадобится использовать её на тёмном фоне, то нужно будет воспользоваться модификатором _inverted:

skin: islands-pseudo-button _inverted
stylcss

Такой модификатор можно добавить и к уже имеющейся кнопке, или вызвав только подскин, или используя соответствующий синтаксис:

skin: islands-pseudo-button_inverted

skin: islands-pseudo-button_ _inverted
Инвертированная псевдокнопка
stylcss

Настраиваемая прозрачность границ

Основная задача псевдокнопки — быть кнопкой, но при этом и не притягивать к себе внимание. В некоторых случаях обычная псевдокнопка может оказаться или слишком бледной, или слишком яркой, в этом случае можно исправить это, воспользовавшись параметром border-alpha, изменив значение полупрозрачности границы.

skin: islands-pseudo-button (border-alpha 0.15)

Это будет работать и для обычной псевдокнопки:

stylcss

И для инвертированной:

stylcss

исходный код скина   оно же на Гитхабе

Радиокнопки

skin: islands-radio

всё аналогично чекбоксам

stylcss

исходный код скина   оно же на Гитхабе

Селект

На <select>

skin: islands-select

Если хочется сделать CSS-only селект, это возможно, однако код такого селекта будет не особо оптимальным: приходится городить много хардкода для правильных отступов в Опере и ФФ.

HTML селекта это, по сути, микс с кнопкой:

stylcss

И маленький селект (для маленькой кнопки)

skin: islands-select small

stylcss

С изменённой шириной

Но, на самом деле, всё это дикий хардкод, будет работать только для двух этих конкретных размеров, если получится сделать селекты полностью на JS, на основе обычных кнопок и попапов, это будет предпочтительнее.

На обычной кнопке

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

  Типа селект

stylcss

Для маленькой кнопки нужен соответствующий small параметр. Ну и можно менять ширину кнопки в большую сторону, иконка будет в правильном месте:

  Типа маленький селект

stylcss

Ну и, конечно, можно использовать в принципе любую кнопку для селекта, например, псевдокнопку:

  Типа селект в псевдокнопке

Или кнопку действия:

  Типа селект в кнопке действия


исходный код скина   оно же на Гитхабе

Табы

Табы состоят из враппера:

skin: islands-tabs

и отдельных пунктов:

skin: islands-tabs-item

Плюс есть подскин с текущим табом:

skin: islands-tabs-item_selected
stylcss

На айтемах нужные размеры задаются в em, так что достаточно задавать размер только на родителе:

skin: islands-tabs small
stylcss

Можно использовать табы внутри острова, но сейчас там хардкодно, надо что-то придумать с отступами и всем таким.

stylcss

исходный код скина   оно же на Гитхабе

Текст

Все текстовые скины могут принимать опциональный параметр reset, который будет сбрасывать соответствующие стили для соответствующих тегов, для параграфов это <p>, для заголовков — заголовки соответствующих уровней.

Кроме того, каждый текстовый скин по умолчанию имеет заданный нижний маджин, если он по какой-то причине не нужен, можно использовать параметр no-margin.

Основной текст

Для основного текста есть два скина: skin-islands-para и skin-islands-para2, для текста обычного размера и маленького (второстепенного) соответственно. Например:

skin: islands-para reset

skin: islands-para2 no-margin

Пара примеров:

Пример обычного текста — Arial 15px, высота строки — 22px

stylcss

Пример второстепенного текста — Arial 13px, высота строки — 18px

stylcss

Заголовки

Заголовки задаются скинами skin-islands-h1skin-islands-h6, например:

skin: islands-h1 reset

Заголовок

stylcss

Заголовок

stylcss

Заголовок

stylcss

Заголовок

stylcss
Заголовок
stylcss
Заголовок
stylcss

исходный код скина   оно же на Гитхабе

Юзерпик

Стандартный круглый (в нормальных браузерах) юзерпик.

skin: islands-userpic

Картинка задаётся через инлайновый стиль style="background-image:url('foo.png')".

Для раскладки исопользуется тип icon с нужным размером, например, (size 42px)

stylcss

Можно применять и к ссылкам, есть дополнительный скин-модификатор для ховера, его можно применить через соответствующий параметр:

skin: islands-userpic_ (_hover '&:hover')

stylcss

Ну и пример «из шапки» — с юзернеймом и иконкой нотификации.

7 Inky
stylcss

исходный код скина   оно же на Гитхабе