Обзор Twitter Bootstrap
Вольный перевод официальной документации расположенной по адресу: http://twitter.github.com/bootstrap/
[ADS]
Bootstrap - это прекрасно укомплектованных инструментов, с помощью которых можно офигенно быстро создавать сайты. Альтернативы танцуют в сторонке (BluePrint, 960 и т.п.). Танцуют они по причине того что Bootstrap связали с LESS. Ну а те кто вообще не понимает о чем речь, то скажу что это очень симпатичный и порядочный себе CSS Framework. Кто знает русскую поделку CSS-Framework.ru, тот может смело уяснить, что это всего навсего 5% от Bootstrap.
Bootstrap сключает в себя заранее созданные стили, и скрипты для Web типографики, форм, кнопок, таблиц, и многого другого.
Новичкам о CSS Framework.
CSS Framework - издревле зародился в виде ресетов для IE. т.е. некоторые настройки стилей Internet Explorer сбрасывались с НОРМАЛЬНЫЕ. Например убиралась рамка у картинок. Затем стали конечно же дефолтить для красоты. Это заголовки, ширинки для столбцов, полоски и отступы. До той степени дефолтили что подключив стиль любая говностраница становилась человеком белым. Затем бородатые обезьяны перебросились на формы. Инпуты разные, красивые элементы, стали подключать графику легонько, но слава богу выродился CSS3 и графика стала принципиально выбрасываться. Затем кто-то из толпы крикнул: Долой гриды! И придумали span16. Другие захотели span24. Стали уходить от резины и наконец с приходом HTML5 одним взмахом руки, стало можно лепить сайт небывалой четкости буквально взмахом пятки над клавиатурой. Самая свежая историческая тенденция выражается именно в Bootstrap, CSS3 стал сильно менять в ногах пытливых умов и придумали LESS. Конец эры.
Для больших задач необходимо подключать куда больше ШТУК, но не будем торопиться.
Примеры шаблонов
[ADS]
Взглянув на домашние заготовки можно сказать что все они схожи дизайном, и все они достаточно красивы, однако начав свой сайт, вы не получите прямо таких же скруглений, все же это заготовка с уже разукрашенным исходником. Посмотрите внутрь и увидите набор стилей, которые красят вид. Однако украшений как видите очень мало. Настолько мало что все можно написать за 5 минут из головы.
Нулевой старт
[ADS]
Весь HTML код нужно поместить в .container,
<divclass="container">
...
</div>
Основа основ - Сетки
[ADS]
Итак, поехали, самая основа современных CSS Фреймворков - это сетки. В Twitter Bootstrap - ширина сетки равна 16 колонкам. т.е. Условно экран шириной в 940px разбит на 16 одинаковых колонок. Теперь Представьте что на HTML странице есть строки, Строка - шапка, строка - контент, и строка футер. Это условно. В каждой такой строке есть уникальный набор колонок. В шапке одна колонка, в Сонтентной части есть контент который будет занимать 10 из 16 колонок, и сайдбар который занимает 6 из 16. Футер тоже одна колонка , т.е. 16 из 16. Тогда разметка нашего HTML документа будет:
<divclass="row">
<divclass="span16"></div>
</div>
<divclass="row">
<divclass="span10"></div>
<divclass="span6"></div>
</div>
<divclass="row">
<divclass="span16"></div>
</div>
Можно оставлять пустые колонки, где вообще не будет контента, запишется это так:
<divclass="span4 offset4">Ширина в 4 колонки со смещением в 4 колонки</div>
Так же можно создавать строки внутри строк.
<divclass="row">
<divclass="span10">
<divclass="row">
<divclass="span5">
<divclass="span5">
</div>
</div>
<divclass="span6"></div>
</div>
Вот как красиво и здорово придумано. Ну и конечно же нельзя сказать что 940 пикселей это железные рамки.
Что можно кастомизировать
Количество колонок
Ширина одной колонки
Расстояние между колонками
Пример на LESS (о чем мы еще поговорим)
@gridColumns: 24; /* 24 колонки */
@gridColumnWidth: 20px; /* Ширина колонки */
@gridGutterWidth: 20px; /* расстояние между */
Макеты
[ADS]
В Twitter Bootstrap базовым макетом является такой: Центрованный блок шириной 940 пикселей <div.container>. Есть в копилке резиновый, пригодный для документов или приложений.
Фиксирвоанный макет создаем вот так:
<body>
<divclass="container">
...
</div>
</body>
Резиновый пример:
<body>
<divclass="container-fluid">
<divclass="sidebar">
...
</div>
<divclass="content">
...
</div>
</div>
</body>
Типография
[ADS]
Bootstrap предлагает симпатичные ресеты для шрифтов. Заголовки, параграфы, списки и т.п.
Сброшены не только размеры шрифтов и сами шрифты, но различные отступы, что делает вид страницы просто прекрасной.
Итак что изменено ?
[ADS]
В Twitter Bootstrap встроены стили для меток. Это замечательная вещь пригодиться вам для выделения отдельных фраз в предложении.
default - по умолчанию
new - новое
warning - предупреждение
important - важно
notice - заметить
Все заметки яркие и красивые, глаз радуется душа поет. Очень полезный и простой стиль.
Офоормление так же простое:
<spanclass="label">Default</span>
<spanclass="label success">New</span>
<spanclass="label warning">Warning</span>
<spanclass="label important">Important</span>
<spanclass="label notice">Notice</span>
Медиа - отображение медийных элементов. Картинки и Видео
Тумбы в элементе .media-grid могут быть любого размера, однако они масштабируются в таблицах Bootstrap, вам просто это надо попробовать. Картинки размеров типа 90, 210 и 330 подходят для классов .span2 .span4 и .span6 соответственно.
Посмотрим на пример:
Изображения автоматически подгоняются под ширину колонки отображаясь тумбой, вам не нужно думать о том впишется оно или нет, все произойдет само. ;)
Таблицы
Как и все в Bootstrap Twitter CSS framework сделано блестяще, так и таблицы выполнены в отличной манере. По умолчанию таблица вылядит более чем просто и прерасно. Причем не нужно приписывать никаких дополнительных классов. Все выглядит просто отлично:
Ну а если мы воспользуемся возможностями Bootstrap классов то можем дополнительно напрмер сделать более плотные таблицы: .condensed-table
Класс для таблиц полностью с границами: .bordered-table
Вот пример:
<tableclass="bordered-table">
...
</table>
Еще один класс .zebra-striped , он предназначен для таблички разлинованной зеброй, это просто потрясно, руками такое делать - можно застрелиться, тем более неопытному. Кроме того когда курсор находится над строчкой таблицы, та подсвечивается еще более другим оттенком цвета серого.
Ну и некоторое расширение с использованием JavaScript библиотеки jquery.tablesorter.min.js в сочетании с зеброй помогут легко реализовать разные сортировки (сортировки по любым столбцам) в HTML таблице.
Вот пример кода таблицы:
Да надо вызвать одну команду инициализации, но это нетрудно.
Формы
Формы являются одними из наиважнейших элементов интерактивных HTML страниц. Даже Русский CSS-Framework определял стили для форм. В Bootstrap формы отлично сброшены, вот классы которые поддерживает Bootstrap Twitter:
тэг legend - подпись для формы или элементов форм
.xlarge - широкий, большой input для ввода
Кстати надо заметить как делать подписи для инпутов чтобы все инпуты были роно и красиво расставлены:
Естественно можно применять сразу несколько классов вот так:
class="xlarge disabled" - значит боьлшое поле и отключенное
.xxlarge - гиганское поле ввода
.error - поле ввода с ошибкой
.success - правильное поле ввода, т.е. с правильными введенными данными наверное, просто зелененькое
.warning - ораньжевое предупреждение для поля ввода (кстати для сообщений разных есть отдельная песня, так что не стоит воспринимать эти классы как готовые классы для результатов ввода, они просто для пометки правильных и неправильных полей)
.help-block - Подпись ниже поля ввода
.input-prepend - текст находящийся перед текстом ввода, довольно странная штука, непонятно зачем
.mini - миниатюрный инпут
.input-append дополнительный текст или чекбокс после текста, пример:
.input-file - класс для выбора файла
.inputs-list спиочек инпутов (чекбоксов например)
.inline-inputs много инпутов в одной строке
Специально для Textarea классов нет, используются все те из перечисленных, конечно мечтать не вредно и можно было бы например сделать классы для разного рода редактирования текстов, с использованием например bbcode или html, но что-то мне подсказывает что это перебор, и правильно что не засунули такое.
.btn - кнопка
.primary - первичный элемент, например кнопка (выделяется чисто по Twitter стилю - синенькая красивая). Вообще надо сказать что все эти CSS ухищрения сделаны по подобию того что используется в Twitter, иначе бы смысл делать Twitter такой фреймворк.. ;)
.form-stacked - класс определяющий label тэги не слева от инпутов, а сверху, а по мне дак это более логично. Хотя как пишут авторы данный класс полезен для коротких небольших форм.
Как я упомянул есть .mini и .small классы, которые можно применять к формам, что будет определять их ширину, дак вот авторы рекомендуют использовать все же не их, а специальные классы .span
.span2-.span12 они определяют ширину более универсально и более правильно с точки зрения Twitter.
Ну и последнее в формах - кнопочки.
Кнопочки по умолчанию в BootStrap - серые, но можно применить один из нижеперечисленных классов чтобы раскрасить их в разные красивые цвета, носящие разные мотивирющие цели. О некоторых классах я уже упомянал.
.primary - голубой, главная кнопочка говорящая что ее надо бы нажать
.info - светлоголубой я бы сказал цвета морской волны, информационный
.success - Удачно завершенное нажатие на кнопку, показывает результат как бы на себе наверное, зеленая
.danger - Красная, а это поди та самая кнопка для запуска ядерной ракеты. А говорили что ее Горбачев в чемоданчике носил
.large - большая кнопка с большими буквами
.small - маленький текст в кнопках
ну вот пример:
<ahref="#"class="btn small primary">Primary action</a>
Как видно вовсе не обязательно чтобы классы давались именно инпутам.
.disabled - класс для отключенных ссылок
:disabled - класс для отключенных инпутов, чувствуете разницу, нет ?
Навигация
Навигация, это менюшки, разные линки, вообщем внутренняя перелинковка. Bootstrap предлагает некоторые возможности для создания красивых элементов типа меню, страниц и тулбара.
Начнем с самого интересного - Тулбар.
Тулбар располагается вверху сайта и обозначает основную навигацию по вашему сайту. Тублар включает в себя Название блога, менюшку и форму поиска. Менюшки могут быть сложные.
А вот код для этого тулбара:
<divclass="topbar-inner">
<divclass="container">
<h3><ahref="#">Project Name</a></h3>
<ulclass="nav">
<liclass="active"><ahref="#">Home</a></li>
<li><ahref="#">Link</a></li>
<li><ahref="#">Link</a></li>
<li><ahref="#">Link</a></li>
<liclass="dropdown">
<ahref="#"class="dropdown-toggle">Dropdown</a>
<ulclass="dropdown-menu">
<li><ahref="#">Secondary link</a></li>
<li><ahref="#">Something else here</a></li>
<liclass="divider"></li>
<li><ahref="#">Another link</a></li>
</ul>
</li>
</ul>
<formclass="pull-left"action="">
<inputtype="text"placeholder="Search">
</form>
<ulclass="nav secondary-nav">
<liclass="dropdown">
<ahref="#"class="dropdown-toggle">Dropdown</a>
<ulclass="dropdown-menu">
<li><ahref="#">Secondary link</a></li>
<li><ahref="#">Something else here</a></li>
<liclass="divider"></li>
<li><ahref="#">Another link</a></li>
</ul>
</li>
</ul>
</div>
</div>
Как видно из кода все довольно просто и приятно. Теперь сложные телбары могут делаться с полпинка.
Табы и Вкладки - по сути являются одним и тем же, отличаются только дизайном, поэтому для них придумали все же разные названия .tabs и .pills
Вот простой таб:
<ulclass="tabs">
<liclass="active"><ahref="#">Home</a></li>
<li><ahref="#">Profile</a></li>
<li><ahref="#">Messages</a></li>
<li><ahref="#">Settings</a></li>
<li><ahref="#">Contact</a></li>
</ul>
Код черезвычайно прост, зато результат хорош. Как говориться, лучше быть здоровым и богатым, чем больным и бедным.
Еще один типа навигации - БредКрамп (это текущее положение в дереве сайта. Например мы в папке
Как видно навигация тоже крайне интересная штуковина, мы сократили время для стилизации навигации.
Ошибки и Предупреждения
Классы для однострочных сообщений:
.alert-message .warning
.alert-message .error
.alert-message .success
.alert-message .info
Как я указывал выше они отличаются только цветами. Bootstrap предлагает кроме самих сообщений еще реализвать возможность закрытия этих сообщения при помощи своего скрипта
Вот пример сообщения
<divclass="alert-message warning">
<aclass="close"href="#">x</a>
<p><strong>Holy guacamole!</strong> Best check yo self, you’re not looking too good.</p>
</div>
Вот этот скрипт надо подключить:
http://twitter.github.com/bootstrap/1.4.0/bootstrap-alerts.js
Более детально о подключении написано тут.block-message
Есть еще один класс блокировочных сообщений, их удобно применять к параграфам, в сообщении удобно спрашивать, уверен ли человек что хочет совершить что-то необдуманное или нет и рассказать о последствиях. Например запустить ядерный реактор.
Пример кода:
<divclass="alert-message block-message warning">
<aclass="close"href="#">?</a>
<p><strong>Holy guacamole! This is a warning!</strong> Best check yo self, you’re not looking too good. Nulla vitae elit libero, a pharetra augue. Praesent commodo cursus magna, vel scelerisque nisl consectetur et.</p>
<divclass="alert-actions">
<aclass="btn small"href="#">Take this action</a><aclass="btn small"href="#">Or do this</a>
</div>
</div>
Всплывающие подсказки
Да ! Bootstrap умеет показывать всплывающие подсказки, причем нескольких типов.
Страшные модальные окна, тултипы и попапы.
Я с детства не люблю модальные окна, но видимо кому-то это бывает нужно. Впрочем так же возможность создания окон - это начало GUI любой операционной системы. Я не имею ввиду что Bootstrap хочет стать Операционной системой, я хочу довести что создавать окна можно и тут, в HTML и очень просто.
Правда без JavaScript тут не обойтись и Twitter предлагает нам скачать это
Пример кода модального окна:
Но этого конечно маловато, надо инициализировать окно, для этого лучше поглядеть сюда:
http://twitter.github.com/bootstrap/javascript.html#modal
Тултипсы намного полезнее и прятнее на ощупь.
Любая потенциально непонятная надпись - претендент для тултипа.
Вот пример кода:
Однако немного одидно что для таких вещщей не был использован CSS на всю катушку, ибо это несложно, и необходимо прибегнуть к использованию JS скрипта: http://twitter.github.com/bootstrap/1.4.0/bootstrap-modal.js
И Инициализировать наш тултип:
о сканировани вашего сайта являются общедоступными.
</li><li>Данные о зарегистрированных сайтах являются
общедоступными.</li><li>Мы не несем ответственности
за накопленную информацию о вашем сайте.</li><li>Мы
можем использовать результаты сканирования и факт
наличия вашего сайта в нашей системе в любых целях.
</li><li>Если вы не хотите чтобы любая информация
о вашем ресурсе, полученная нами, была раскрыта - не
добавляйте сайт в нашу систему.</li>"
data-original-title="Правила">правилами</a>
Недостаток конечно тут тот что текст попапа лежит в атрибуте. Это конечно позор на их головы.
Инициализация попапа:
$("a[rel=popover]")
.popover({offset: 10, html: true})
.click(function(e) {e.preventDefault()})
Вообщем работа попапов меня не очень порадовала, но она есть и реализуется все же прощще чем делать это руками и ногами.
JavaScript и bootstrap
Как вы догадались, Bootstrap умеет жить без JavaScript, но не очень у него это получается, хотя по моему мнению, это вполне реально. А Twitter пошел иным путем, они начали писать свои скрипты, которые в свою очередь основаны на jQuery а так же использован Ender.
Вот что предлагает Bootstrap из JS ?
bootstrap-modal.js Плагин модальных окон, сделан на основе какого-то другого, откуда выкинули все лишнее.
bootstrap-alerts.js Сверх простой класс для закрывания окошек алертов.
bootstrap-dropdown.js Этот плагин позволяет добавить функциональность выпадающего списка к bootstrap topbar или tab навигации.
bootstrap-scrollspy.js Какой-то скроллер умный для bootstrap topbar.
bootstrap-buttons.js Расширенные возможности для кнопок.
bootstrap-tabs.js Дополнительный Функционал для Табов и Пилов
bootstrap-twipsy.js хитрые эффекты без картинок на CSS3
bootstrap-popover.js Дополнительная функциональность для Попапов
Дак является ли JavaScript обязательным в Twitter BootStrap CSS FrameWork ?
В первую очередь Bootstrap - это CSS ресеты, JS - является лишь дополнением для добавления интерактивности. Ничего сложного в JS дополнениях нет, но все же подробные описания есть на официальной странице плагинов
Bootstrap + LESS
LESS это такой расширенный CSS. Или говоря по другому это CSS с переменными, хотя на самом деле там все несколько шире и глубже ;). Вообще LESS это такой препроцессор, который позволяет ускорить разработку. Этот самый LESS конечно достоин внимания, но описать его в виде аппендикса к этой статье - было бы глуппо, ведь эта штука может быть достойна не меньшего внимания чем сам Bootstrap, поэтому коснемся только связки самого Bootstrap и LESS.
Подключим LESS:
Расширенный Фонт стэк - предназначен для выбора шрифта, подходящего для данной платформы например.
Немногие об этом заморачиваются, однако если уметь пользовать шрифтовой сеткой, то можно приукрасить сайт.
Операции над переменными:
Можно написанный .less файл скомпилировать до начала использования, а можно использовать компилятор на JS уже на стороне клиента. Но на этом мне хотелось бы остановиться, ибо LESS достоин бОльшего внимания, и я тупо приглашаю вас посетить офсайт.
14 января 2012 обновление:
Некий Martin Beanвыпустил генератор для CSS Bootstrap, где можно визуально кастомизировать CSS, и потом его скачать, а точнее сгенерировать. Вещь обалденная, которая позволит избавится от шаблонных сайтов. Кстати я пользуюсь Bootstrap - вещь просто с огромной силой экономит время.
Генератор Twitter Bootstrap21 января 2012:
Отличная Альтернатива Bootstrap YAML: http://www.yaml.de/docs/index.html - шикарная штука, только закругления для кнопок не сделали =) , о YAML на Хабре тут: http://habrahabr.ru/blogs/internet/136615/ там же есть отличный Билдер шаблона для YAML: http://builder.yaml.de/#drop1, этого сильно не хватает Бутстрапу
11 февраля 2012:
Вышел TwitterBootstrap 2.0, все по той же ссылке и там же доступен, стал умнее, красивееи функциональнее. Так же появился сайт с готовыми темами на базе Twiter Bootstrap: http://wrapbootstrap.com/.