На прошлой неделе мы начали новый макет страницы с Bootstrap 3, сегодня мы собираемся закончить его. Сегодня мы рассмотрим создание следующих элементов: боковая панель, цитата, основной контент, блок «наша команда», нижний колонтитул, твиттер, карта сайта и кнопки социальных сетей. Как обычно, мы будем добавлять их шаг за шагом, стилизуя наши элементы.
Боковая панель
В боковой панели, кроме подменю, находится также изображение с расположением офисов.
Чтобы отобразить его, подойдем к компоненту «панель», точнее — к его варианту «основная панель» (panel-primary) для окраски заголовка. Этот компонент содержит блок заголовка (заголовок панели) и блок контента (тело панели). Затем мы добавляем класс img-responsive для карты изображений, который уменьшит изображение для маленьких экранов (отзывчивость).
<aside class="col-md-7">
…
<div class="panel panel-primary">
<div class="panel-heading">Our offices</div>
<div class="panel-body">
<img src="images/map.png" class="img-responsive" alt="Our offices">
</div>
</div>
</aside>
Мы уже установили цвет фона панели (panel-bg) в атрибутах начальной загрузки, и теперь мы указываем, что у «основной» панели будет серая граница панели по умолчанию, а не синяя, как по умолчанию:
@panel-primary-border: @panel-inner-border;
Теперь в стилях сайта нам нужно изменить настройки панелей по умолчанию, которые нельзя изменить с помощью переменных:
.panel {
box-shadow: none;
.panel-heading {
font: 14px @brand-font;
text-transform: uppercase;
padding: 10px;
}
.panel-body {
padding: 10px;
}
}
Здесь мы удалили тень от панелей, установили собственные поля и установили собственный шрифт для заголовка.
Цитата
Мы начнем макет содержимого, добавив цитату.
Этот элемент страницы наиболее похож на компонент Jumbotron. Добавьте его в столбец содержания:
<section class="col-md-17">
<div class="jumbotron">
<blockquote>
<p>
"Quisque in enim velit, at dignissim est. nulla ul corper, dolor ac pellentesque placerat, justo tellus gravida erat, vel porttitor libero erat."
</p>
<small>John Doe, Lorem Ipsum</small>
</blockquote>
</div>
</section>
С помощью переменных компонента jumbotron мы определяем белый цвет текста и фирменный синий фон:
@jumbotron-bg: @brand-primary; @jumbotron-color: #fff;
И опишите наши стили:
body {
…
.wrapper {
…
.jumbotron {
border-radius: 0;
padding: 0;
margin: 0;
blockquote {
border-left: none;
p {
font: 300 italic 33px @brand-font;
text-transform: uppercase;
margin-bottom: 0;
}
small {
text-align: right;
color: #1D8EA6;
font: 300 20px @brand-font;
&:before {
content: '';
}
}
}
}
}
}
Здесь мы удаляем углы скругления, отступы и декорации цитаты, которые определены в Bootstrap по умолчанию. Мы также добавляем наши стили шрифтов.
Основное содержание
Все необходимые стили для текста нашего контента мы уже добавили ранее. Поэтому осталось добавить только три абзаца с текстом:
<p>Lorem ipsum dolor sit amet...</p> <p>Donec vel nisl nibh...</p> <p>Donec vel nisl nibh...</p>
Следующим шагом является добавление двух изображений, которые находятся под текстом. Это делается с использованием двух столбцов:
<div class="row">
<div class="col-md-12">
<img src="images/about-1.png" alt="" class="thumbnail">
</div>
<div class="col-md-12">
<img src="images/about-2.png" alt="" class="thumbnail">
</div>
</div>
Класс thumbnail превращает изображения в великолепно выглядящие миниатюры. Таким образом, он делает всю работу за нас для стилизации изображений. Нам нужно только установить наши собственные поля и цвет рамки в переменных для этого компонента:
@thumbnail-padding: 1px; @thumbnail-border: #c9c9c9;
Блок «Наша команда»
Сначала мы добавим заголовок для этого раздела:
<h2>Our team</h2>
со следующими стилями
body {
…
.wrapper {
…
h2 {
background: none repeat scroll 0 0 #29C5E6;
color: #fff;
font: 300 30px @brand-font;
padding: 0 10px;
text-transform: uppercase;
}
}
}
А затем добавьте блок с командой класса, который состоит из двух строк, содержащих карточки сотрудников. Каждая карта — это столбец. Каждая карта имеет ширину, равную четырем столбцам нашей сетки. Все карты, кроме первой строки, имеют поле слева, созданное с помощью класса col-sm-offset-1. Каждая карта состоит из изображения и описания:
<div class="team">
<div class="row">
<div class="col col-sm-4">
<img src="images/team/Doe.jpg" alt="John Doe" class="thumbnail">
<div class="caption">
<h3>John Doe</h3>
<p>ceo</p>
</div>
</div>
<div class="col col-sm-4 col-sm-offset-1">
<img src="images/team/Pittsley.jpg" alt="Saundra Pittsley" class="thumbnail">
<div class="caption">
<h3>Saundra Pittsley</h3>
<p>team leader</p>
</div>
</div>
…
</div>
<div class="row">
<div class="col col-sm-4">
<img src="images/team/Nobriga.jpg" alt="Ericka Nobriga" class="thumbnail">
<div class="caption">
<h3>Ericka Nobriga</h3>
<p>art director</p>
</div>
</div>
<div class="col col-sm-4 col-sm-offset-1">
<img src="images/team/Rousselle.jpg" alt="Cody Rousselle" class="thumbnail">
<div class="caption">
<h3>Cody Rousselle</h3>
<p>senior ui designer</p>
</div>
</div>
…
</div>
</div>
После создания этой разметки мы определяем следующие стили для этих элементов:
body {
…
.wrapper {
…
.team {
.row {
margin-top: 20px;
.col {
white-space: nowrap;
.thumbnail {
margin-bottom: 5px;
}
}
.col-sm-offset-1 {
margin-left: 3.7%;
}
.caption {
h3 {
font: 300 16px @brand-font;
margin: 0;
}
p {
font: 300 14px @brand-font;
color: @brand-primary;
margin: 0;
}
}
}
}
}
}
Помимо отступов и шрифтов мы изменили класс col-sm-offset-1. Стандартная маржа была слишком большой, поэтому мы изменили ее до 3,7%.
нижний колонтитул
Нижний колонтитул состоит из четырех основных частей: канал Twitter, карта сайта, социальные ссылки и логотип с авторским текстом.
Сначала мы создаем контейнер для нижнего колонтитула с этими блоками:
<footer>
<div class="container">
<div class="row">
<div class="col-md-8 col-xs-12 twitter"></div>
<div class="col-md-4 col-xs-12 sitemap"></div>
<div class="clearfix visible-sm visible-xs"></div>
<div class="col-md-6 col-xs-12 social"></div>
<div class="col-md-6 col-xs-12 footer-logo"></div>
</div>
</div>
</footer>
тогда мы настраиваем это:
footer {
background: #7e7e7e;
color: #dbdbdb;
font-size: 11px;
overflow: hidden;
.container {
height: 110px;
padding: 10px 0;
}
}
Нижний колонтитул тега определяет серую область по ширине экрана, а внутренний контейнер отображает другую область, которая центрирована на больших экранах, и задает высоту и поле нижнего колонтитула. Для выравнивания блоков в нижнем колонтитуле мы используем столбцы.
Лента Твиттера
Разметка твиттера выглядит следующим образом:
<div class="col-md-8 col-xs-12 twitter"> <h3>Twitter feed</h3> <time datetime="2015-03-03"><a href="#">03 mar</a></time> <p>In ultricies pellentesque massa a porta. Aliquam ipsum enim, hendrerit ut porta nec, ullamcorper et nulla. In eget mi dui, sit amet scelerisque nunc. Aenean aug</p> </div>
Теперь мы определим стили для этого раздела:
body {
…
footer {
…
.container {
…
h3 {
border-bottom: 1px solid #919191;
color: #ffffff;
font-size: 14px;
line-height: 21px;
font-family: @brand-font;
margin: 0 0 10px;
text-transform: uppercase;
}
p {
margin: 5px 0;
}
.twitter {
p {
padding-right: 15px;
}
time a {
color: #b4aeae;
text-decoration: underline;
}
}
}
}
}
Для всех заголовков нижнего колонтитула мы указываем шрифты и поля и подчеркиваем нижнюю рамку. Для абзацев мы устанавливаем отступы. Для ссылки, отображающей дату, мы устанавливаем цвет и подчеркивание.
Карта сайта
Карта сайта состоит из двух равных столбцов со ссылками:
<div class="col-md-4 col-xs-12 sitemap">
<h3>Sitemap</h3>
<div class="row">
<div class="col-md-12">
<a href="/home/">Home</a>
<a href="/about/">About</a>
<a href="/services/">Services</a>
</div>
<div class="col-md-12">
<a href="/partners/">Partners</a>
<a href="/customers/">Support</a>
<a href="/contact/">Contact</a>
</div>
</div>
</div>
Мы применяем цвет, шрифт и поля для ссылок:
body {
…
footer {
…
.container {
…
a {
color: #dbdbdb;
}
.sitemap a {
display: block;
font-size: 12px;
margin-bottom: 5px;
}
}
}
}
Социальные кнопки
Мы помещаем набор ссылок (кнопок) в блок с social классом:
<div class="col-md-4 col-xs-12 social"> <h3>Social networks</h3> <a href="http://twitter.com/" class="social-icon twitter"></a> <a href="http://facebook.com/" class="social-icon facebook"></a> <a href="http://plus.google.com/" class="social-icon google-plus"></a> <a href="https://vimeo.com/" class="social-icon-small vimeo"></a> <a href="http://youtube.com/" class="social-icon-small youtube"></a> <a href="http://flickr.com/" class="social-icon-small flickr"></a> <a href="http://instagram.com/" class="social-icon-small instagram"></a> <a href="/rss/" class="social-icon-small rss"></a> </div>
И стилизация нижнего колонтитула со ссылками:
body {
…
footer {
…
.container {
…
.social {
.social-icon {
width: 30px;
height: 30px;
background: url(../images/social.png) no-repeat;
display: inline-block;
margin-right: 10px;
}
.social-icon-small {
width: 16px;
height: 16px;
background: url(../images/social-small.png) no-repeat;
display: inline-block;
margin: 5px 6px 0 0;
}
.twitter { background-position: 0 0; }
.facebook { background-position: -30px 0; }
.google-plus { background-position: -60px 0; }
.vimeo { background-position: 0 0; }
.youtube { background-position: -16px 0; }
.flickr { background-position: -32px 0; }
.instagram { background-position: -48px 0; }
.rss { background-position: -64px 0; }
}
}
}
}
Здесь мы использовали технику спрайтов — когда один файл изображения используется для разных изображений. Все ссылки делятся на большие иконки ( .social-icon) и маленькие ( .social-icon-small). Мы устанавливаем наше изображение спрайта для этих классов как встроенный блок с фиксированными размерами и тем же фоном. А затем с помощью CSS мы сместили фон, чтобы каждая ссылка отображала соответствующее изображение.
Авторские права
Блок с авторским правом и логотипом — это картинка со ссылкой и абзацем с текстом под ней.
<div class="col-md-8 col-xs-12 footer-logo"> <a href="/"><img src="images/footer-logo.png" alt="Whitesquare logo"></a> <p>Copyright © 2015 Whitesquare.</p> </div>
Стили аналогичны предыдущим блокам, с той лишь разницей, что блок выровнен по правой стороне и выровнен внутри него по правой стороне:
body {
…
.footer {
…
.container {
…
.footer-logo {
float: right;
margin-top: 20px;
font-size: 10px;
text-align: right;
a {
text-decoration: underline;
}
}
}
}
}









