Bootstrap: Быстрое создание современных сайтов
Тимур Машнин

Дизайнер обложки Тимур Машнин

© Тимур Машнин, 2020

© Тимур Машнин, дизайн обложки, 2020

ISBN 978-5-4474-6231-4

Создано в интеллектуальной издательской системе Ridero

Начало работы с Bootstrap

Пригласить автора в проект admin@tmsoftstudio.com

Bootstrap представляет собой свободный фреймворк интерфейсов для быстрой и простой Web разработки. Bootstrap предоставляет шаблоны дизайна, основанные на HTML и CSS для разметки, форм, кнопок, таблиц, навигации, диалоговых окон, каруселей изображений и многого другого, а также дополнительные плагины JavaScript. На основе Bootstrap можно легко создавать сайты с «отзывчивым дизайном» – сайты, которые одинаково хорошо выглядят на всех типах устройств, от небольших телефонов до настольных компьютеров.

Bootstrap был разработан Марком Отто и Джейкобом Торнтон для Twitter, и выпущен как продукт с открытым исходным кодом в августе 2011 года на GitHub.

Bootstrap можно загрузить на сайте getbootstrap.com или включить как ссылку на хранилище CDN (Content Delivery Network):

<! – Latest compiled and minified CSS – >

<link rel=«stylesheet» href = "http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">

<! – jQuery library – >

<script src = "https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"> </script>

<! – Latest compiled JavaScript – >

<script src = "http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"> </script>

Использование Bootstrap требует включения элементов и атрибутов! DOCTYPE, lang и charset:

<!DOCTYPE html>

<html lang=«en»>

<head>

<meta charset=«utf-8»>

</head>

</html>

Разработка сайта с «отзывчивым дизайном» всегда начинается с создания дизайна для мобильного телефона, а затем уже для планшета и далее для настольного компьютера – это называется принципом mobile-first. Поэтому подгоним ширину веб страницы под ширину экрана мобильного устройства, чтобы пользователь не елозил по странице в поисках контента, с помощью мета тега viewport:

<meta name=«viewport» content=«width=device-width, initial-scale=1»>

Два Bootstrap класса. container и. container-fluid обеспечивают контейнер для контента.

<div class=«container»>

<h1> My First Bootstrap Page </h1>

<p> This is some text. </p>

</div>

Или

<div class=«container-fluid»>

<h1> My First Bootstrap Page </h1>

<p> This is some text. </p>

</div>

Класс. container имеет фиксированную ширину для трех типов экранов:

.container {

padding-right: 15px;

padding-left: 15px;

margin-right: auto;

margin-left: auto;

}

@media (min-width: 768px) {

.container {

width: 750px;

}

}

@media (min-width: 992px) {

.container {

width: 970px;

}

}

@media (min-width: 1200px) {

.container {

width: 1170px;

}

}

Класс. container-fluid охватывает всю ширину viewport:

.container-fluid {

padding-right: 15px;

padding-left: 15px;

margin-right: auto;

margin-left: auto;

}

Bootstrap Grid System

Bootstrap табличная система позволяет создать до 12 столбцов на странице.

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

Столбцы Bootstrap Grid System будут перестраиваться автоматически в зависимости от размера экрана.

Для создания строки со столбцами нужно создать контейнер с классом. row, например, <div class=«row»>, в который включить столбцы:

<div class=«row»>

<div class=«col-*-*"> </div>

<div class=«col-*-*"> </div>

<div class=«col-*-*"> </div>

</div>

Выглядеть это будет следующим образом:

Вместо первой звездочки можно поставить один из четырех классов:

xs – для телефонов

sm – для планшетов

md – для настольных компьютеров

lg – для больших мониторов

Вместо второй звездочки указывается, сколько столбцов из 12 данный столбец объединяет.

Например, если указать col-md-6:

<div class=«row»>

<div class=«col-md-6»> col-md-6 </div>

<div class=«col-md-6»> col-md-6 </div>

</div>

Тогда для настольных компьютеров и больше это будет строка из двух столбцов, а для планшетов и телефонов это будут две строки:

Или если вы хотите сделать:

1 колонка для небольших устройств

2 колонки для малых и средних устройств

4 колонки для больших устройств

Тогда укажите:

<div class=«row»>

<div class=«col-sm-6 col-lg-3»>

This is part of our grid.

</div>

<div class=«col-sm-6 col-lg-3»>

This is part of our grid.

</div>

<div class=«col-sm-6 col-lg-3»>

This is part of our grid.

</div>

<div class=«col-sm-6 col-lg-3»>

This is part of our grid.

</div>

</div>

Если у вас есть четыре столбца разной высоты:

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

Чтобы достичь этого, нужно применить блок:

<div class=«clearfix visible-xs-block»> </div>

<div class=«clearfix visible-sm-block»> </div>

<section class=«row»>

<section class=«col-xs-6 col-sm-6 col-md-3 col-lg-3»>

<div class=«alert alert-danger»> Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. </div>

</section>

<section class=«col-xs-6 col-sm-6 col-md-3 col-lg-3»>

<div class=«alert alert-info»> Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. </div>

</section>

<div class=«clearfix visible-xs-block»> </div>

<div class=«clearfix visible-sm-block»> </div>

<section class=«col-xs-6 col-sm-6 col-md-3 col-lg-3»>

<div class=«alert alert-info»> Lorem ipsum dolor sit amet. </div>

</section>

<section class=«col-xs-6 col-sm-6 col-md-3 col-lg-3»>

<div class=«alert alert-info»> Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros. </div>

</section>

</section>

Здесь для управления видимостью элемента используется класс visible. Для сокрытия элемента используется класс hidden:

Таким образом, если применить класс visible-sm-block, элемент будет виден только на планшете, если применить класс hidden-sm, элемент будет скрыт на планшетах.

Для увеличения отступа между столбцами, можно использовать класс col-*-offset-*, где первая звездочка это классы xs, sm, md, lg (обычно используют только md), а вторая звездочка это значение от 1 до 11. При использовании этого класса, за сценой применяется свойство margin-left.

Перемещать столбцы вправо или влево можно с помощью классов col-md-push-* и col-md-pull-* соответственно, где звездочка это значение от 1 до 11. При этом за сценой используется CSS свойство left: и right:.

<div class=«col-md-4 col-md-push-4»> <p> green pushed 4 </p> </div>

<div class=«col-md-4 col-md-pull-4»> <p> red pulled 4 </p> </div>

Тест 1 на знание Bootstrap

Вопрос 1

Что такое Twitter Bootstrap?

Вопрос 2

Зачем использовать Bootstrap?

Вопрос 3

Что Bootstrap пакет включает в себя?

Вопрос 4

Что такое Contextual классы таблицы в Bootstrap?

Вопрос 5

Что такое Bootstrap Grid System?

Вопрос 6

Что такое Bootstrap медиа запросы?

Вопрос 7

Покажите основную табличную структуру в Bootstrap.

Вопрос 8

Что такое Offset смещение столбцов?

Вопрос 9

Как можно упорядочить столбцы в Bootstrap?

Вопрос 10

Как сделать изображения отзывчивыми?

Вопрос 11

Объясните шрифты и ссылки в Bootstrap.

Вопрос 12

Что такое нормализовать Normalize в Bootstrap?

Вопрос 13

Что такое Lead Body Copy?

Вопрос 14

Объясните типы списков поддерживаемых Bootstrap.

Вопрос 15

Что такое glyphicons?

Вопрос 16

Как использовать Glyphicons?

Вопрос 17

Что такое плагин transition?

Вопрос 18

Что такое Modal плагин?

Вопрос 19

Как использовать плагин Dropdown?

Вопрос 20

Что такое Bootstrap карусель?

Вопрос 21

Что такое группа кнопок?

Вопрос 22

Какой класс используется для основной группы кнопок?

Вопрос 23

Какой класс используется, чтобы нарисовать панель кнопок?

Вопрос 24

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

Вопрос 25

Какой класс отображает набор кнопок вертикально, а не горизонтально?

Вопрос 26

Что такое input группы?

Вопрос 27

Как создать меню навигации с вкладками?

Вопрос 28

Как создать меню навигации с кнопками?

Вопрос 29

Как создать вертикальное меню навигации с кнопками?

Вопрос 30

Что такое bootstrap navbar?

Вопрос 31

Как создать NavBar в bootstrap?

Вопрос 32

Что такое bootstrap breadcrumb?

Вопрос 33

Какой класс используется для базовой нумерации страниц?

Вопрос 34

Как настраивать ссылки нумерации страниц?

Вопрос 35

Что такое bootstrap метки?

Вопрос 36

Что такое bootstrap бейджики?

Вопрос 37

Что такое Bootstrap Jumbotron?

Вопрос 38

Что такое Bootstrap page header?

Вопрос 39

Как создать миниатюры thumbnails, используя Bootstrap?

Вопрос 40

Как настроить миниатюры, используя Bootstrap?

Вопрос 41

Что такое bootstrap alerts?

Вопрос 42

Как создать bootstrap alert?

Вопрос 43

Как создать Bootstrap Dismissal Alert?

Вопрос 44

Как создать прогресс-бар, используя Bootstrap?

Вопрос 45

Как создать альтернативный индикатор, используя bootstrap?

Вопрос 46

Как создать прогресс-бар в полоску, используя bootstrap?

Вопрос 47

Как создать анимированный прогресс-бар, используя bootstrap?

Вопрос 48

Как создать набор индикаторов, используя bootstrap?

Вопрос 49

Что такое bootstrap медиа-объекты?

Вопрос 50

Что является целью. media класса в bootstrap?

Вопрос 51

Что является целью. media-list класса в bootstrap?

Вопрос 52

Что такое bootstrap panels?

Вопрос 53

Как создать bootstrap панель с заголовком?

Вопрос 54

Как создать bootstrap панель с подвалом?

Вопрос 55

Какие контекстные классы доступны для оформления панелей?

Вопрос 56

Можете ли вы поместить таблицу в bootstrap панели?

Вопрос 57

Можете ли вы поместить listgroup внутри bootstrap панели?

Вопрос 58

Что такое bootstrap well?

Вопрос 59

Что такое Scrollspy плагин?

Вопрос 60

Что такое affix плагин?

Быстрая адаптация сайта для мобильных устройств с помощью Bootstrap

Возьмем в качестве примера простой шаблон с фиксированной шириной, с меню, боковой панелью, контентом и подвалом.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN» "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml: lang=«en» lang=«en»>

<head>

<title> </title>

<meta http-equiv=«content-type» content=«application/xhtml+xml; charset=UTF-8» />

<meta name=«author» content=«» />

<meta name=«description» content=«» />

<meta name=«robots» content=«index, follow» />

<link rel=«stylesheet» type=«text/css» media=«screen» href="/file/theme/css/screen. css» />

</head>

<body>

<! – header – >

<div id=«header-wrap»> <div id=«header»>

<a name=«top»> </a>

<h1 id=«logo-text»> <a href=«#» title=«»> </a> </h1>

<p id=«slogan»> </p>

<div id=«nav»>

<ul>

<li> <a href=«»> Home </a> </li>

<li> <a href=«#»> Page1 </a>

<ul style=«height: auto; overflow: auto»>

<li> <a href=«#»> Page1—1 </a> </li>

</ul>

</li>

<li> <a href=«#»> Page2 </a>

<ul style=«height: auto; overflow: auto»>

<li> <a href=«#»> Page2—1 </a> </li>

<li> <a href=«#»> Page2—1 </a> </li>

</ul>

</li>

</ul>

</div>

<div id=«google-search»>

<script>

(function () {

var cx = «»;

var gcse = document.createElement (’script’);

gcse. type = ’text/javascript’;

gcse.async = true;

gcse.src = (document.location.protocol == ’https:'? ’https:': ’http:») +

«//www.google.com/cse/cse.js?cx=' + cx;

var s = document.getElementsByTagName (’script’) [0];

s.parentNode.insertBefore (gcse, s);

}) ();

</script>

<gcse: search> </gcse: search>

</div>

</div>

</div>

<! – content-outer – >

<div id=«content-wrap» class=«clear»>

<div id=«content»>

<div style=«width:1150px; height:15px; background: url(/file/theme/images/top.png);»>

</div>

<div id=«main»>

</div>

<! – sidebar – >

<div id=«sidebar» style=«width:250px;»>

<div class=«sidemenu»>

<ul>

<li> <a href=«»> Home </a> </li>

<li> <a href=«#»> Page1 </a>

<ul style=«height: auto; overflow: auto»>

<li> <a href=«#»> Page1—1 </a> </li>

</ul>

</li>

<li> <a href=«#»> Page2 </a>

<ul style=«height: auto; overflow: auto»>

<li> <a href=«#»> Page2—1 </a> </li>

<li> <a href=«#»> Page2—1 </a> </li>

</ul>

</li>

</ul>

</div>

<! – /sidebar – > </div>

</div>

<! – /content-out – >

</div>

<! – footer-outer – >

<div id=«footer-outer» class=«clear»>

<div id=«footer-wrap»>

<div style=«margin-left:500px; float: left»>

<p> <strong> <a href=«#top»> Top </a> </strong> </p>

<p style=«margin-left:-100px;»>

&copy; 2015 <strong> </strong>

<strong style=«margin-left:20px;"> E-mail: </strong>

</p>

</div>

</div>

<! – /footer-outer – >

</div>

</body>

</html>

Заменим DOCTYPE на <!DOCTYPE html>.

Атрибут lang в теге html и атрибут charset тега meta уже имеются.

В начало тега <head> добавим:

<! – Latest compiled and minified CSS – >

<link rel=«stylesheet» href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">

<! – jQuery library – >

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>

<! – Latest compiled JavaScript – >

<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>

В тег <head> добавим:

<meta name=«viewport» content=«width=device-width, initial-scale=1»>

Обернем заголовок в класс. container и, используя Bootstrap Grid System и Bootstrap Navigation Bar, разместим меню, логотип и форму поиска в шапке.

<div class=«container header»>

<div class=«row»>

<nav class=«navbar navbar-inverse»>

<div class=«container-fluid»>

<div class=«navbar-header»>

<button type=«button» class=«navbar-toggle» data-toggle=«collapse» data-target=«#myNavbar»>

<span class=«icon-bar»> </span>

<span class=«icon-bar»> </span>

<span class=«icon-bar»> </span>

</button>

</div>

<div class=«collapse navbar-collapse» id=«myNavbar»>

<ul class=«nav navbar-nav»>

<li> <a href="/"> Home </a> </li>

<li class=«dropdown»>

<a class=«dropdown-toggle» data-toggle=«dropdown» href=«#»> Page1 <span class=«caret»> </span> </a>

<ul class=«dropdown-menu inverse-dropdown»>

<li> <a href=«#»> Page1—1 </a> </li>

</ul>

</li>

<li class=«dropdown»>

<a class=«dropdown-toggle» data-toggle=«dropdown» href=«#»> Page2 <span class=«caret»> </span> </a>

<ul class=«dropdown-menu inverse-dropdown»>

<li> <a href=«#»> Page2—1 </a> </li>

<li> <a href=«#»> Page2—2 </a> </li>

<li> <a href=«#»> Page2—3 </a> </li>

<li> <a href=«#»> Page2—4 </a> </li>

<li> <a href=«#»> Page2—5 </a> </li>

</ul>

</li>

<li> <a href=«#»> Contacts </a> </li>

</ul>

</div>

</div>

</nav>

</div>

<a name=«top»> </a>

<div class=«row»>

<div class=«col-sm-6 text-center»>

<h1> <a href="/"> </a> </h1>

<p> </p>

</div>

<div class=«col-sm-4 pull-right»>

<script>

(function () {

var cx = «»;

var gcse = document.createElement (’script’);

gcse. type = ’text/javascript’;

gcse.async = true;

gcse.src = (document.location.protocol == ’https:'? ’https:': ’http:») +

'//cse.google.com/cse. js? cx=' + cx;

var s = document.getElementsByTagName (’script’) [0];

s.parentNode.insertBefore (gcse, s);

}) ();

</script>

<gcse: searchbox-only> </gcse: searchbox-only>

</div>

<style>

.gsc-search-button {

display: none;

}

.gsib_a {

height:40px;

}

.gsc-input-box {

height: 40px;

}

</style>

<div style=«height:15px; background: black;" class=«col-sm-12»>

</div>

</div>

</div>

Уберем боковую панель и свой файл CSS, вместо него добавим CSS стили:

<style>

body {

font-size:18px;

font-famile: Georgia;

color: #000;

margin: 0;

padding: 0;

background: gray;

}

.header {

/* Permalink – use to edit and share this gradient: http://colorzilla.com/gradient-editor/#e1ffff+0,e1ffff+4,fdffff+7,fdffff+7,e1ffff+17,e6f8fd+28,c8eefb+47,bee4f8+68,b1d8f5+100 */

background: #e1ffff; /* Old browsers */

background: -moz-linear-gradient (top, #e1ffff 0%, #e1ffff 4%, #fdffff 7%, #fdffff 7%, #e1ffff 17%, #e6f8fd 28%, #c8eefb 47%, #bee4f8 68%, #b1d8f5 100%); /* FF3.6—15 */

background: -webkit-linear-gradient (top, #e1ffff 0%,#e1ffff 4%,#fdffff 7%,#fdffff 7%,#e1ffff 17%,#e6f8fd 28%,#c8eefb 47%,#bee4f8 68%,#b1d8f5 100%); /* Chrome10—25,Safari5.1—6 */

background: linear-gradient (to bottom, #e1ffff 0%,#e1ffff 4%,#fdffff 7%,#fdffff 7%,#e1ffff 17%,#e6f8fd 28%,#c8eefb 47%,#bee4f8 68%,#b1d8f5 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */

filter: progid:DXImageTransform.Microsoft.gradient (startColorstr=«#e1ffff’, endColorstr=«#b1d8f5», GradientType=0); /* IE6—9 */

}

.inverse-dropdown {

background-color: black;

}

.inverse-dropdown li a {

color: white;

}

.inverse-dropdown li a: hover {

color: black;

}

.content {

background: lightgrey;

}

.footer {

/* Permalink – use to edit and share this gradient: http://colorzilla.com/gradient-editor/#1e5799+0,2989d8+86,207cca+93,7db9e8+100 */

background: #1e5799; /* Old browsers */

background: -moz-radial-gradient (center, ellipse cover, #1e5799 0%, #2989d8 86%, #207cca 93%, #7db9e8 100%); /* FF3.6—15 */

background: -webkit-radial-gradient (center, ellipse cover, #1e5799 0%,#2989d8 86%,#207cca 93%,#7db9e8 100%); /* Chrome10—25,Safari5.1—6 */

background: radial-gradient (ellipse at center, #1e5799 0%,#2989d8 86%,#207cca 93%,#7db9e8 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */

filter: progid:DXImageTransform.Microsoft.gradient (startColorstr=«#1e5799», endColorstr=«#7db9e8», GradientType=1); /* IE6—9 fallback on horizontal gradient */

}

.navigation {

margin: 10px 20px; padding-bottom: 10px;

width: 560px;

}

.navigation a: link,

.navigation a: visited {

float: left;

display: block;

margin: 10px 10px 0 0;

padding: 5px 7px;

text-transform: lowercase;

text-decoration: none;

font-weight: bold;

color: #fff;

background: #2C76A6;

border-width: 1px;

border-style: solid;

border-color: #86BBDF #245F86 #245F86 #86BBDF;

}

.navigation a: hover {

background: #FF3399;

border-width: 1px;

border-style: solid;

border-color: #FF75BA #EA0075 #EA0075 #FF75BA;

}

</style>

Таким образом, исключим из шаблона все фоновые изображения, которые могут создавать горизонтальную прокрутку, заменим фоновые изображения на CSS градиенты.

Обернем контент и подвал в класс. container и используем Bootstrap Grid System.

<! – content-outer – >

<div class=«container content»>

<div class=«row»>

<div class=«col-sm-11 col-md-offset-1»>

<span class=«pull-right»>

<img src="/file/theme/add.jpg» alt=«» width=200/>

</span>

<div style=«padding-top:50px;»>

<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle. js»> </script>

<! – adds – >

</script>

</div>

</div>

</div>

<div class=«row»>

<div class=«col-sm-10»>

<! – content – >

<p>

&nbsp;

</p>

</div>

</div>

</div>

<! – /content-out – >

<! – footer-outer – >

<div class=«container footer»>

<p style=«position: fixed; bottom: 12px; right: 5px; opacity: 1; cursor: pointer;"> <a href=«#top» style=«color: white;"> Top </a> </p>

<div class=«row»>

<div class=«col-*-* text-center»>

<script type=«text/javascript» src="//yandex.st/share/share. js» charset=«utf-8»> </script>

</div>

<div class=«row» style=«color: darkblue;»>

<div class=«col-*-* text-center»>

<br/>

<p>

&copy; 2016 <strong> </strong>

<strong> admin@.com </strong>

</p>

</div>

</div>

</div>

<! – /footer-outer – >

Bootstrap Text/Typography

По умолчанию, глобальный размер шрифта Bootstrap, применяемый к тегу <body> и ко всем тегам <p>, является 14px, с высотой линии 1.428.

Кроме того, все <p> элементы имеют нижний margin-отступ, равный половине компьютерной высоте строки (10px по умолчанию).

Bootstrap заголовки <h1> – <h6> имеют следующий размер:

h1 – 36px

h2 – 30px

h3 – 24px

h4 – 18px

h5 – 14px

h6 – 12px

Для добавления вспомогательных заголовков используется тег <small>, который устанавливает размер шрифта 85%:

<h1> h1 heading <small> secondary text </small> </h1>

С помощью класса class = «lead» можно слегка увеличить размер шрифта параграфа:

<p class = «lead»> This is an example paragraph demonstrating the use of lead body copy. </p>

Тег <strong> делает шрифт жирным.

Тег <em> выделяет текст курсивом.

Для выравнивания и выделения текста цветом применяются классы:

<p class = «text-left»> Left aligned text. </p>

<p class = «text-center»> Center aligned text. </p>

<p class = «text-right»> Right aligned text. </p>

<p class=«text-lowercase»> Lowercased text. </p>

<p class=«text-uppercase»> Uppercased text. </p>

<p class=«text-capitalize»> Capitalized text. </p>

Подгонка текста под ширину экрана:

<p class=«text-justify»> Justified text. Justified text. Justified text. </p>

Отмена переноса строк:

<p class=«text-nowrap»> No wrap text. No wrap text. No wrap text. </p>

Выделение цветом:

<p class = «text-muted»> This content is muted </p>

<p class = «text-primary»> This content carries a primary class </p>

<p class = «text-success»> This content carries a success class </p>

<p class = «text-info»> This content carries a info class </p>

<p class = «text-warning»> This content carries a warning class </p>

<p class = «text-danger»> This content carries a danger class </p>

<p class=«bg-primary»> This text is important. </p>

<p class=«bg-success»> This text indicates success. </p>

<p class=«bg-info»> This text represents some information. </p>

<p class=«bg-warning»> This text represents a warning. </p>

<p class=«bg-danger»> This text represents danger. </p>

Тег <abbr> обеспечивает подчеркивание текста пунктирной линией, при этом класс class=«initialism» слегка уменьшает шрифт:

<abbr title = «World Wide Web»> WWW </abbr>

Тег <blockquote> выделяет текст как цитируемый, при этом класс class=«blockquote-reverse» выравнивает по правому краю:

<p> This is a default blockquote example. This is a default blockquote example. </p>

<blockquote>

<p> This is a default blockquote example. This is a default blockquote example. </p>

</blockquote>

<blockquote class=«blockquote-reverse»>

<p> This is a default blockquote example. This is a default blockquote example. </p>

</blockquote>

Тег <mark> подсвечивает текст:

<p> Use the mark element to <mark> highlight </mark> text. </p>

Элементы <dl>, <dt> и <dd> обеспечивают разметку словаря:

<dl>

<dt> Coffee </dt>

<dd> black hot drink </dd>

<dt> Milk </dt>

<dd> white cold drink </dd>

</dl>

При этом класс class=«dl-horizontal» выводит ключ-значение в одну строку:

<dl class=«dl-horizontal»>

<dt> Coffee </dt>

<dd> black hot drink </dd>

<dt> Milk </dt>

<dd> white cold drink </dd>

</dl>

Тег <code> выделяет текст цветом:

<p> HTML elements: <code> span </code>, <code> section </code>, and <code> div </code>. </p>

Тег <kbd> меняет фон и цвет текста:

<p> Use <kbd> ctrl + p </kbd> to open the Print dialog box. </p>

Тег <pre> меняет фон текста, сохраняя пробелы и переносы:

<pre>

Text in a pre

element

is displayed in a fixed-width

font, and it preserves

both spaces and

line breaks.

</pre>

При этом класс class=«pre-scrollable» устанавливает максимальную высоту 350px и добавляет прокрутку.

Класс class=«list-unstyled» удаляет маркировку и отступы списка:

<ul class=«list-unstyled»>

<li> Coffee </li>

<li> Tea

<ul>

<li> Black tea </li>

<li> Green tea </li>

</ul>

</li>

<li> Milk </li>

</ul>

Класс class=«list-inline» выводит список в одну строку:

<ul class=«list-inline»>

<li> Coffee </li>

<li> Tea </li>

<li> Milk </li>

</ul>

Теги <del> и <s> перечеркивают текст:

<p> Use the s element to indicate <s> text that is no longer relevant </s>. </p>

<p> Use the del element to indicate <del> deleted text </del>. </p>

Теги <u> и <ins> подчеркивают текст:

<p> Use the u element to indicate <u> underlined text </u>. </p>

<p> Use the ins element to indicate <ins> inserted text </ins>. </p>

Тег <samp> меняет шрифт, имитируя вывод программы:

<p> To indicate sample output from a computer program, use the samp element: </p>

<p> <samp> This text is output from a computer program… </samp> </p>

Таблицы

Bootstrap класс. table стилизует HTML таблицу небольшим padding отступом и горизонтальными разделителями:

<table class=«table»>

<thead>

<tr>

<th> Firstname </th>

<th> Lastname </th>

<th> Email </th>

</tr>

</thead>

<tbody>

<tr>

<td> John </td>

<td> Doe </td>

<td>john@example.com </td>

</tr>

<tr>

<td> Mary </td>

<td> Moe </td>

<td>mary@example.com </td>

</tr>

<tr>

<td> July </td>

<td> Dooley </td>

<td>july@example.com </td>

</tr>

</tbody>

</table>

Дополнительно класс class=«table table-striped» добавляет чередующуюся смену фона строк таблицы.

Класс class=«table table-bordered» добавляет разделители к ячейкам таблицы.

Класс class=«table table-hover» добавляет изменение фона при наведении курсора на строку таблицы.

Класс class=«table table-condensed» уменьшает высоту строки.

С помощью классов success, danger, info, active, warning можно выделять цветом строки таблицы.

Контейнер для таблицы <div class=«table-responsive»> добавляет горизонтальную прокрутку для экранов менее 768px.

Вопросы:

Как стилизовать таблицу горизонтальными разделителями?

Ответ: добавить класс. table.

Как стилизовать таблицу повторяющимся разным фоном строк?

Ответ: добавить класс. table-striped.

Как добавить границы к ячейкам таблицы?

Ответ: добавить класс. table-bordered.

Как добавить изменение фона строки при наведении курсора?

Ответ: добавить класс. table-hover.

Как уменьшить отступ ячеек наполовину?

Ответ: добавить класс. table-condensed.

Как сделать разноцветным фон строк таблицы?

Ответ: применить классы. success,.danger,.warning

Изображения

Bootstrap предлагает три вида формы изображений:

Класс. img-rounded – прямоугольник с закругленными углами.

<img src="sample.jpg» class=«img-rounded» alt=«»>

Класс. img-circle – изображение в круге с радиусом 500px.

<img src="sample.jpg» class=«img-circle» alt=«»>

Класс. img-thumbnail – изображение в прямоугольнике с отступом и серой рамкой.

<img src="sample.jpg» class=«img-thumbnail» alt=«»>

Для того чтобы изображение автоматически подгонялось под размер экрана, используется класс. img-responsive, который применяет к изображению CSS стиль display: block; max-width: 100%; height: auto;.

<img class=«img-responsive» src="sample.jpg» alt=«»>

Bootstrap Jumbotron

Jumbotron представляет собой контейнер с серым фоном и закругленными углами для размещения в нем объявления со ссылкой типа «Посмотреть подробнее».

Помимо серого фона и закругленных углов Jumbotron применяет к тексту увеличенный размер шрифта.

Обертка <div class=«container»> для Jumbotron обеспечивает отступ от краев экрана.

<div class=«container»>

<div class=«jumbotron»>

<h1> Bootstrap Tutorial </h1>

<p> Bootstrap is the most popular HTML, CSS, and JS framework for developing responsive, mobile-first projects on the web. </p>

</div>

</div>

Без контейнера <div class=«container»> углов у Jumbotron видно не будет, так как он будет распространяться на всю ширину экрана.

Изменить фон Jumbotron, отцентрировать текст и добавить отступы можно с помощью CSS и класса. text-center.

<style>

.jumbotron {

background-color: #f4511e; /* Orange */

color: #ffffff;

padding: 100px 25px;

}

</style>

<div class=«jumbotron text-center»>

</div>

Bootstrap Page Header

Класс. page-header добавляет горизонтальный разделитель после заголовка.

<div class=«container»>

<div class=«page-header»>

<h1> Page Header H1 </h1>

</div>

<p> This is some text. </p>

<p> This is another text. </p>

<div class=«page-header»>

<h2> Page Header H2 </h2>

</div>

<p> This is some text. </p>

<p> This is another text. </p>

</div>

Bootstrap Wells

С помощью класса. well можно добавить ощущение глубины элементу или контейнеру.

<div class=«container»>

<div class=«row»>

<div class=«col-xs-6 well»>

some data

</div>

<div class=«col-xs-6 well»>

some data

</div>

</div>

</div>

<div class=«container-fluid»>

<div class=«row»>

<div class=«col-xs-12»>

<div class=«well» id=«left-well»>

<form role=«form»>

<div class=«form-group»>

<label for=«email»> Email address: </label>

<input type=«email» class=«form-control» id=«email»>

</div>

<div class=«form-group»>

<label for=«pwd»> Password: </label>

<input type=«password» class=«form-control» id=«pwd»>

</div>

<div class=«checkbox»>

<label> <input type=«checkbox»> Remember me </label>

</div>

<button type=«submit» class=«btn btn-primary»> Submit </button>

</form>

</div>

</div>

</div>

</div>

С помощью класса class=«well well-sm» или класса class=«well well-lg» можно уменьшить или увеличить высоту well-контейнера соответственно:

<div class=«well well-sm»> Small Well </div>

<div class=«well»> Normal Well </div>

<div class=«well well-lg»> Large Well </div>

Bootstrap Alerts

Bootstrap Alerts представляют собой не диалоговые окна с сообщениями, а выделенные цветом блоки текста на странице, которые, однако, имеют кнопку закрытия.

Для создания сообщения Bootstrap Alert используется класс. alert с одним из четырех классов. alert-success,.alert-info,.alert-warning или. alert-danger, которые обеспечивают соответствующий цвет фона и шрифта текста.

<div class=«alert alert-success»>

<a href=«#» class=«close» data-dismiss=«alert» aria-label=«close»> &times; </a>

<strong> Success! </strong> This alert box could indicate a successful or positive action.

</div>

<div class=«alert alert-info»>

<a href=«#» class=«close» data-dismiss=«alert» aria-label=«close»> &times; </a>

<strong> Info! </strong> This alert box could indicate a neutral informative change or action.

</div>

<div class=«alert alert-warning»>

<a href=«#» class=«close» data-dismiss=«alert» aria-label=«close»> &times; </a>

<strong> Warning! </strong> This alert box could indicate a warning that might need attention.

</div>

<div class=«alert alert-danger»>

<a href=«#» class=«close» data-dismiss=«alert» aria-label=«close»> &times; </a>

<strong> Danger! </strong> This alert box could indicate a dangerous or potentially negative action.

</div>

Кнопку закрытия при этом обеспечивает элемент <a href=«#» class=«close» data-dismiss=«alert» aria-label=«close»> &times; </a>.

Дополнительно класс class=«alert alert-success fade in» добавляет анимацию при закрытии сообщения.

Нажатие кнопки закрытия можно обрабатывать с помощью Javascript.

<div class=«alert alert-success» id=«myAlert»>

<a href=«#» class=«close»> &times; </a>

<strong> Success! </strong> This alert box could indicate a successful or positive action.

</div>

<script>

$(document).ready (function () {

$(".close").click (function () {

$("#myAlert").alert («close»);

});

});

</script>

С помощью класса. alert-link вместо текста сообщения можно вставлять ссылку.

<div class=«alert alert-info»>

<a href=«#» class=«close» data-dismiss=«alert» aria-label = «close»> &times; </a>

<a href = «#» class = «alert-link»> <strong> Info! </strong>

This alert box could indicate a neutral informative change or action.

</a>

</div>

Кнопки и группы кнопок

Для создания стилизованной цветом кнопки используется класс. btn совместно с одним из классов. btn-default,.btn-primary,.btn-success,.btn-info,.btn-warning,.btn-danger,.btn-link.

<button type=«button» class=«btn btn-default»> Default </button>

<button type=«button» class=«btn btn-primary»> Primary </button>

<button type=«button» class=«btn btn-success»> Success </button>

<button type=«button» class=«btn btn-info»> Info </button>

<button type=«button» class=«btn btn-warning»> Warning </button>

<button type=«button» class=«btn btn-danger»> Danger </button>

<button type=«button» class=«btn btn-link»> Link </button>

Вышеуказанные классы могут применяться для элементов <a>, <button>, <input>.

<button type=«button» class=«btn btn-default»> Default </button>

<input type=«button» class=«btn btn-primary» value=«Primary»> </input>

<a type=«button» class=«btn btn-success»> Success </a>

Дополнительно классы. btn-lg,.btn-md,.btn-sm,.btn-xs регулируют размер кнопки.

<button type=«button» class=«btn btn-primary btn-lg»> Large </button>

<button type=«button» class=«btn btn-primary btn-md»> Medium </button>

<button type=«button» class=«btn btn-primary btn-sm»> Small </button>

<button type=«button» class=«btn btn-primary btn-xs»> XSmall </button>

Дополнительно класс. btn-block обеспечивает 100% ширину кнопки.

<button type=«button» class=«btn btn-primary btn-lg btn-block»> Button </button>

Класс. active переводит кнопку в нажатое состояние.

Класс. disabled делает кнопку некликабельной.

<button type=«button» class=«btn btn-primary disabled»> Disabled Primary </button>

Для смещения и центрирования кнопок дополнительно применяются классы. pull-left,.pull-right,.center-block.

Класс. btn-group позволяет скомпоновать группу кнопок в строку или столбец.

Горизонтальный макет:

<div class=«btn-group»>

<button type=«button» class=«btn btn-primary»> Button 1 </button>

<button type=«button» class=«btn btn-primary»> Button 2 </button>

<button type=«button» class=«btn btn-primary»> Button 3 </button>

</div>

Вертикальный макет:

<div class=«btn-group-vertical»>

<button type=«button» class=«btn btn-primary»> Button 1 </button>

<button type=«button» class=«btn btn-primary»> Button 2 </button>

<button type=«button» class=«btn btn-primary»> Button 3 </button>

</div>

Группа кнопок позволяет применить размер сразу ко всем кнопкам с помощью дополнительных классов. btn-group-lg,.btn-group-md,.btn-group-sm,.btn-group-xs.

<div class=«btn-group-vertical btn-group-lg»>

<button type=«button» class=«btn btn-primary»> Button 1 </button>

<button type=«button» class=«btn btn-primary»> Button 2 </button>

<button type=«button» class=«btn btn-primary»> Button 3 </button>

</div>

Класс. btn-group-justified, группирующий кнопки <a> позволяет заполнить кнопками всю ширину экрана.

<div class=«btn-group btn-group-justified»>

<a href=«#» class=«btn btn-primary»> Button 1 </a>

<a href=«#» class=«btn btn-primary»> Button 2 </a>

<a href=«#» class=«btn btn-primary»> Button 3 </a>

</div>

Для кнопок <button> этого же эффекта можно достичь, обернув каждую кнопку в контейнер div class=«btn-group»>.

<div class=«btn-group btn-group-justified»>

<div class=«btn-group»>

<button type=«button» class=«btn btn-primary»> Button 1 </button>

</div>

<div class=«btn-group»>

<button type=«button» class=«btn btn-primary»> Button 2 </button>

</div>

<div class=«btn-group»>

<button type=«button» class=«btn btn-primary»> Button 3 </button>

</div>

</div>

С помощью класса. btn-group можно также сделать кнопку с выпадающим меню.

<div class=«btn-group»>

<button type=«button» class=«btn btn-primary dropdown-toggle» data-toggle=«dropdown»> Sony <span class=«caret»> </span> </button>

<ul class=«dropdown-menu» role=«menu»>

<li> <a href=«#»> Tablet </a> </li>

<li> <a href=«#»> Smartphone </a> </li>

</ul>

</div>

Или разделенную кнопку с меню.

<div class=«btn-group»>

<button type=«button» class=«btn btn-primary»> Sony </button>

<button type=«button» class=«btn btn-primary dropdown-toggle» data-toggle=«dropdown»>

<span class=«caret»> </span>

</button>

<ul class=«dropdown-menu» role=«menu»>

<li> <a href=«#»> Tablet </a> </li>

<li> <a href=«#»> Smartphone </a> </li>

</ul>

</div>

Кнопку раскрытия меню можно делать разного размера.

<div class = «btn-group»>

<button type = «button» class = «btn btn-default dropdown-toggle btn-lg» data-toggle = «dropdown»>

Default

<span class = «caret»> </span>

</button>

<ul class = «dropdown-menu» role = «menu»>

<li> <a href = «#»> Action </a> </li>

<li> <a href = «#»> Another action </a> </li>

<li> <a href = «#»> Something else here </a> </li>

<li class = «divider»> </li>

<li> <a href = «#»> Separated link </a> </li>

</ul>

</div>

<div class = «btn-group»>

<button type = «button» class = «btn btn-primary dropdown-toggle btn-sm» data-toggle = «dropdown»>

Primary

<span class = «caret»> </span>

</button>

<ul class = «dropdown-menu» role = «menu»>

<li> <a href = «#»> Action </a> </li>

<li> <a href = «#»> Another action </a> </li>

<li> <a href = «#»> Something else here </a> </li>

<li class = «divider»> </li>

<li> <a href = «#»> Separated link </a> </li>

</ul>

</div>

<div class = «btn-group»>

<button type = «button» class = «btn btn-success dropdown-toggle btn-xs» data-toggle = «dropdown»>

Success

<span class = «caret»> </span>

</button>

<ul class = «dropdown-menu» role = «menu»>

<li> <a href = «#»> Action </a> </li>

<li> <a href = «#»> Another action </a> </li>

<li> <a href = «#»> Something else here </a> </li>

<li class = «divider»> </li>

<li> <a href = «#»> Separated link </a> </li>

</ul>

</div>

Для раскрытия меню вверх, а не вниз используется класс. dropup.

<div class = «btn-group dropup»>

<button type = «button» class = «btn btn-primary dropdown-toggle» data-toggle = «dropdown»>

Primary

<span class = «caret»> </span>

</button>

<ul class = «dropdown-menu» role = «menu»>

<li> <a href = «#»> Action </a> </li>

<li> <a href = «#»> Another action </a> </li>

<li> <a href = «#»> Something else here </a> </li>

<li class = «divider»> </li>

<li> <a href = «#»> Separated link </a> </li>

</ul>

</div>

Для объединения групп кнопок в панель используется класс. btn-toolbar, который дает небольшой отступ и обтекание слева для групп кнопок.

<div class = «btn-toolbar» role = «toolbar»>

<div class = «btn-group»>

<button type = «button» class = «btn btn-default»> Button 1 </button>

<button type = «button» class = «btn btn-default»> Button 2 </button>

<button type = «button» class = «btn btn-default»> Button 3 </button>

</div>

<div class = «btn-group»>

<button type = «button» class = «btn btn-default»> Button 4 </button>

<button type = «button» class = «btn btn-default»> Button 5 </button>

<button type = «button» class = «btn btn-default»> Button 6 </button>

</div>

<div class = «btn-group»>

<button type = «button» class = «btn btn-default»> Button 7 </button>

<button type = «button» class = «btn btn-default»> Button 8 </button>

<button type = «button» class = «btn btn-default»> Button 9 </button>

</div>

</div>

Bootstrap Glyphicons

Bootstrap обеспечивает использование 260 значков набора Halflings библиотеки GLYPHICONS (http://glyphicons.com/) вместо изображений для ускорения загрузки страницы.

Значок glyphicon вставляется с помощью контейнера <span class=«glyphicon glyphicon-name»> </span>, где name – имя значка. Здесь есть отличие от сайта http://glyphicons.com, там синтаксис предлагается другой <span class=«halflings halflings-name»> </span>.

<button type=«button» class=«btn btn-info»>

<span class=«glyphicon glyphicon-search»> </span> Search

</button>

<a href=«#» class=«btn btn-success btn-lg»>

<span class=«glyphicon glyphicon-print»> </span> Print

</a>

Вопрос :

Почему значок не отображается?

<div class=«container»>

<span class=«glyphicon-print»> </span>

</div>

Ответ:

Отсутствует класс. glyphicon.

<button type = «button» class = «btn btn-default btn-lg»>

<span class = «glyphicon glyphicon-user»> </span>

User

</button>

<button type = «button» class = «btn btn-default btn-sm»>

<span class = «glyphicon glyphicon-user»> </span>

User

</button>

<button type =«button» class = «btn btn-default btn-xs»>

<span class = «glyphicon glyphicon-user»> </span>

User

</button>

Изменить цвет и размер значка glyphicon также можно с помощью CSS.

<span class=«glyphicon glyphicon-wrench logo-small»> </span>

.logo-small {

color: #f4511e;

font-size: 50px;

}

Значки и метки

С помощью контейнера <span class=«badge»> [число] </span> Bootstrap позволяет добавить количество сообщений, комментарий, обновлений и др.

<a href=«#»> Comments <span class=«badge»> 10 </span> </a>

<button type=«button» class=«btn btn-success»> Messages <span class=«badge»> 3 </span> </button>

<a href=«#»> Message <span class=«badge»> new 10 </span> </a>

Класс. label, совместно с классами. label-default,.label-primary,.label-success,.label-info,.label-warning,.label-danger в контейнере <span> позволяет добавить разноцветные метки.

<span class=«label label-default»> Default Label </span>

<span class=«label label-primary»> Primary Label </span>

<h3> <span class=«label label-success»> Success Label </span> </h3>

<span class=«label label-info»> Info Label </span>

<span class=«label label-warning»> Warning Label </span>

<span class=«label label-danger»> Danger Label </span>

Bootstrap Progress Bars

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

<div class=«progress»>

<div class=«progress-bar» role=«progressbar» aria-valuenow=«70» aria-valuemin=«0» aria-valuemax=«100» style=«width:70%»>

<span class=«sr-only»> 70% Complete </span> 70%

</div>

</div>

Здесь класс. sr-only обеспечивает информацию для людей с ограниченными возможностями.

Визуальное заполнение индикатора обеспечивает атрибут style=«width:70%».

С помощью Javascript заполнение индикатора меняется следующим образом:

$('.progress-bar’).css (’width’, value+'%').attr (’aria-valuenow’, value);

Дополнительно классы. progress-bar-success,.progress-bar-info,.progress-bar-warning,.progress-bar-danger изменяют цвет заполнения индикатора.

Конец ознакомительного фрагмента.

Текст предоставлен ООО «ЛитРес».

Прочитайте эту книгу целиком, купив полную легальную версию на ЛитРес.

Безопасно оплатить книгу можно банковской картой Visa, MasterCard, Maestro, со счета мобильного телефона, с платежного терминала, в салоне МТС или Связной, через PayPal, WebMoney, Яндекс.Деньги, QIWI Кошелек, бонусными картами или другим удобным Вам способом.