Bootstrap 4 - Управление отображением элементов

В этой статье познакомимся с классами фреймворка Bootstrap 4, которые предназначены для адаптивного управления CSS свойством display
HTML элементов.
Display-классы Bootstrap
В Bootstrap 4 имеется категория классов, с помощью которых можно не только адаптивно скрывать элементы, но и управлять тем как они должны быть показаны на странице.
Список display-классов Bootstrap 4:
d-none
d-inline
d-inline-block
d-block
d-table
d-table-cell
d-flex
d-inline-flex
Первый класс (d-none
) предназначен для скрытия элемента на странице. Осуществляет это он посредством установки HTML элементу CSS свойства display
со значение none
.
Остальные классы управляют тем, как элемент должен быть представлен на странице. Класс d-inline
представляет элемент строчным (display: inline
), d-block
– блочным (display: block
), d-inline-block
- строчно-блочным (display: inline-block
), d-table
– таблицой (display: table
), d-table-cell
– ячейкой таблицы (display: table-cell
), d-flex
– блочным flex-контейнером (display: flex
), d-inline-flex
- строчным flex-контейнером (display: inline-flex
).
Кроме этого фреймворк Bootstrap 4 позволяет управлять CSS свойством display
HTML элементов адаптивно. Это означает, что HTML элемент при одной ширине viewport может отображаться одним образом, а при другой – по-другому.
Синтаксис display-класса Bootstrap 4:
d{-breakpoint}-?
В данном классе нужно вместо:
breakpoint
указать название контрольной точки (sm
,md
,lg
,xl
), начиная с которой будет применяться указанное CSS свойствоdisplay
к HTML элементу (без обозначения - начиная с самых крохотных устройств).?
задать одно из значений:none
,inline
,inline-block
,block
,table
,table-cell
,flex
,inline-flex
.
Список всех display-классов Bootstrap 4:
d-none
d-inline
d-inline-block
d-block
d-table
d-table-cell
d-flex
d-inline-flex
d-sm-none
d-sm-inline
d-sm-inline-block
d-sm-block
d-sm-table
d-sm-table-cell
d-sm-flex
d-sm-inline-flex
d-md-none
d-md-inline
d-md-inline-block
d-md-block
d-md-table
d-md-table-cell
d-md-flex
d-md-inline-flex
d-lg-none
d-lg-inline
d-lg-inline-block
d-lg-block
d-lg-table
d-lg-table-cell
d-lg-flex
d-lg-inline-flex
d-xl-none
d-xl-inline
d-xl-inline-block
d-xl-block
d-xl-table
d-xl-table-cell
d-xl-flex
d-xl-inline-flex
Примеры работы с display-классами
1. Создадим адаптивную разметку, состоящую из 3 секций (L, M и R). Секция L должна отображаться только на контрольной точке xl
, а на остальных – скрыта.

<div class="container"> <div class="row"> <div class="col-xl-3 d-none d-xl-block">L</div> <div class="col-md-8 col-xl-6">M</div> <div class="col-md-4 col-xl-3">R</div> </div> </div>
2. Например, скроем некоторый HTML элемент на xs
(крохотных устройствах), md
и lg
. На остальных контрольных точках (sm
и xl
) данный элемент будем отображать как блочный (display: block
).
<div class="d-none d-sm-block d-md-none d-lg-block d-xl-none"> ... </div>
3. Например, рассмотрим, как можно осуществить скрытия элемента только на устройствах md
.
<div class="d-md-none d-lg-block"> ... </div>
Классы, управляющие видимостью элементов при печати
Во фреймворке Bootstrap 4 имеются классы, с помощью которых можно управлять видимостью элементов при печати.
Первые три класса из этого набора (d-print-block
, d-print-inline
, d-print-inline-block
) предназначены для скрытия элемента в браузере и отображения его только при печати (как block
, inline
, inline-block
).
Четвёртый класс d-print-none
выполняет обратное действие, он оставляет элемент видимым в браузере и скрывает его при печати.
Класс | в браузере | при печати |
---|---|---|
d-print-block | скрыт | виден (как display: block) |
d-print-inline | скрыт | виден (как display: inline) |
d-print-inline-block | скрыт | виден (как display: inline-block) |
d-print-none | виден | скрыт |
Пример, в котором показано как можно с помощью вышепиведённых классов управлять видимостью элементов при печати:
<!-- элемент виден в браузере, но будет скрыт при печати --> <nav class="d-print-none">...</nav> <!-- элемент будет отображаться при печати как блочный (в браузере данный элемент скрыт) --> <div class="d-print-block">...</div> <!-- элемент будет отображаться при печати как строчный (в браузере данный элемент скрыт) --> <div class="d-print-inline">...</div> <!-- элемент будет отображаться при печати как строчно-блочный (в браузере данный элемент скрыт) --> <div class="d-print-inline-block">...</div>
Делаю сайт на WP через плагин WPBakery
Помогите пожалуйста в решении 3х вопросов:
1. Там очень ограничена возможность адаптации через конструктор и при определенной величине экрана (sm) у меня три колонки очень неприятно «налазят» друг на друга и появляется нижний горизонтальный скролл:
При этом, при дальнейшем уменьшении, все они «перескакивают» как нужно — в одну колонку.
Нужно, чтобы они начали «перескакивать» раньше.
2. Похожий вопрос на предыдущий, но с другим нюансом.
под блоком текста необходимо было разместить две кнопки рядом в строку. Я нашел такое решение:
Но проблема в том, что они начали также «налазить» друг на друга, но значительно раньше, чем в примере выше.
Как можно средствами css сделать так, чтобы они «упирались» друг в друга и «перескакивали» одна под одну только тогда, когда полностью «скукожится» третья (пустая) колонка?
3. Есть последовательность рядов с 2 колонками в каждом. Контент размещается так:
Как сделать так, чтобы при уменьшении экрана, контент выглядел так:
т.е. в некоторых рядах (через один) менял свой стандартный порядок переноса?
Заранее ОЧЕНЬ благодарю за помощь!
В персвом примере не используйте колонки, или позвольте им уменьшаться, добавив к ним класс flex-shrink-1.
Например:
2. Если вёрстка сделана на CSS Flexbox, то нужно просто к этим элементам добавить CSS-свойство flex-shrink: 0 или бутстраповский класс flex-shrink-0.
3. Использовать селектор, с помощью которого выбрать нужные ряды и добавить к ним определённые стили, например: «flex-direction: column».
подскажите как называется такая фишка:
Есть длинный список (ul, p, div — неважно!) и показывают например первые 5 элементов списка, а остальные скрывают за ссылкой «Показать больше...». Нажимаешь и открывается полный список.
Есть ли такое в Bootstrap? Или как это воплотить?
Для реализации этой задачи с помощью Collapse необходимо добавить стили, т.к. вам необходимо не полностью скрывать контент, а отображать некоторую его часть.
Решение с помощью Collapse будет выглядеть следующим образом:
Пример: b4-more
Т.е. в этом примере мы ограничиваем видимость контента высотой в 200px с помощью max-height, а остальное скрываем с помощью «overflow: hidden». Далее при нажатии на кнопку отключаем ограничение по высоте с помощью «max-height: auto» (контент отображается полностью).
Это решение на Bootstrap и добавлением нескольких стилей. Так необходимо или как-то по-другому?
Пару вопросов:
1. Только логичнее после нажатия на «Показать больше...» эта надпись должна меняться на «Скрыть меньше...».
2. Очень интересная и необычная для меня запись в style, а именно #more:not(.show)
В стилях знаю что после точки указывают class="...", а тут явно не класс, а больше на метод объекта похож в ООП. Где про это почитать можно?
:not — это псевдокласс, более подробно познакомиться с ним и другими селекторами можете в этой статье.
Ну это просто пример, Collapse предназначен для полного скрытия и отображения элемента, и наоборот. Поэтому его лучше не использовать для решения этой задачи.
Эту задачу можно очень просто решить самостоятельно, для этого потребуется написать совсем небольшой скрипт.
Пример: b4-more-2
А проверить, скрыт ли элемент (display: none) можно так:
Это можно выполнить разными способами.
Например, с помощью вышеприведенных классов:
Но, этот пример не рекомендуется использовать. Т.к. в этом случае будут подгружены все изображения.
Лучше воспользоваться одним из следующих способов.
1 Способ (с помощью элемента picture):
2 Способ (с помощью background):
CSS:
Можно также это ещё выполнить с помощью JavaScript.
шапка на этой странице явно «поломана». Может стоит проверить?!
чем будут примеры отличаться от этого и того что написали вы? не совсем понимаю что дал этот атрибут.
это предложение точно правильное?
2. Например, скроем некоторый HTML элемент на xs (крохотных устройствах), md и lg. На остальных контрольных точках (sm и xl) данный элемент будем отображать как блочный (display: block).
ведь extrasmall ex в бс4 уже не используют!?
элемент для extra small и выше. А, например, класс d-sm-none скрывает
элемент для small и выше.
Пример:
В этом примере класс d-xl-block нужен для того, чтобы этот адаптивный блок был виден на контрольной точке XL. Если его не указать, то он не будет отображаться, не на каких контрольных точках (т.к. установлен d-none). Класс col-xl-3 устанавливает ему ширину, но не управляет его видимостью.