Адаптивный дизайн.

Хотели бы вы улучшить адаптивность своего сайта с помощью Бутстрап ? Важнейшим аспектом этого фреймворка является его базовая сетка с 12 колонками, которая используется для создания гибкого шаблона.

Мы создадим простой сайт с использованием Bootstrap и научимся использовать его сетку.

Перед выполнением руководства

Прежде чем следовать приведенному ниже руководству нужно:

  • Иметь общее понимание того, что такое Bootstrap ;
  • Как работает система сеток Bootstrap ;
  • Загрузить Bootstrap на жесткий диск;
  • Создать базовый файл Bootstrap index.html .
Что такое Bootstrap

Бутстрап 3 — это платформа для HTML , CSS и JavaScript разработчиков, создающих адаптивные сайты. Фреймворк состоит из созданных адаптивных CSS-стилей столбцов, списков, меню навигации, форм и других элементов.

Система сеток Bootstrap
  • Система сеток Bootstrap классифицирует размеры экрана по четырем типам: сверхмалые, малые, средние и большие;
  • Сверхмалые — это экраны смартфонов. Малые — планшетов, таких как iPad . Средние — стационарные мониторы и большие;
  • Чтобы помочь точно настроить адаптивные функции для этих типов экранов, Bootstrap делит ширину экрана на 12 столбцов;
  • Каждый из этих четырех типов сеток Бутстрап становится адаптивным, только если ему назначается отдельный класс CSS ;
  • Например, чтобы сделать div адаптивным на небольших устройствах, этот div должен иметь собственный класс Bootstrap .col-xs- , например .
Загрузка Bootstrap

Перейдите на сайт getboostrap.com и нажмите кнопку «Download Bootstrap »:

Вы увидите страницу «Начало работы ». Нажмите кнопку «Загрузить Bootstrap »:


Сохраните файл на жестком диске. Его не нужно сохранять на сервере. Разархивируйте файл и переименуйте извлеченную папку в «bootstrap «.

Подготовка базовой страницы Bootstrap index.html Шаг 1. Создайте файл Bootstrap index.html

Вернитесь на страницу «Начало работы » и нажмите ссылку «Basic Template » в правой боковой панели:


Вы увидите код Бутстрап шаблона. Нажмите кнопку «Копировать », чтобы скопировать код:


Вставьте код «Basic Template » в текстовый редактор и сохраните его как файл index.html в той же папке, где находится папка «bootstrap ». Теперь он станет главной страницей сайта Bootstrap .

Откройте вновь созданный файл index.html в браузере и просмотрите свой базовый сайт Bootstrap :


Откройте файл index.html в текстовом редакторе и между тегами и добавьте (1). Закройте этот новый div после тега (2) и сохраните файл:


Перезагрузите страницу в браузере и обратите внимание на то, что текст «Hello World! » больше не прилегает к краю страницы, а смещен немного вправо. Класс Бутстрап «container «, который мы назначили div , добавил этот отступ:


Вернитесь к файлу index.html . Между тегами и замените «Hello World! » на «Trusthub ». Сохраните файл и просмотрите сайт.

Шаг 2. Добавление контента и боковой панели

Вернитесь к файлу index.html и под строкой Trustub вставьте следующий код:

What Trusthub can do for you

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi.

Our Team

Quisque rutrum. Aenean imperdiet. Etiam ultricies nisi vel augue. Curabitur ullamcorper ultricies nisi. Nam eget dui. Etiam rhoncus. Maecenas tempus, tellus eget condimentum rhoncus.

Снова просмотрите сайт. Теперь вы должны увидеть контент и боковую панель «Our Team «, но для нее еще не задан адаптивный шаблон:


Вернитесь на сайт getbootstrap.com , и в верхнем меню нажмите кнопку «CSS »:


В боковой панели нажмите кнопку «Grid System »:


Прокрутите страницу вниз до раздела «Grid options » (1) и обратите внимание на 12-столбцовую систему сеток Бутстрап с четырьмя типами размеров экрана, их шириной и префиксами класса (2):


Не беспокойтесь, все это станет понятно в считанные секунды, когда вы начнете создавать свой первый Bootstrap-проект .

Откройте еще раз файл index.html и сразу под строкой для существующего установите класс «col-md-9 ». Теперь он должен выглядеть, как :


Перейдите к div , расположенному над заголовком «Out Team » и присвойте ему класс CSS «col-md-3 ». Сохраните файл.

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

Недостатком использования фреймворков является тот факт, что странице придется целиком «нести» за собой лишние стили фреймворка, даже если она использует лишь их малую часть. Фреймворк является отличным инструментом для прототипирования и создания страниц, для которых дизайн вторичен, например страницы администрирования. Если же у вас есть очень специфический дизайн, то сверстать его с помощью фреймворка может оказаться сложнее, чем нативными средствами. Тем не менее, и это возможно.

Об использовании Bootstrap В настоящее время есть несколько способов работы со стилями Bootstrap.Без использования LESS Для новичков сам Bootstrap рекомендует следующий подход: нужно скачать с сайта скомпилированный Bootstrap и положить его в свой проект, ничего не изменяя. Затем нужно создать свой пустой CSS файл и подключить его после bootstrap.css.


После этого, для того чтобы изменить стили Bootstrap вам нужно перебить их в своем styles.css примерно в таком виде:

A { color: #beceda; }
Очевидным минусом данного подхода является то, что вам придется вручную искать нужные стили, которые требуется перебить и не всегда это будет тривиально, т.к. некоторые параметры Bootstrap применяются ко многим селекторам в изменённом виде, например через формулы. Небольшую помощь здесь может оказать инструмент Customize , он поможет скомпилировать правильно ваши изменения, но только один раз. Если в будущем вы захотите изменить какой-то параметр, то придется заново вбивать изменненные значения для всех полей, чтобы скомпилировать свои стили.

С использованием LESS Данный способ подразумевает, что все переменные Bootstrap хранятся в.less файлах. Разработчик работает с этими переменными и по необходимости вручную или автоматически компилирует их в CSS файлы, а сам HTML подключает только скомпилированные CSS файлы. Именно этот вариант и будет рассматриваться в статье, как самый гибкий.

Существует большое количество способов скомпилировать LESS файлы и Bootstrap оставляет это на усмотрение разработчика. Сам Bootstrap использует для компиляции Grunt , вы можете предпочесть плагин для продуктов JetBrains, а мы, поскольку статья ориентирована на новичков, посмотрим в сторону более простых решений. Такими решениями являются программы WinLess для Windows, SimpLESS для Mac или Koala для Linux. Все эти программы делают примерно одно и то же: получают на вход папку с LESS файлами и слушают изменения в них. Как только вы вносите изменения в любой файл – тут же он компилируется в указанный CSS файл. Таким образом вам нет необходимости запускать компиляцию руками после каждого изменения. Вы изменяете LESS файл, сохраняете его и тут же видите изменения на сайте в уже скомпилированном, сжатом виде.

Создание проекта Первым шагом давайте создадим простую структуру файлов для нашего проекта.
Предварительный осмотр После создания структуры файлов открываем psd файл в Photoshop. Важно внимательно осмотреть шаблон и оценить его. Нам нужно понять следующие вещи:
  • Как будут нарезаться изображения?
  • Какие будут использоваться компоненты?
  • Какими будут основные стили?
  • Какой макет страницы у нас получится?
Только после того, как вы мысленно себе ответите на эти вопросы, можно переходить к вёрстке. Давайте рассмотрим эти вопросы по-порядку.Общие изображения На данном этапе нужно нарезать и сохранить только общие изображения, которые будут на всех страницах сайта и не относятся к контенту. В нашем случае это будет светло-серый фон страницы, фон заголовка, изображение карты, два логотипа и кнопки социальных сетей.

Сохраняем изображение карты:

Сохраним логотипы следующим образом:

Images/logo.svg?1
images/footer-logo.png

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

/images/bg.png
/images/h1-bg.png

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

/images/social.png
/images/social-small.png

Компоненты Основное отличие вёрстки с помощью Bootstrap от вёрстки нативными средствами заключается в том, что Bootstrap вводит такое понятие, как компоненты. Компоненты представляют из себя часто используемые готовые HTML блоки с предопределенными стилями. Иногда компоненты используют JavaScript. Верстальщик может использовать как готовый компонент, так и определить свой внешний вид для него. Для этого часто нужно лишь поменять значение переменных в Bootstrap. Если нужны более гибкие изменения, верстальщик всегда может изменить HTML и CSS по своему усмотрению.

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

  • Для верстки колонками - сеточная система (row, col)
  • Для поиска – инлайновая форма (form-inline), сгруппированные контролы (input-group), кнопка (btn)
  • Для навигации - навигационная панель (navbar) и сама навигация (nav)
  • Для отображения подменю – группированный список (list-group)
  • Для блока карты – визуальная панель (panel)
  • Для отображения большого центрального блока – jumbotron
  • Для отображения рамок фотографий – миниатюры (thumbnail)
  • Более подробно на каждом компоненте мы остановимся, когда он нам встретится в вёрстке.Основные стили В Bootstrap все стили по умолчанию уже заданы, нам нужно только их перебить, если они отличаются от нашего дизайна. Сделаем это в файле src/less/variables.css.

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

    @brand-font: "Oswald",sans-serif;
    Если вы хотите использовать шаблон для русских сайтов, то шрифт Oswald можно попробовать заменить на наиболее близкий Cuprum, который поддерживает кириллицу.

    А теперь заменим настройки Bootstrap на свои:

    После того, как мы закончили с переменными, давайте начнем прописывать стили нашего дизайна в файле styles.less. Сначала подключим сам Bootstrap и наши переменные:

    @import "bootstrap/bootstrap.less"; @import "variables.less";
    Не все стили, заданные Bootstrap по умолчанию можно изменить переменными, давайте сделаем это вручную:

    P { margin: 20px 0; } .form-control { box-shadow: none; } .btn { font-family: @brand-font; }
    Здесь мы убрали тень у элементов формы, а текстам в кнопках указали специфический шрифт страницы.

    Затем опишем фон страницы и верхнюю полоску:

    Body { border-top: 5px solid #7e7e7e; background-image: url(../images/bg.png); }
    Далее в тексте не будет указываться в какой файл пишутся стили. Просто запомните, что все переменные мы сохраняем в файл variables.less, а CSS стили будем хранить в styles.less.

    Каркас HTML Вёрстку сайта начинаем традиционно с каркаса HTML. Вставляем в файл index.html код простейшего шаблона со страницы Getting started , предварительно убрав всё лишнее:

    Whitesquare
    В этом блоке создается HTML5 структура документа. В title указываем название нашей страницы – Whitesquare. Метатегом viewport указываем, что ширина страницы на мобильных устройствах будет равна ширине экрана и начальный масштаб будет 100%. Затем подключается файл стилей. И для версий Internet Explorer меньше девятой подключаем скрипты, позволяющие правильно отображать нашу верстку.

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

    Давайте добавим в body следующий код:


    Здесь нам встречается первый компонент Bootstrap – колонки . Родительскому элементу колонок задается класс «row», а классы колонок начинаются с префикса «col-», затем идет размер экрана (xs, sm, md, lg), а заканчиваются относительной шириной колонки.

    Колонке можно задавать одновременно различные классы со значениями для экранов, например class=«col-xs-12 col-md-8». Эти классы просто задают ширину колонке в процентах для определенного размера экрана. Если колонке не задан класс определенного экрана, то применится класс для минимально определенного экрана, а если и он не указан – то никакая ширина не применится и блок займет максимально возможную ширину.

    У нас классы «col-md-7» и «col-md-17» указывают, что блоки представляют из себя колонки шириной 7 и 17 относительно родительского контейнера. По умолчанию сумма ширин колонок в Bootstrap равняется 12, однако мы увеличили это число вдвое для достижения нужной нам гибкости.

    Body { … .wrapper { padding: 0 0 50px 0; } header { padding: 20px 0; } }
    Данную конструкцию мы поместили внутрь body. Синтаксис LESS позволяет вкладывать правила друг в друга, которые потом скомпилируются в такие конструкции:

    Body .wrapper {…} body header {…}
    Такой подход позволяет видеть структуру HTML прямо внутри CSS и дает некую «область видимости» правилам.

    Логотип

    Вставляем логотип в тег header:

    Дополнительных стилей не требуется.

    Поиск

    Для того чтобы создать поиск, нам понадобятся следующие компоненты Bootstrap: инлайновая форма , сгруппированные контролы и кнопка .
    В теге header создаем инлайновую форму, выровненную по правому краю. Поля такой формы обязательно должны иметь класс «form-control» и label.

    В форму мы помещаем компонент «сгруппированные контролы». Группировка контролов позволяет убрать отступ между вводом текста и кнопкой и как бы слить их в единый элемент.
    Он представляет из себя div с классом «input-group» и полями, а кнопка такого компонента помещается в блок с классом «input-group-btn».

    Поскольку нам не нужно показывать label для поля поиска - скроем его классом «sr-only». Это нужно для специальных устройств чтения с экрана.

    Кнопке добавляется класс «btn-primary», означающий, что это первичная кнопка данной формы.

    … Search GO
    Всё, что нам осталось - это задать в стилях ширину форме поиска.

    Body { … .wrapper { … header { … .form-search { width: 200px; } } } }

    Меню

    Для отображения меню возьмем компонент «навигационная панель » и поместим в него компонент «навигация », которая представляет из себя список со ссылками. Для навигации добавляется класс «navbar-nav», который применяет специальные стили навигации внутри навигационной панели.


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

    /*высота навигационного меню*/ @navbar-height: 37px; /*задаем побольше горизонтальный отступ*/ @nav-link-padding: 10px 30px; /*фон для пунктов меню*/ @navbar-default-bg: @panel-bg; /*цвет текста в пунктах меню*/ @navbar-default-link-color: #b2b2b2; /*и при наведении мышки – такой же*/ @navbar-default-link-hover-color: @navbar-default-link-color; /*фон активного пункта меню – наш специфический голубой цвет*/ @navbar-default-link-active-bg: @brand-primary; /*цвет текста активного пункта меню*/ @navbar-default-link-active-color: #fff;
    Помимо настраиваемых параметров, опишем дополнительные в стилях – это текст в верхнем регистре и наш специфический шрифт:

    Body { … .wrapper { … .navbar a { text-transform: uppercase; font: 14px @brand-font; } } }

    Заголовок страницы

    Заголовок страницы помещается в div с классом «heading».

    About us
    И имеет следующие стили:

    Body { … .wrapper { … .heading { height: 40px; background: transparent url(../images/h1-bg.png); margin: 30px 0; padding-left: 20px; h1 { display: inline-block; color: #7e7e7e; font: normal 40px/40px "Oswald", sans-serif; background: url(../images/bg.png); margin: 0; padding: 0 10px; text-transform: uppercase; } } } }
    Здесь мы рисуем серую полоску фоном на div’e, и в нее вкладываем инлайновый h1 с нужным шрифтом и фоном цвета страницы, чтобы создалось впечатление прозрачного фона для h1.

    Подменю

    При создании подменю, мы не будем использовать компонент «навигация», так как по стилям он нам не очень подходит, гораздо больше нам подойдет компонент «группированный список ». Каждый элемент такого компонента имеет класс «list-group-item».

    Подменю нужно разместить в теге aside. Список ссылок создаем аналогично главному меню.


    В настройках компонента укажем, что все группированные списки нужно показывать с фоном и рамкой компонента «панель»:

    @list-group-bg: @panel-bg; @list-group-border: @panel-inner-border;
    И применяем к подменю следующие стили:

    Body { … .wrapper { … .submenu { margin-bottom: 30px; li { display: list-item; font: 300 14px @brand-font; list-style-position: inside; list-style-type: square; padding: 10px; text-transform: uppercase; &.active { color: @brand-primary; } a { color: @text-color; text-decoration: none; &:hover { color: @text-color; } } } } } }
    Сначала возвращаем элементам списка стандартные стили, так как Bootstrap их перебил на свои. Добавляем отступ снизу. Для подменю применяется более тонкий шрифт и квадратные маркеры. А для ссылок задаем цвета, верхний регистр и убираем подчеркивание. Амперсанд в коде «&.active» по синтаксису LESS во время компиляции заменится на родительский селектор: «.submenu li.active».

    Контент сайдбара В контенте сайдбара помимо подменю располагается также изображение с расположением офисов.

    Для его отображения нам подойдет компонент «панель », а точнее его вариация «основная панель» (panel-primary) для раскраски заголовка. Этот компонент содержит блок заголовка (panel-heading) и блок содержания панели (panel-body). Изображению карты добавляем класс «img-responsive», который позволит картинке уменьшаться при маленькой ширине экрана.

    … Our offices
    В переменных Bootstrap мы уже задали цвет для фона панели (panel-bg), а теперь укажем, что «primary» панель будет иметь серую рамку дефолтной панели, а не голубую, как задано по умолчанию:

    @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 . Добавим его в колонку контента:

    “Quisque in enim velit, at dignissim est. nulla ul corper, dolor ac pellentesque placerat, justo tellus gravida erat, vel porttitor libero erat.”

    John Doe, Lorem Ipsum
    Через переменные для компонента 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 по умолчанию. Также добавим стили наших шрифтов.

    Контент

    Lorem ipsum dolor sit amet…

    Donec vel nisl nibh…

    Donec vel nisl nibh…


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


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

    @thumbnail-padding: 1px; @thumbnail-border: #c9c9c9;

    Блок «Our team»

    При верстке этого блока добавим сначала заголовок:

    Our team
    со стилем:

    Body { … .wrapper { … h2 { background: none repeat scroll 0 0 #29C5E6; color: #fff; font: 300 30px @brand-font; padding: 0 10px; text-transform: uppercase; } } }
    А затем добавим блок с классом «team», который состоит из двух строк, содержащих карточки сотрудников. Каждая карточка – это колонка. Карточка имеет ширину равную четырем колонкам нашей сетки. Все карточки кроме первой в строке имеют отступ слева, который создается классом «col-md-offset-1». Содержимое карточки состоит из изображения и описания (.caption)

    John Doe Saundra Pittsley

    team leader

    Ericka Nobriga

    art director

    Cody Rousselle

    senior ui designer


    После создания разметки зададим этим элементам следующие стили:

    Body { … .wrapper { … .team { .row { margin-top: 20px; .col { white-space: nowrap; .thumbnail { margin-bottom: 5px; } } .col-md-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-md-offset-1». Ему пришлось задать отступ 3.7%, т.к. стандартный отступ был слишком большой.

    Футер Футер состоит из четырёх больших блоков: ленты Твиттера, карты сайта, социальных ссылок и логотипа с копирайтом.

    Для начала создадим контейнер футера с этим блоками:


    И применим к нему оформление:

    Footer { background: #7e7e7e; color: #dbdbdb; font-size: 11px; .container { height: 110px; padding: 10px 0; } }
    Тег footer задает серую область по всей ширине экрана, а контейнер внутри него отображает область по центру на больших экранах и задает высоту и отступ футера. Для выравнивания блоков внутри футера мы используем колонки.

    Лента Твиттера Верстаем содержимое ленты Твиттера:

    Twitter feed 23 oct

    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


    Стили:

    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; } } } } }
    Для всех заголовков футера задаем шрифты и отступы, а также делаем подчеркивание через нижнюю рамку. Для параграфов указываем отступ. Ссылке, отображающую дату, задаем цвет и подчеркивание.

    Карта сайта Карта сайта представляет собой две равные колонки со ссылками:

    Sitemap Home About Services Partners Support Contact
    Ссылкам задаем цвет, шрифт и отступ между ними.

    Body { … footer { … .container { … a { color: #dbdbdb; } .sitemap a { display: block; font-size: 12px; margin-bottom: 5px; } } } }

    Социальные ссылки

    Вставляем набор ссылок в блок с классом «social».

    Social networks
    И стилизуем их:

    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 сдвинули этот фон так, чтобы на каждой ссылке отобразилось соответствующее изображение.

    Копирайт Блок с копирайтом и логотипом – это картинка со ссылкой и параграф с текстом под ней.

    Copyright 2012 Whitesquare. A pcklab creation


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

    Body { … .footer { … .container { … .footer-logo { float: right; margin-top: 20px; font-size: 10px; text-align: right; a { text-decoration: underline; } } } } }

    На этом вёрстка закончена. Готовый проект можно скачать

    Требуется HTML5 doctype

    Bootstrap использует HTML-элементы и CSS-свойства, которые требуют HTML5 doctype. Включите его во все свои проекты.

  • Оформление и ссылки

    Основные компоненты Bootstrap включают в себя элементы отображения, оформления и стили ссылок. В частности, мы:

    • Удалили отступ margin элемента body
    • Установили белый цвет фона background-color: white; для body
    • Используем атрибуты @baseFontFamily , @baseFontSize и @baseLineHeight как основные
    • Настроили основной цвет ссылки с помощью @linkColor и применяем подчеркивание только для селектора:hover

    Эти стили вы можете найти в scaffolding.less .

    Сброс настроек посредством Normalize

    В Bootstrap 2 мы применили старый сброс браузерных дефолтов с помощью Normalize.css , проект от Николаса Галлагера который также включает в себя HTML5 Boilerplate . Так как мы часто используем Normalize в нашем reset.less , мы удалили некоторые элементы специально для Bootstrap.

    Сетка дизайна по умолчанию Демонстрация

    Основная сетка макета состоит из 12 колонок , обеспечивая ширину контейнеров в 940px без активных динамических особенностей . При добавлении динамического файла CSS сетка может растягиваться в ширину от 724px до 1170px, в зависимости от вашего монитора. На дисплеях, ширина которых менее 767px, колонки становятся плавающими и выстраиваются вертикально.

    Основная сетка HTML

    Для простого макета в две колонки создайте класс.row и добавьте соответствующее число колонок.span* . Так как это сетка в 12 колонок, каждый диапазон из двух.span* насчитывает 12 колонок и всякий раз будет добавлять 12 колонок в каждую строку (или то количество колонок, которое задано в родительском элементе).

  • ...
  • ...
  • В данном примере у нас имеются.span4 и.span8 , созданные и 12 колонок и одной сплошной строки.

    Перемещение колонок

    Подвиньте колонки вправо, используя классы.offset* . Каждый класс увеличивает левый отступ колонки на размер ее самой. Например, .offset4 перемещает.span4 на четыре колонки.

  • ...
  • ...
  • Верстка колонок

    Чтобы сверстать контент, используя сетку по умолчанию, добавьте новый класс.row и установите расстояние.span* для колонок внутри существующей.span* колонки. Сверстанные строки должны состоять из набора колонок, который добавлен к количеству родительских колонок.

    Колонка уровня 1

    Уровень 2

    Уровень 2

  • Level 1 column
  • Level 2
  • Level 2
  • Плавающая сетка Демонстрация

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

    Основная плавающая сетка HTML

    Делает любую строку плавающей с помощью изменения.row на.row-fluid . Колонки останутся прежними, что позволяет с легкостью переключаться между фиксированным и плавающим шаблоном дизайна.

  • ...
  • ...
  • Плавающее перемещение

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

  • ...
  • ...
  • Плавающая верстка

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

  • Level 1 of column
  • Level 2
  • Level 2
  • Макеты Фиксированная разметка

    Основной фиксированный по ширине макет (опционально динамический) с единственным требованием — .

  • Плавающая разметка

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

  • Адаптивный дизайн Включение адаптивных возможностей

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

  • Внимание! По умолчанию в Bootstrap не включены адаптивные возможности, поскольку это не везде требуется. Вместо того, чтобы разработчики каждый раз отключали этот функционал, логичнее будет дать им возможность включать его при необходимости.

    Об адаптивных особенностях Bootstrap

    Медиа запросы изменяют обычный CSS, основанный на большом количестве условий и соотношений, размеров, типов дисплея и пр., но чаще всего — на фокусе в пределах min-width и max-width .

    • Изменяет ширину колонок в сетке
    • Там, где это необходимо, выравнивает элементы вертикально вместо использования обтекания.
    • Изменяет размер заголовков и текста для лучшего отображения в различных устройствах.

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

    Поддерживаемые устройства

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

  • /* Large desktop */
  • @media (min - width : 1200px ) { ... }
  • /* Portrait tablet to landscape and desktop */
  • @media (min - width : 768px ) and (max - width : 979px ) { ... }
  • /* Landscape phone to portrait tablet */
  • @media (max - width : 767px ) { ... }
  • /* Landscape phones and down */
  • @media (max - width : 480px ) { ... }
  • Дополнительные адаптивные классы

    Показанная здесь таблица классов обеспечивает динамику для различных устройств и их работу в связке с сеткой макета и медиа-запросами (разделено по устройствам). Данные классы вы можете найти в responsive.less .

    Класс Телефоны 767px и менее Планшеты 979px to 768px Ноутбуки и десктопы По умолчанию .visible-phone .visible-tablet .visible-desktop .hidden-phone .hidden-tablet .hidden-desktop
    Виден
    Виден
    Виден
    Виден Виден
    Виден Виден
    Виден Виден
    Когда использовать?

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

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

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

    Виден на…

    Зеленые отметки обозначают, что класс виден на данном дисплее.

    • Телефон? Телефон
    • Планшет? Планшет
    • Десктоп? Десктоп
    Скрыт на…

    В этом случае зеленые отметки обозначают, что класс не отображается на данном дисплее.

    • Телефон? Телефон
    • Планшет? Планшет
    • Десктоп? Десктоп

    Bootstrap является сейчас самым используемым фреймворком. Когда он только появился, он стал отличным выбором как для разработчиков сайтов так и для любителей, благодаря своей простоте.

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

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

    1. Rows и Columns

    Часть заголовка я специально оставил на английском языке, чтобы возникало меньше путаницы (rows - ряды, columns - колонки)

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

    Rows (ряды) - это один уровень блоков. Это означает, что когда мы создаем новый ряд (row) он занимает всю ширину элемента внутри которого он находится.

    Горизонтальное выравнивание осуществляется с помощью колонок (Columns). Дочерними элементами ряда может являться только колонка. Размещение контента в row без колонки - может привести к нарушению макета

    Ваш контент Правильно размещенный контент

    Замечание: Колонки и ряды имеют особые отношения. Каждая колонока имеют отступ - padding - в 15px слева и справа, таким образом контент внутри имеет равные отступы по краям. Такие правила "отодвигают" колонки от ряда на 15px , а это может нарушить макет, чтобы этого не происходило для row заданы отрицательные отступы что позволяет размещать крайние элементы без отступов от родителя, и именно поэтому колонку всегда следует оборачивать в row.

    2. Row разделены 12

    Ряд поделен на 12 равных частей. Когда мы собираемся разместить внутри ряда колонку - нам необходимо указать ее ширину - ширину которую займет колонка. Это делается путем добавления в блоку div класса col-md-номер, где номер может быть целым числом от 1 до 12. В зависимости от данного числа, столбец будет занимать определенный процент от полной щирины строки. Например: 6 это 50% от ширину ряда так как 6/12 = 0,5, 3 - 25% (3/12) и т.д.

    Вся ширина ряда 25% 25% 50%

    3. Обертывание колонок

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

    В примере первые 2 колонки имеют ширину 8 и 4 соотвественно, что в сумме дает 12. Таким образом первая строка становится заполненной и следующий за ними элемент будет перенесен на следующую строку.

    Эта колонка шириной 9 будет перенесена на следующую строчку

    4. Классы для размеров экрана

    Помните мы писали .col-md-номер во втором шаге? Этот -md- означает средние размеры экрана (от слова medium - средние). В bootstrap заложены стандартные классы для использования на разных размерах экрана:

    xs - (Extra small) - Экстра маленькие экраны, такие как у смартфонов, Используйте их так: .col-xs-номер

    sm - (Small Screens) - Маленькие экраны, такие как у планшетов. Использование: .col-sm-номер

    md - (Medium) - Средние размеры экранов, это экраны с низким количеством точек на дюйм и ноутбуки. Использование такое же как и в предыдущих примерах: .col-md-номер

    lg - (Large) - Большие экраны с высоким разрешением. .col-lg-номер

    Bootstrap высчитывает разрешение экрана и dpi (количество точек на дюйм или плотность пикселей) и в соответствии с этим вычислением указывает какой класс активен в данный момент. Это полноценный способ контролировать как положение, так и отображение контента в целом для любых устройств.

    Данный блок на среднем экране займет половину, на очень маленьком - всю ширину

    5. Clearfix

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

    Эта колонка выше чем все остальныне

    6. Offsets (Смещения) - ваши друзья

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

    Чтобы создать отступы слева и/или справа. Применение к любому блоку с колонкой класса .col-md-offset-2 сместит данный блок вправо на размер двух пустых колонок. Это же правило действует и ля других размеров экрана т.е. col-xs-2, col-sm-2 и прочие.

    7. Классы Push и Pull

    Классы.push и.pull позволяют нам переназначить привязку блоков в зависимости от экрана устройства. Класс.push двигает колонку к правому краю, а класс.pull - к левому. Отличие данного класса от offset в том что они имеют position:relative, таким образовам не сдвигая остальные блоки.

    Классы push и pull имеют следущий синткасис: .col-размер-push(pull)-число. Размеры такие же как и в 4 пункте - xs, sm, md, lg. Номер это количество колонок, которые мы хотим подвинуть.

    На ноутбуках этот текст будет отображаться справа от картинки, на XS экранах картинка будет справа а текст слева

    Заключение

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

    Адаптивным дизайном называется способ вёрстки, когда ширина макета веб-страницы подстраивается под ширину устройства. Самый простой вариант - это пропорциональное изменение масштаба, но на деле лучше менять и расположение элементов и их размеры. Так мы получим наиболее оптимальный вид для смартфонов, планшетов и мониторов.

    В Bootstrap уже заложены возможности адаптивного дизайна. Если вы сделаете простой многоколоночный макет, а затем начнёте уменьшать ширину окна браузера, то заметите, что изменяется и сам макет. Но этим всё не ограничивается, гораздо интереснее немного менять сам макет чтобы он наилучшим образом соответствовал устройству. Для этого введены ключевые слова, которые встречаются в именах классов, они представлены в табл. 1.

    Чтобы задать ширину колонок для смартфонов достаточно в код включить класс col-xs-N, для мониторов он уже будет именоваться col-md-N. Любые классы можно комбинировать между собой, если класс для выбранного устройства не указан, то он наследуется снизу вверх. Это значит, что макет для смартфона будет выглядеть так же, как и макет для монитора. Но не наоборот. Именно поэтому вёрстка всегда начинается с макета для смартфона, затем уже идёт планшет и монитор.

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

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

    С учётом этой строки и новых классов сделаем простой макет с двумя колонками (пример 1).

    Пример 1. Адаптивный макет

    Адаптивный макет { background-color: #eee; text-align: center; padding-top: 10px; padding-bottom: 10px; margin-bottom: 10px; font-size: 2rem; } Заголовок Колонка 1 Колонка 2

    Для тестирования макета не обязательно смотреть его на каком-то заданном устройстве, достаточно уменьшить ширину окна браузера и мы сразу же увидим изменения. На рис. 1-3 показан результат данного примера при разной ширине окна.

    Рис. 1. Вид на смартфоне

    Рис. 2. Вид на планшете

    Рис. 3. Вид на мониторе

    Мы рассмотрели самый простой случай, когда расположение элементов практически не меняется относительно друг друга. Как быть, если потребуется переставить элементы местами или кое-что убрать для маленьких экранов? Напрямую это сделать не получится, поэтому пойдём на небольшую хитрость - добавим два одинаковых элемента в разных местах и будем один прятать, а другой отображать. Bootstrap предлагает два набора классов для сокрытия и показа элементов в зависимости от ширины окна - hidden-xs и visible-xs-block . Принцип тот же, что и при работе с колонками, вместо xs подставляем нужное ключевое слово. В примере 2 показано как «перемещать» таким образом заголовок.

    Пример 2. Изменение положения заголовка

    Заголовок Колонка 1 Колонка 2 Заголовок

    Результат данного примера показан на рис. 4.