Bootstrap разметка – Вертикальные отступы между колонками с помощью Sass на примере bootstrap сетки / Habr

Содержание

Обзор. Разметка · Bootstrap

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

Контейнеры

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

В Bootstrap используется три разных типа контейнеров:

  • .container, который устанавливает максимальную ширину max-width в каждой отзывчивой точке останова;
  • .container-fluid, ширина которого width: 100% на всех точках останова;
  • .container-{breakpoint}, ширина which is width: 100% до указанной точки останова.

В приведенной ниже таблице показано, как максимальная ширина max-width каждого контейнера

.container и .container-fluid сравнивается с исходными в каждой точке останова.

Посмотрите их в действии и сравните их в нашем примере Сеток.

Все в одном

По умолчанию класс .container является отзывчивым контейнером фиксированной ширины, что означает, что его максимальная ширина max-width изменяется в каждой точке останова.

<div>
  <!-- Content here -->
</div>

Изменчивый

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

<div>
  ...
</div>

Отзывчивый

Отзывчивые контейнеры появились в Bootstrap версии 4.4. Они позволяют указывать класс шириной 100%, пока не будет достигнута указанная точка останова, после чего мы применяем max-width для каждой из более высоких точек останова. Например, .container-sm имеет иметь ширину в 100% до тех пор, пока не будет достигнута точка останова

sm, где он будет масштабироваться уже с помощью md, lg и xl.

<div>ширина 100% до маленькой (small) точки останова</div>
<div>ширина 100% до средней (medium) точки останова</div>
<div>ширина 100% до большой (large) точки останова</div>
<div>ширина 100% до экстра большой (Extra large) точки останова</div>

Отзывчивые брейкпойнты

Поскольку Bootstrap разработан как mobile-first, тут используются медиа-запросы @media для создания брейкпойнтов контента и интерфейсов. Эти брейкпойнты в основном сделаны на минимальных широтах зоны просмотра и позволяют масштабировать элементы по мере изменения размера зоны просмотра.

В исходниках Sass Bootstrap главным образом записаны следующие ранги @media (брейкпойнты) для разметки, сеточной системы и компонентов.

// Экстрамалые девайсы («телефоны», 
// Малые девайсы («ландшафтные телефоны», >= 576px)
@media (min-width: 576px) { ... }

// Средние девайсы («таблетки», >= 768px)
@media (min-width: 768px) { ... }

// Большие девайсы (десктопы, >= 992px)
@media (min-width: 992px) { ... }

// Экстрабольшие девайсы (большие десктопы, >= 1200px)
@media (min-width: 1200px) { ... }

Так как все эти параметры записаны в исходниках как Sass, все @media доступны через миксины:

// Не существует медиа-запрос для брекпоинта xs, поскольку это фактически `@media (min-width: 0) { ... }`
@include media-breakpoint-up(sm) { ... }
@include media-breakpoint-up(md) { ... }
@include media-breakpoint-up(lg) { ... }
@include media-breakpoint-up(xl) { ... }

// 
Пример: Скрыто начало с `min-width: 0`, а затем отображается на брекпоинте `sm`
.custom-class {
  display: none;
}
@include media-breakpoint-up(sm) {
  .custom-class {
    display: block;
  }
}

Можно использовать и другие размеры (с заданным размером экрана или меньше»):

// Экстрамалые девайсы («телефоны», @media (max-width: 575.98px) { ... }

// Малые девайсы («ландшафтные», @media (max-width: 767.98px) { ... }

// Средние девайсы («таблетки», @media (max-width: 991.98px) { ... }

// Большие девайсы (большие десктопы, @media (max-width: 1199.98px) { ... }

// Экстрабольшие девайсы (большие десктопы)
// Тут нет @media, т.к. такие брейпкойнты не имеют верхней границы по ширине 

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

Опять же, эти @media доступны через Sass миксины:

@include media-breakpoint-down(xs) { ... }
@include media-breakpoint-down(sm) { ... }
@include media-breakpoint-down(md) { ... }
@include media-breakpoint-down(lg) { ... }
// Нет медиа-запроса, необходимого для брекпоинта xl, поскольку он не имеет верхней границы по ширине

// Пример: стиль из среднего брекпоинта и вниз
@include media-breakpoint-down(md) {
  .custom-class {
    display: block;
  }
}

Также в наличии @media и миксины размеров экрана, использующие минимальные и максимальные ширины брейкпойнтов.

// Экстрамалые девайсы («портретные телефоны», @media (max-width: 575.98px) { ... }

// Малые девайсы («ландшафтные», >= 575px)
@media (min-width: 576px) and (max-width: 767.98px) { ... }

// Средние девайсы («таблетки», >= 768px) 
@media (min-width: 768px) and (max-width: 991.98px) { ... }

// Большие девайсы (большие десктопы, >= 992px)
@media (min-width: 992px) and (max-width: 1199.98px) { ... }

// Большие девайсы (большие десктопы, >= 1200px)
@media (min-width: 1200px) { ... }

Эти @media также доступны из миксинов Sass:

@include media-breakpoint-only(xs) { ... }
@include media-breakpoint-only(sm) { ... }
@include media-breakpoint-only(md) { ... }
@include media-breakpoint-only(lg) { ... }
@include media-breakpoint-only(xl) { ... }

Также, @media могут занимать несколько значений ширин брейкпойнта:

// Пример
// Здесь стили применятся от средних девайсов до XL-девайсов
@media (min-width: 768px) and (max-width: 1199.98px) { ... }

Миксины Sass для захвата таких же параметров (выше) выглядели бы так:

@include media-breakpoint-between(md, xl) { ... }

Z-индекс

Несколько компонентов Bootstrap используют данный индекс z-index, т.е. свойство CSS, которое помогает контролировать расположение контента с помощью третьей оси. В Bootstrap используется «стандартный» Z-индекс, спроектированный для правильного расположения навигации, всплывающих подсказок, всплывающих окон и т.н. “modals” (pop-up окно наверху страницы).

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

100, хоть 500 и более.

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

$zindex-dropdown:          1000 !default;
$zindex-sticky:            1020 !default;
$zindex-fixed:             1030 !default;
$zindex-modal-backdrop:    1040 !default;
$zindex-modal:             1050 !default;
$zindex-popover:           1060 !default;
$zindex-tooltip:           1070 !default;

Для того, чтобы эффективно обращаться с перекрывающимися границами внутри компонентов (например, кнопки и формы ввода в группах форм ввода), мы используем по умолчанию значения z-index 1,2,3, а также hover и "активные состояния". В hover/focus/active мы подводим частный элемент к "переднему краю" использованием более высокого z-индекса, для показа его границы над вложенными элементами.

Обзор. Разметка · Bootstrap. Версия v4.1.3

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

Контейнеры

Это базовый элемент в Bootstrap и они необходимы при использовании нашей стандартной сеточной системы. Выбирайте отзывчивый, с фиксированной шириной (что значит, что его max-width изменяется на каждом брейкпойнте) или контейнер с плавающей шириной (width ==100% всегда).

Контейнеры могут иметь вложенные элементы, но в большинстве случаев можно обойтись без них.

<div>
  <!-- Content here -->
</div>

Используйте .container-fluid для создания контейнера полной ширины, занимающий 100% зоны просмотра.

<div>
  ...
</div>

Отзывчивые брейкпойнты

Поскольку Bootstrap разработан как mobile-first, тут используются медиа-запросы @media для создания брейкпойнтов контента и интерфейсов. Эти брейкпойнты в основном сделаны на минимальных широтах зоны просмотра и позволяют масштабировать элементы по мере изменения размера зоны просмотра.

В исходниках Sass Bootstrap главным образом записаны следующие ранги @media (брейкпойнты) для разметки, сеточной системы и компонентов.

// Экстрамалые девайсы («телефоны», 
// Малые девайсы («ландшафтные телефоны», >= 576px)
@media (min-width: 576px) { ... }

// Средние девайсы («таблетки», >= 768px)
@media (min-width: 768px) { ... }

// Большие девайсы (десктопы, >= 992px)
@media (min-width: 992px) { ... }

// Экстрабольшие девайсы (большие десктопы, >= 1200px)
@media (min-width: 1200px) { ... }

Так как все эти параметры записаны в исходниках как Sass, все @media доступны через миксины:

// Не сущетвет медиа-запрос для брекпоинта xs, поскольку это фактически `@media (min-width: 0) { ... }`
@include media-breakpoint-up(sm) { ... }
@include media-breakpoint-up(md) { ... }
@include media-breakpoint-up(lg) { ... }
@include media-breakpoint-up(xl) { ... }

// 
Пример: Скрыто начало с `min-width: 0`, а затем отображается на брекпоинте `sm`
.custom-class {
  display: none;
}
@include media-breakpoint-up(sm) {
  .custom-class {
    display: block;
  }
}

По случаю можно использовать и другие размеры (max-width: 575px == «данный размер или меньше»):

// Экстрамалые девайсы («телефоны», @media (max-width: 575.98px) { ... }

// Малые девайсы («ландшафтные», @media (max-width: 767.98px) { ... }

// Средние девайсы («таблетки», @media (max-width: 991.98px) { ... }

// Большие девайсы (большие десктопы, @media (max-width: 1199.98px) { ... }

// Экстрабольшие девайсы (большие десктопы)
// Тут нет @media, т.к. такие брейпкойнты не имеют верхней границы по ширине width

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

Опять же, эти @media доступны через Sass миксины:

@include media-breakpoint-down(xs) { ... }
@include media-breakpoint-down(sm) { ... }
@include media-breakpoint-down(md) { ... }
@include media-breakpoint-down(lg) { ... }
// Нет медиа-запроса, необходимого для брекпоинта xl, поскольку он не имеет верхней границы по ширине

// Пример: стиль из среднего брекпоинта и вниз
@include media-breakpoint-down(md) {
  .custom-class {
    display: block;
  }
}

Также в наличии @media и миксины размеров экрана, использующие минимальные и максимальные ширины брейкпойнтов.

// Экстрамалые девайсы («портретные телефоны», @media (max-width: 575.98px) { ... }

// Малые девайсы («ландшафтные», >= 575px)
@media (min-width: 576px) and (max-width: 767.98px) { ... }

// Средние девайсы («таблетки», >= 768px) 
@media (min-width: 768px) and (max-width: 991.98px) { ... }

// Большие девайсы (большие десктопы, >= 992px)
@media (min-width: 992px) and (max-width: 1199.98px) { ... }

// Большие девайсы (большие десктопы, >= 1200px)
@media (min-width: 1200px) { ... }

Эти @media также доступны из миксинов Sass:

@include media-breakpoint-only(xs) { ... }
@include media-breakpoint-only(sm) { ... }
@include media-breakpoint-only(md) { ... }
@include media-breakpoint-only(lg) { ... }
@include media-breakpoint-only(xl) { ... }

Также, @media могут занимать несколько значений ширин брейкпойнта:

// Пример
// Здесь стили применятся от средних девайсов до XL-девайсов
@media (min-width: 768px) and (max-width: 1199.98px) { ... }

Миксины Sass для захвата таких же параметров (выше) выглядели бы так:

@include media-breakpoint-between(md, xl) { ... }

Z-индекс

Несколько компонентов Bootstrap используют данный индекс z-index, т.е. свойство CSS, которое помогает контролировать расположение контента с помощью третьей оси. В Bootstrap используется «стандартный» Z-индекс, спроектированный для правильного расположения навигации, всплывающих подсказок, всплывающих окон и т.н. “modals” (pop-up окно наверху страницы).

Эти высшие значения могут начинаться с любого числа, в идеале достаточно большого и специфичного, чтобы избежать конфликтов. Нам нужен стандартный набор этих чисел для использования с нашими компонентами: всплывающими подсказками, окнами, навбарами, выпадающими элементами, модальными элементами - так, чтобы мы могли бы разумно стандардартизировать их поведение. Не существует ограничений - используйте хоть 100, хоть 500 и более.

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

$zindex-dropdown:          1000 !default;
$zindex-sticky:            1020 !default;
$zindex-fixed:             1030 !default;
$zindex-modal-backdrop:    1040 !default;
$zindex-modal:             1050 !default;
$zindex-popover:           1060 !default;
$zindex-tooltip:           1070 !default;

Для того, чтобы эффективно обращаться с перекрывающимися границами внутри компонентов (например, кнопки и формы ввода в группах форм ввода), мы используем по умолчанию значения z-index 1,2,3, а также hover и "активные состояния". В hover/focus/active мы подводим частный элемент к "переднему краю" использованием более высокого z-индекса, для показа его границы над вложенными элементами.

Обзор. Разметка · Bootstrap. Версия v4.0.0

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

Контейнеры

Это базовый элемент в Bootstrap и они необходимы при использовании нашей стандартной сеточной системы. Выбирайте отзывчивый, с фиксированной шириной (что значит, что его max-width изменяется на каждом брейкпойнте) или контейнер с плавающей шириной (width ==100% всегда).

Контейнеры могут иметь вложенные элементы, но в большинстве случаев можно обойтись без них.

<div>
  <!-- Content here -->
</div>

Используйте .container-fluid для создания контейнера полной ширины, занимающий 100% зоны просмотра.

<div>
  ...
</div>

Отзывчивые брейкпойнты

Поскольку Bootstrap разработан как mobile-first, тут используются медиа-запросы @media для создания брейкпойнтов контента и интерфейсов. Эти брейкпойнты в основном сделаны на минимальных широтах зоны просмотра и позволяют масштабировать элементы по мере изменения размера зоны просмотра.

В исходниках Sass Bootstrap главным образом записаны следующие ранги @media (брейкпойнты) для разметки, сеточной системы и компонентов.

// Экстрамалые девайсы («телефоны», 
// Малые девайсы («ландшафтные телефоны», >= 576px)
@media (min-width: 576px) { ... }

// Средние девайсы («таблетки», >= 768px)
@media (min-width: 768px) { ... }

// Большие девайсы (десктопы, >= 992px)
@media (min-width: 992px) { ... }

// Экстрабольшие девайсы (большие десктопы, >= 1200px)
@media (min-width: 1200px) { ... }

Так как все эти параметры записаны в исходниках как Sass, все @media доступны через миксины:

@include media-breakpoint-up(xs) { ... }
@include media-breakpoint-up(sm) { ... }
@include media-breakpoint-up(md) { ... }
@include media-breakpoint-up(lg) { ... }
@include media-breakpoint-up(xl) { ... }

// Example usage:
@include media-breakpoint-up(sm) {
  .some-class {
    display: block;
  }
}

По случаю можно использовать и другие размеры (max-width: 575px == «данный размер или меньше»):

// Экстрамалые девайсы («телефоны», @media (max-width: 575.98px) { ... }

// Малые девайсы («ландшафтные», @media (max-width: 767.98px) { ... }

// Средние девайсы («таблетки», @media (max-width: 991.98px) { ... }

// Большие девайсы (большие десктопы, @media (max-width: 1199.98px) { ... }

// Экстрабольшие девайсы (большие десктопы)
// Тут нет @media, т.к. такие брейпкойнты не имеют верхней границы по ширине width

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

Опять же, эти @media доступны через Sass миксины:

@include media-breakpoint-down(xs) { ... }
@include media-breakpoint-down(sm) { ... }
@include media-breakpoint-down(md) { ... }
@include media-breakpoint-down(lg) { ... }

Также в наличии @media и миксины размеров экрана, использующие минимальные и максимальные ширины брейкпойнтов.

// Экстрамалые девайсы («портретные телефоны», @media (max-width: 575.98px) { ... }

// Малые девайсы («ландшафтные», >= 575px)
@media (min-width: 576px) and (max-width: 767.98px) { ... }

// Средние девайсы («таблетки», >= 768px) 
@media (min-width: 768px) and (max-width: 991.98px) { ... }

// Большие девайсы (большие десктопы, >= 992px)
@media (min-width: 992px) and (max-width: 1199.98px) { ... }

// Большие девайсы (большие десктопы, >= 1200px)
@media (min-width: 1200px) { ... }

Эти @media также доступны из миксинов Sass:

@include media-breakpoint-only(xs) { ... }
@include media-breakpoint-only(sm) { ... }
@include media-breakpoint-only(md) { ... }
@include media-breakpoint-only(lg) { ... }
@include media-breakpoint-only(xl) { ... }

Также, @media могут занимать несколько значений ширин брейкпойнта:

// Пример
// Здесь стили применятся от средних девайсов до XL-девайсов
@media (min-width: 768px) and (max-width: 1199.98px) { ... }

Миксины Sass для захвата таких же параметров (выше) выглядели бы так:

@include media-breakpoint-between(md, xl) { ... }

Z-индекс

Несколько компонентов Bootstrap используют данный индекс z-index, т.е. свойство CSS, которое помогает контролировать расположение контента с помощью третьей оси. В Bootstrap используется «стандартный» Z-индекс, спроектированный для правильного расположения навигации, всплывающих подсказок, всплывающих окон и т.н. “modals” (pop-up окно наверху страницы).

Эти высшие значения могут начинаться с любого числа, в идеале достаточно большого и специфичного, чтобы избежать конфликтов. Нам нужен стандартный набор этих чисел для использования с нашими компонентами: всплывающими подсказками, окнами, навбарами, выпадающими элементами, модальными элементами - так, чтобы мы могли бы разумно стандардартизировать их поведение. Не существует ограничений - используйте хоть 100, хоть 500 и более.

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

$zindex-dropdown:          1000 !default;
$zindex-sticky:            1020 !default;
$zindex-fixed:             1030 !default;
$zindex-modal-backdrop:    1040 !default;
$zindex-modal:             1050 !default;
$zindex-popover:           1060 !default;
$zindex-tooltip:           1070 !default;

Для того, чтобы эффективно обращаться с перекрывающимися границами внутри компонентов (например, кнопки и формы ввода в группах форм ввода), мы используем по умолчанию значения z-index 1,2,3, а также hover и "активные состояния". В hover/focus/active мы подводим частный элемент к "переднему краю" использованием более высокого z-индекса, для показа его границы над вложенными элементами.

Утилиты для макета. Разметка · Bootstrap

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

Изменение параметра display

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

Опции растяжимых контейнеров

BS4 создан на растяжимых контейнерах, но не у каждого элемента свойство display изменено на display: flex, поскольку это могло бы вызвать множество ненужных переназначений переменных и непредвиденные проблемы поведения браузеров. Но большинство наших компонентов имеет такое свойство.

Если вам понадобится добавить свойство display: flex к элементу, добавьте в него класс .d-flex или один из «отзывчивых» вариантов (.d-sm-flex). Вам понадобится этот класс или значение display для «включения в строй» наших дополнительных флексбокс-утилит для настройки размеров, отступов и т.п.

Margin and padding

Используйте утилиты отступа «марджин» и «паддинг» для контроля размера и отступов элементов. BS4 имеет 5-уровневую шкалу этих утилит, основанную на переменной по умолчанию $spacer со значением 1rem. Выбирайте значения для всех зон просмотра (например: mr-3 для margin-right: 1rem), или настраивайте отзывчивые варианты для обращения к специфическим вьюпортам (mr-md-3 для margin-right: 1 rem на брейкпойнте md).

Переключение видимости visibility

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

Функция Display Toggle (Переключение экранов) доступна только для систем с несколькими мониторами. Данная функция позволяет работать с интерактивным дисплеем на всех подключенных дополнительных мониторах одновременно или только на одном из них.

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

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

Позиционирование элементов в Bootstrap

Позиционирование элементов

Последнее обновление: 31.10.2015

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

Если мы откроем код представления, то мы можем увидеть использование классов bootstrap:


<div>
    <div>
        <h3>Getting started</h3>
        <p>.............</p>
    </div>
    <div>
        <h3>Get more libraries</h3>
        <p>.............</p>
    </div>
    <div>
        <h3>Web Hosting</h3>
        <p>.............</p>
    </div>
</div>

Класс row задает расположение отдельных блоков в виде одной строки. Строка в Bootstrap может иметь до 12 столбцов. Строк может быть сколько угодно, но в данном случае у нас одна строка.

Для создания отдельного столбца строки используется класс col-md-4. col, как ясно из названия, обозначает столбец.

Дальше идет md - идентификатор устройства. Как мы увидели в прошлой теме, bootstrap делит все устройства условно на четыре группы в зависимости от ширины экрана. md, в частности, соотносится со средними устройствами (то есть которые имеют ширину от 992 пикселя и выше). А число 4 указывает, сколько условных единиц в строке будет занимать данный блок. Таким образом, получается, что класс col-md-4 означает, что данный блок будет занимать 4 условных единицы из 12 в строке, то есть треть ширины экрана устройства с экраном шириной от 992 пикселей.

И поскольку у нас есть четыре группы, то для каждой группы имеются свои классы. Например, для очень маленьких устройств с экраном меньше 768 пикселей (то есть мобильных телефонов), подобный класс мог бы быть таким col-xs-4.

Все типы классов:

  • col-xs-*: для устройств с шириной экрана меньше 768 пикселей

  • col-sm-*: для устройств с шириной экрана от 768 пикселей и выше

  • col-md-*: для устройств с шириной экрана от 992 пикселя и выше

  • col-lg-*: для устройств с шириной экрана от 1200 пикселей и выше

Хотя даже на мобильных устройствах блок с классом col-md-4 будет выглядеть вполне неплохо, но мы можем установить сразу два класса, чтобы еще больше детализировать отображение на различных устройствах, например:


<div>

И хотя в представлении Index.cshtml по умолчанию все три блока имеют относительную ширину в 4 единицы, составляя в целом 12 единиц, мы можем задать любую другую ширину, позиционируя их по собственному усмотрению. Например:

Отступы

Специальные классы col-md(sm|lg)-offset-* позволяют задать смещение относительно левого блока или начала строки в условных единицах. Например, у нас есть такая строка:


<div>
    <div>
        <h3>Левый блок</h3>
        <p>................</p>
    </div>
    <div>
        <h3>Правый блок</h3>
        <p>................</p>
    </div>
</div>

Класс col-md-offset-4 будет смещать правый блок на 4 условных единицы вправо:

Некоторые примеры по использованию смещения:

Порядок столбцов

С помощью классов col-md(sm|lg)-push-* и col-md(sm|lg)-pull-* мы можем переопределить порядок блоков в строке. Например, класс col-md-push-4 сдвигает блок на четыре единицы вправо от текущего положения. И наоборот, класс col-md-pull-4 сдвигает блок влево от текущей позиции. Так, предыдущий пример со смещением мы могли бы переписать следующим образом:


<div>
    <div>
        <h3>Левый блок</h3>
        <p>................</p>
    </div>
    <div>
        <h3>Правый блок</h3>
        <p>................</p>
    </div>
</div>

И у нас был бы тот же эффект. Но мы можем также полностью переупорядочить порядок следования блоков:


<div>
    <div>
        <h3>Левый блок</h3>
        <p>................</p>
    </div>
    <div>
        <h3>Правый блок</h3>
        <p>................</p>
    </div>
</div>

Теперь правый блок сместится влево на четыре единицы, а левый блок - вправо на 8 единиц:

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

Верстка по сетке Bootstrap (часть 1)

Вы здесь: Главная - CSS - CSS Основы - Верстка по сетке Bootstrap (часть 1)

Верстка по сетке Bootstrap (часть 1)

Исходя из своего личного опыта, делать адаптивную верстку PSD макета по сетке Bootstrap, несколько проще, чем на флоатах или флексах. Верстку по системе Grid, мы пока не рассматриваем, из-за недостаточной поддержки её браузерами.

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

Ссылки на часть 1 и на часть 2.

Скриншот верхней панели макета.
Верстка по сетке Bootstrap (часть 1).

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

Новичку на заметку

Как не запутаться, где свои классы, а где Bootstrap-а? Бутстраповские классы прописываются только в HTML разметку, они используются так, как есть, а в CSS файле, только созданные вами классы.

HTML разметка

Создаем свой блок-обертку с классом top-menu, чтобы задать отступы и цвет панели. Оборачиваем всю конструкцию в бутстраповский резиновый контейнер container-fluid, внутри которого класс row – ряд (как в таблице).

Навигационная панель визуально делится на две равные части – пространство занимаемое логотипом плюс пустота и меню. В ряду у нас будет две колонки – col-md-6 (В одной колонке col на средних устройствах помещается 6 столбиков сетки). Однако на экранах маленьких устройств, в первой колонке помещается только 4 столбика сетки – col-sm-4, а во второй колонке – 8 столбиков (col-sm-8). Для ширины экранов, меньше 576 пикселей, ничего прописывать не надо, бутстрап уже об этом позаботился, адаптация произойдет автоматически.

  • align-items-center – ставит в центр логотип по вертикали
  • align-items-end – прижимает навигационное меню к нижнему краю
  • justify-content-end – выравнивает меню по центру на горизонтали
<div>
 <div>
  <div>
   <div>
     <span></span>
     <span>Prechu</span>
    </div>
    <div>
    <ul>
    <li><a href="#">Products</a></li>
    <li><a href="#">Services</a></li>
    <li><a href="#">Contact</a></li>
    </ul>
   </div>
  </div>
 </div>
</div>

Почему мы не указали количество столбиков сетки для больших экранов, col-lg- и col-xl-? Причина простая – там тоже будет по 6 столбиков в колонке. Данный макет очень простой.

col-md-6 + col-md-6
Верстка по сетке Bootstrap (часть 1).
col-sm-4 + col-sm-8
Верстка по сетке Bootstrap (часть 1).
На самых маленьких экранах
Верстка по сетке Bootstrap (часть 1).

CSS код

Можно было бы не заморачиваться и вырезать из макета синий кружок, просто вставив его картинкой в HTML. Но в обучающих целях, мы сделали все в CSS. Обратите внимание, что белые кавычки, вставлены при помощи псевдоэлемента before, в виде юникода.

Верстка по сетке Bootstrap (часть 1).
/* обертка для навигационной панели */
.top-menu {
    padding: 5px;
    background: #fff;
}
/* обертка для логотипа */
.logo-wrap {
    font-family: "Segoe WP Light";
    font-size: 200%;
    color: #000;
    padding: 5px;
}
/* маленький синий круг */
.quotes-circle {
    display: inline-block;
    margin-right: 6px;
    background-color: #5094f2;
    border-radius: 50%;
    width: 33px;
    height: 33px;
    position: relative;
    top: 3px;
}
/* кавычки внутри синего круга */
.quotes-circle:before {
    content: "\201C";
    font-family: SourceSansPro-Regular;
    font-size: 134%;
    color: #fff;
    position: absolute;
    top: -7px;
    left: 7px;
}
/* расположение текста логотипа */
.logo {
    display: inline-block;
}
/* ссылки меню */
.link-color {
    color: #6c6c6c;
    border-bottom: 2px solid #fff;
    display: block;
}
/* подчеркивание ссылок при наведении */
.link-color:hover {
    display: block;
    border-bottom: 2px solid #5094f2;
}

Демонстрация примера в браузере

Продолжение следует..

  • Верстка по сетке Bootstrap (часть 1). Создано 15.04.2019 10:22:10
  • Верстка по сетке Bootstrap (часть 1). Михаил Русаков
Предыдущая статья Следующая статья

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:
    <a href="https://myrusakov.ru" target="_blank"><img src="https://myrusakov.ru/images/button.gif" alt="Как создать свой сайт" /></a>

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:
    <a href="https://myrusakov.ru" target="_blank">Как создать свой сайт</a>

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):
    [URL="https://myrusakov.ru"]Как создать свой сайт[/URL]

Медиа объект. Разметка · Bootstrap. Версия v4.0.0

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

Пример

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

Ниже – пример одиночного «медиа-объекта». Только два класса потребовались для его создания – «оборачивающий» .media и .media-body, в котором лежит ваш контент. Паддинг и марджин могут настраиваться утилитами «спейсинга».

<div>
  <img src="..." alt="Generic placeholder image">
  <div>
    <h5>Медиа заголовок</h5>
    Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.
  </div>
</div>
Баг №12 – строчные элементы не воспринимаются как растяжимые

IE10-11 не отстраивает строчные элементы, такие как ссылки и изображения (или псевдоэлементы ::before и ::after) как растяжимые элементы. Единственное решение здесь - установить «нестрочное» значение display (т.е. block, inline-block или flex). Мы предлагаем использовать для исправления этого бага класс .d-flex, одну из наших утилит отображения.

Источник: баги «растяжимости» на GitHub

Вложенность

Медиа-объекты могут иметь бесконечную вложенность, хотя мы рекомендуем знать меру. Располагайте вложенные классы .media внутри класса .media-body родительского медиа-объекта.

<div>
  <img src="..." alt="Generic placeholder image">
  <div>
    <h5>Медиа заголовок</h5>
    Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.

    <div>
      <a href="#">
        <img src="..." alt="Generic placeholder image">
      </a>
      <div>
        <h5>Медиа заголовок</h5>
        Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.
      </div>
    </div>
  </div>
</div>

Выравнивание

Медиафайл в медиа-объекте может быть выровнен утилитами флексбокса по верхнему краю (по умолчанию), посередине, или в конце контента вашего класса .media-body.

<div>
  <img src="..." alt="Generic placeholder image">
  <div>
    <h5>Медиа, выровненные по верхнему краю</h5>
    <p>Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.</p>
    <p>Donec sed odio dui. Nullam quis risus eget urna mollis ornare vel eu leo. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.</p>
  </div>
</div>
<div>
  <img src="..." alt="Generic placeholder image">
  <div>
    <h5>Медиа, выровненные по центру</h5>
    <p>Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.</p>
    <p>Donec sed odio dui. Nullam quis risus eget urna mollis ornare vel eu leo. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.</p>
  </div>
</div>
<div>
  <img src="..." alt="Generic placeholder image">
  <div>
    <h5>Медиа, выровненные по нижнему краю</h5>
    <p>Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.</p>
    <p>Donec sed odio dui. Nullam quis risus eget urna mollis ornare vel eu leo. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.</p>
  </div>
</div>

Порядок

Меняйте порядок контента в медиа-объектах, изменяя код HTML или добавлением стилей обычных флексбоксов для настройки свойства «order» (числовое значение).

<div>
  <div>
    <h5>Медиа объект</h5>
    Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.
  </div>
  <img src="..." alt="Generic placeholder image">
</div>

Поскольку медиа-объект нетребователен к структуре документа, вы можете использовать их к списку элементов HTML. Так, добавьте класс .list-unstyled к вашим <ul> or <ol> для удаления браузерного оформления по умолчанию этих элементов, и тогда примените класс .media к вашим <li>. Как обычно, пользуйтесь утилитами спейсинга для точной настройки.

  • Медиа объект на основе списка
    Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.

  • Медиа объект на основе списка
    Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.

  • Медиа объект на основе списка
    Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.

<ul>
  <li>
    <img src="..." alt="Generic placeholder image">
    <div>
      <h5>Медиа объект на основе списка</h5>
      Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.
    </div>
  </li>
  <li>
    <img src="..." alt="Generic placeholder image">
    <div>
      <h5>Медиа объект на основе списка</h5>
      Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.
    </div>
  </li>
  <li>
    <img src="..." alt="Generic placeholder image">
    <div>
      <h5>Медиа объект на основе списка</h5>
      Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.
    </div>
  </li>
</ul>

Отправить ответ

avatar
  Подписаться  
Уведомление о