Bootstrap 3 выравнивание по вертикали: Выровнять контент по центру-вертикали таблицы в Bootstrap 3? — Хабр Q&A

Bootstrap вертикальное выравнивание различными способами

Доброго времени суток всем, кто желает найти то уникальное решение проблемы выравнивания текста. Так как проблем с горизонтальным выравниванием практически не бывает, то текущая статья посвящается разбору темы «Bootstrap вертикальное выравнивание».

Я расскажу, с помощью каких приемов можно выровнять контент по центру и приведу конкретные примеры кода. Поехали!

Способ 1. Нарисовать сетку

Для того чтобы выровнять по вертикали текстовый контент блоков, можно воспользоваться плагином фреймворка Bootstrap 3– Grid. При этом вам также придется вооружиться и свойством padding, которое отвечает за внутренние отступы объектов.

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

Вот такой код необходимо разместить в теге <body>:

1
2
3
4
5
6
7
<div>
  <div>
    <div>
<p>Здесь расположено очень содержательное предложение! А это второе не менее увлекательное предложение. </p>
    </div>
  </div>
</div>

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

Итак, .

row создает строку, а в ней при помощи класса .col- X-Y объявляются колонки, а точнее ячейки. X отвечает за тип экрана, который определяется при помощи одного из четырех встроенных классов.

Я указал класс xs, который отвечает за мобильные устройства. А Y сообщает сколько колонок из общего числа (т.е. 12, так как это максимальное число) выделится под данный блок. Если же вам не нужно заполнять все пространство колонками, как и в моем примере, то можно воспользоваться специальным элементом col- X- offset-Y. Он задает отступы.

Далее прикрепленный ниже код стоит прописать в хедере страницы после скриптов:

1
2
3
4
5
6
<style>
. main {
background-color: orange;
padding: 45px;
}
</style>

Способ 2. Задействовать межстрочный интервал

Если вам необходимо вертикально выровнять только одну строку, например, заголовок, то можно воспользоваться свойством line-height. Он отвечает за интервал между строками.

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

В html-разметку вставьте:

1
2
3
4
5
<div>
  <div>
     <h2>Внимание заголовок!</h2>
    </div>
</div>

А в стилях укажите:

.parent { background-color: orange; }

.child {

line-height: 120px;

}

Способ 3. Обратиться за помощью к табличным представлениям

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

Он подразумевает под собой представление выбранных объектов в качестве таблицы.

Для этого необходимо в родительском элементе указать значение свойства display равным table. А после дочерние элементы как бы поместить в созданную таблицу, т.е. в аналогичном свойстве задать значение равным table-cell. В этом случае становится возможным использовать vertical-align, что дословно и переводится как «вертикальное выравнивание».

Давайте разберем подробнее на примере кода. В гипертекстовой разметке я написал:

1
2
3
4
5
<div>
  <div>
     <h4>В этом оранжевом блоке, выступающим в качестве ячейки таблицы, написано очень длинное предложение с двумя запятыми и одним восклицательным знаком!</h4>
    </div>
</div>

Перейдем к стилям.

1
2
3
4
5
6
7
8
9
10
11
. parent { 
background-color: orange;
  width:100%; 
  display: table;
  height:150px;
}
.child {
    display: table-cell;
    text-align:center;
    vertical-align: middle;    
}

Благодаря данному способу реализуется динамическое выравнивание содержимого. Т.е. вы можете изменять значение высоты и при этом текст всегда будет располагаться посредине блока.

Однако есть небольшое НО. Если вам нужно верстать веб-приложение для старых версий Internet Explorer, то такой способ не сработает.

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

Буду признателен, если вы подпишитесь на обновления моего обучающего блога и расскажите о нем свои знакомым и коллегам. Удачного дня! Пока-пока!

С уважением, Роман Чуешов

Прочитано: 1537 раз

css — Bootstrap 4 выравнивание по вертикали блоков

Задать вопрос

Вопрос задан

Изменён 5 лет 5 месяцев назад

Просмотрен 17k раз

Посмотрел некоторые ответы по этому вопросу здесь, но на свой вопрос не могу найти. Суть в следующем: надо выравнять блоки внутри другого по вертикали, но примеры с оф. сайта почему-то не работает. На фото как выводиться логика и внизу как желательно Как можно исправить или вариант только через JS провести?

<div>
    <div>
        <div>
            <a href="/"><img src="<?= $logo ?>" alt="logo"></a>
        </div>
    </div>
    <div>
        <div>
            <img src="/protected/m/img/logo_copyright.png" alt="Copyright">
            ...
        </div>
    </div>
    <div>
        <div>
            <a href="mailto:...">
                <img src="/protected/m/img/logo_email.png" alt="email"></a>
            <a href="skype:...?add">
                <img src="/protected/m/img/logo_skype.png" alt="Skype"></a>
            <a href="https://github.com/...">
                <img src="/protected/m/img/logo_githab.png"
                     alt="GitHab"></a>
        </div>
    </div>
</div>

CSS:

header, footer {
    margin: 5px 0;
    padding: 5px 0;
    height: 50px;
    border: 1px solid;
}
.
parent-row { height: inherit; margin: -5px 0; padding: -5px 0; overflow: auto; }

как желательно

  • css
  • bootstrap
1

Всё оказывается работает. Загвоздка оказалась в том, что строка row имеет высоту максимального объекта, входящего в неё. Добавил дополнительный стиль с высотой, равной родительской и всё заработало. Код поменяю на итоговый, вдруг кому пригодиться. Вопрос считаю решенным. Благодарю всех откликнувшихся.

Можно добавить в row

align-items-center


или же если для отдельного блока к примеру col-4 то к нему добавляется

align-self-center

https://v4-alpha.getbootstrap.com/layout/grid/ — документация Bootstrap, пригодится на будущее.

5

Зарегистрируйтесь или войдите

Регистрация через Google

Регистрация через Facebook

Регистрация через почту

Отправить без регистрации

Почта

Необходима, но никому не показывается

Отправить без регистрации

Почта

Необходима, но никому не показывается

By clicking “Отправить ответ”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

html — вертикальное выравнивание с помощью Bootstrap 3

Гибкая компоновка блоков

С появлением CSS Flexible Box многие кошмары веб-дизайнеров 1 были решены. Один из самых хакерских — вертикальное выравнивание. Теперь это возможно даже в неведомых высотах .

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

— Легендарный CSS Эрик Мейер на W3Conf 2013

Flexible Box (или сокращенно Flexbox) — это новая система компоновки, специально разработанная для целей компоновки. В спецификации указано:

Макет

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

— Дополнительный класс —> <дел> … <дел> …
 .вертикальное выравнивание {
    дисплей: гибкий;
    выравнивание элементов: по центру;
}
 

Вывод

Цветная область отображает отступы столбцов.

Уточнение по

align-items: center

8.3 Выравнивание поперек оси: свойство align-items

Элементы

Flex могут быть выровнены по поперечной оси текущей строки контейнера flex, аналогично justify-content , но в перпендикулярном направлении. align-items устанавливает выравнивание по умолчанию для всех элементов flex-контейнера, включая анонимные flex-элементы.

элементы выравнивания: по центру; По центральному значению поле поля гибкого элемента центрируется по поперечной оси внутри строки.


Big Alert

Важное примечание №1: Twitter Bootstrap не указывает ширину столбцов в очень маленьких устройствах, если только вы не присвоите столбцам один из

классов . col-xs-# .

Поэтому в этой конкретной демонстрации я использовал классы .col-xs-* для правильного отображения столбцов в мобильном режиме, поскольку он явно указывает ширину столбца .

Но в качестве альтернативы вы можете отключить макет Flexbox, просто изменив display: flex; От до дисплей: блок; для определенных размеров экрана. Например:

 /* Очень маленькие устройства (767px и меньше) */
@media (максимальная ширина: 767 пикселей) {
    .row.vertical-align {
        дисплей: блок; /* Отключаем гибкую компоновку блоков */
    }
}
 

Или вы можете указать .vertical-align только для определенных размеров экрана, например:

 /* Маленькие устройства (планшеты, 768px и выше) */
@media (минимальная ширина: 768 пикселей) {
    .row.vertical-align {
        дисплей: гибкий;
        выравнивание элементов: по центру;
    }
}
 

В таком случае я бы выбрал подход @KevinNelson.

Важное примечание №2: Префиксы производителей опущены для краткости. Синтаксис Flexbox был изменен за это время. Новый письменный синтаксис не будет работать в старых версиях веб-браузеров (но не таких старых, как Internet Explorer 9).! Flexbox поддерживается в Internet Explorer 10 и более поздних версиях).

Это означает, что вы также должны использовать свойства с префиксом поставщика, такие как display: -webkit-box и т. д. в производственном режиме.

Если вы нажмете «Переключить скомпилированное представление» в демоверсии, вы увидите префиксную версию объявлений CSS (благодаря Autoprefixer).


Как вы видите в предыдущей демонстрации, столбцы (гибкие элементы) больше не имеют такой высоты, как их контейнер (блок гибкого контейнера, т. е. .row элемент).

Это связано с использованием значения center для свойства align-items . Значение по умолчанию — , растяжение , чтобы элементы могли заполнить всю высоту родительского элемента. ="кол-"], .vertical-align > [класс*=" col-"] { дисплей: гибкий; выравнивание элементов: по центру; /* Выровняйте flex-элементы по вертикали */ выравнивание содержимого: по центру; /* Необязательно, для выравнивания внутренних flex-элементов по горизонтали внутри столбца */ }

Вывод

Цветная область отображает отступы столбцов.

И последнее, но не менее важное . Обратите внимание, что приведенные здесь демонстрации и фрагменты кода предназначены для того, чтобы дать вам другую идею, чтобы предоставить современный подход к достижению цели. Обратите внимание на раздел « Big Alert », если вы собираетесь использовать этот подход на реальных веб-сайтах или в приложениях.


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

  • Сеть разработчиков Mozilla — гибкие блоки
  • Руководство по Flexbox — хитрости CSS
  • HTML5Rocks — быстрый Flexbox
  • SmashingMagazine — центрирующие элементы с Flexbox
  • Филип Уолтон - Решено Flexbox
  • Могу ли я использовать: гибкий модуль компоновки коробок

1. Вертикальное выравнивание изображения внутри div с адаптивной высотой 2. Лучше использовать дополнительный класс, чтобы не изменять значение Twitter Bootstrap по умолчанию .строка .

Вертикальное выравнивание Bootstrap — примеры и руководство

Вертикальное выравнивание

Утилиты Flexbox для вертикального выравнивания.

Примечание: Для расширенного использования см. Документы Flexbox.


Как вертикально, так и горизонтально

Добавьте .d-flex к родительскому элементу, чтобы включить гибкий режим. Затем используйте (также на родительский элемент) .align-items-center для выравнивания содержимого по вертикали и .justify-content-center для выравнивания содержимого по горизонтали.

Показать код Изменить в песочнице

            
              <дел>
                
              

Только вертикально

Добавьте . d-flex к родительскому элементу, чтобы включить гибкий режим. Затем используйте (также на родительский элемент) .align-items-center для выравнивания содержимого по вертикали

Показать код Изменить в песочнице

            
              <дел>
                
              

Опции Flexbox

Используйте утилиты align-items в контейнерах flexbox, чтобы изменить выравнивание flex элементы на поперечной оси (ось Y для начала, ось X, если flex-direction: column ). Выберите из начало , конец , центр , базовая линия , или stretch (браузер по умолчанию).

Гибкий элемент

Гибкий элемент

Гибкий элемент

Гибкий элемент

Гибкий элемент

Гибкий элемент

Гибкий элемент

Гибкий элемент

Гибкий элемент

Гибкий элемент

Гибкий элемент

Гибкий элемент

Гибкий элемент

Гибкий элемент

Гибкий элемент

Показать код Изменить в песочнице

            
          <дел>. ..
          <дел>...
          <дел>...
          <дел>...
          <дел>...
        
        
     

Адаптивные варианты также существуют для align-items .

  • .align-items-start
  • .align-items-end
  • .align-items-center
  • .align-items-baseline
  • .align-items-stretch
  • .align-items-sm-start
  • .align-items-sm-end
  • .align-items-sm-center
  • .align-items-sm-baseline
  • .align-items-sm-stretch
  • .align-items-md-start
  • .align-items-md-end
  • .align-items-md-center
  • .align-items-md-baseline
  • .
Оставить комментарий

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *