Все способы вертикального центрирования содержимого в CSS

 Изображение функции "width =" 680 "height =" 383 "src =" http://livecodestream.dev/post/all- the-способами-вы-можете-вертикально-центрировать-контент-в-css / Feature_hu4860d361657bce6098cacdd3d64f1fd0_68037_680x0_resize_q75_box.jpg "/> </figure>
<p> Для чего-то теоретически такого простого, вертикальное центрирование элементов в CSS — не самая простая задача. Это утверждение было особенно актуально до того, как браузеры начали поддерживать современные дополнения к CSS, такие как гибкость и сетка. </p>
<p> В этом посте мы собираемся обсудить некоторые старые приемы и более современные методы, которые разработчики используют для вертикального центрирования содержимого в CSS. Поскольку не существует универсального решения этой проблемы, поскольку каждая из них имеет свои ограничения, не помешает знать каждый из этих методов, чтобы найти правильное решение в различных сценариях. </p>
<p> Приступим! </p>
<hr/>
<h2 id= Если вы знаете высоту…

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

С автозапуском

Мы можем указать равные значения для верхнего и нижнего положения элемента и установить для поля значение auto. Это автоматически центрирует элемент с соответствующими полями по оси Y. В этом примере мы установили верхнюю и нижнюю позиции на ноль. Однако мы должны специально установить высоту элемента, чтобы он не занимал всю высоту.

 .  товар  {
     позиция :  абсолютная ;
     верх :  0 ;  низ :  0 ;
     маржа :  авто ;
     высота :  50   vh ;
}
 

С отрицательными полями

В этом методе мы размещаем вершину в средней точке (на 50%) в вертикальном направлении. Затем используйте отрицательное поле, чтобы переместить верхнюю половину элемента выше средней точки.

 .  товар  {
     позиция :  абсолютная ;
     верх :  50  % ;
     слева :  10   vw ;  справа :  10   vw ;
     высота :  50   vh ;
     верхний край :  -25   vh ;  / * также учитываем размеры отступов и границ, если таковые имеются, при расчете поля * / 
}
 

Здесь мы также должны явно указать высоту элемента, чтобы получить правильное значение для margin-top. Но в большинстве случаев мы не хотим устанавливать явную высоту для элементов, учитывая, что высота должна учитывать изменения ширины, корректировки текста и т. Д. Следовательно, эти два метода в большинстве случаев не идеальны для вертикального центрирования.


Нет необходимости в росте с переводчиком

Мы можем настроить последний метод центрирования, чтобы найти решение, которое избегает проблемы с явными высотами. Здесь, после размещения верхней части элемента в центре, мы используем translateY, чтобы переместить его на 50% по оси Y.

  .item {
    позиция: абсолютная;
    верх: 50%;
    преобразовать: translateY (-50%);
}
 


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

CSS поддерживает свойство vertical-align для содержимого, размещенного внутри ячеек таблицы. Мы можем воспользоваться этим и объявить элемент ячейкой таблицы (а его родительский элемент — таблицей), чтобы центрировать его содержимое. Если вы используете div, установите для его отображения значение table-cell. Или вы можете использовать фактические элементы таблицы, но это решение семантически неверно.

 .  контейнер  {
     дисплей :  таблица ;
}

.  товар  {
     отображение :  таблица   -   ячейка ;
     вертикальное выравнивание :  среднее ;
}
 

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


Вертикальное центрирование с использованием гибкости

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

Единственным недостатком этих гибких решений является то, что они не поддерживаются более ранними версиями Internet Explorer (ниже IE9). И вы должны использовать префикс webkit, moz или ms для поддержки некоторых других старых версий браузеров.

Но даже тогда flex добавляет невероятную гибкость в управление макетами страниц и позиционированием элементов. Здесь мы рассмотрим несколько способов центрировать контент с помощью гибкости.

С гибкими контейнерами и элементами выравнивания

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

  .container {
    дисплей: гибкий;
    align-items: center;
}
 

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

С гибкими элементами и самовыравниванием

Это решение дает вам свободу центрировать по вертикали только один элемент внутри гибкого бокса. Он использует свойство гибкости, align-self, для размещения элемента в центре.

 .  контейнер  {
     дисплей :  гибкий ;
}

.  центр  {
     выровнять себя :  центр ;
}
 

С гибким контейнером и автоматической маржей

Еще один способ центрировать отдельный элемент в гибком контейнере — установить для его поля значение auto. Затем браузер автоматически вычисляет соответствующие поля, чтобы центрировать его в обоих направлениях.

 .  контейнер  {
     дисплей :  гибкий ;
}

.  товар  {
     маржа :  авто ;
}
 

С призрачными элементами внутри гибкого контейнера

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

 .  контейнер  {
     дисплей :  гибкий ;
     гибкое направление :  столбец ;
}

.  контейнер  ::  до  .  контейнер  ::  после  {
     содержание :  "" ;
     гибкий :  1 ;
}
 


Вертикальное центрирование с использованием сетки CSS

Сетка — одно из самых мощных дополнений к CSS за последние годы. Поскольку это позволяет нам управлять макетом по осям x и y, вертикальное центрирование с помощью сетки CSS довольно просто. И это дает нам несколько способов решения этой задачи.

Подобно flexbox, сетка не полностью поддерживается более старыми версиями современных браузеров, включая Internet Explorer, Chrome и Firefox. В некоторых более старых версиях есть возможность включить поддержку сетки, даже если она недоступна по умолчанию.

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

С сеткой и элементами выравнивания

Мы можем вертикально центрировать все элементы внутри сетки, установив для свойства align-items значение center.

 .  контейнер  {
     дисплей :  сетка ;
     align-items :  center ;
}
 

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

С элементом сетки и самовыравниванием

Если вы хотите центрировать только один элемент внутри сетки, используйте align-self: center для стилизации этого конкретного элемента.

 .  контейнер  {
     дисплей :  сетка ;
}

.  центр  {
     выровнять себя :  центр ;
}
 

С Grid Container и Margin Auto

Подобно тому, что мы сделали с flexbox, мы можем вертикально центрировать отдельный элемент внутри сетки, установив для его поля значение auto.

 .  контейнер  {
     дисплей :  сетка ;
}

.  центр  {
     маржа :  авто ;
}
 

С призрачными элементами на сетке

Мы можем настроить трюк с призрачным элементом, который мы проделали с помощью flexbox, в сетку CSS. Для этого сначала нам нужно создать сетку из трех рядов. Затем добавляемые элементы-призраки занимают пространство первой и последней строк, чтобы переместить наш элемент в средний ряд.

 .  контейнер  {
     дисплей :  сетка ;
     сетка-шаблон-строки :  повторить  ( 3  1  fr);
}

.  контейнер  ::  до  .  контейнер  ::  после  {
     содержание :  "" ;
}
 

С точным размещением элементов

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

 .  контейнер  {
     дисплей :  сетка ;
     сетка-шаблон-строки :  повторить  ( 3  1  fr);
}

.  товар  {
     сетка-строка :  2 ;
}
 


Подведение итогов

Сегодня мы обсуждали, как решить одну из повторяющихся головных болей в жизни веб-разработчика — вертикальное центрирование контента. Мы говорили о почти 13 различных методах решения этой задачи. Я надеюсь, что это все. Если у вас есть еще какие-то приемы и советы по вертикальному центрированию контента, не забудьте поделиться ими с нами в комментариях.

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

Все, что вам нужно знать о размерах изображений в WordPress

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

Этот альбом оптических иллюзий 2005 года все еще поражает воображение

Интернет полон звездных оптических иллюзий, но обнаружить их в дикой природе еще лучше. Блестящий пример искусной иллюзии появился на Reddit в виде фрагмента обложки альбома, найденного на виниловой пластинке, выпущенной еще в 2005 году. искусство предназначалось для просмотра. Название исполнителя и альбом в виде клетчатого черно-белого квадрата можно увидеть только при просмотре издалека. При работе…

Комплект для видеоблога: все, что вам нужно для начала

Вам понадобится отличный комплект для видеоблога, если вы хотите войти в мир видеоблога. Если вы не знакомы с этой концепцией, видеоблог — это просто блог, в котором используется видео, а не письменное слово. Но почему так много создателей контента стремятся исследовать эту форму общения? Что ж, по той или иной причине многие люди страдают от…

Google IO 2021, Все, что было анонсировано: Android, AI, Privacy, Wear, Project Starline

Важно отметить, что пользователи Фото могут контролировать, какие фотографии будут отображаться в этих коллекциях. Вы можете удалить определенные фотографии из воспоминаний, переименовать воспоминания или запретить отображение определенных фотографий. Это благо для всех, кто пережил сильно сфотографированный жизненный опыт, который они предпочли бы забыть. С другой стороны, компания показала новый инструмент, который может превращать два статических…

Удивительная сделка с Adobe Creative Cloud все еще продолжается!

Adobe Creative Cloud остается абсолютным отраслевым стандартом, и если вы думали о подписке, то вам повезло. Творческие работники в регионах EMEA (это Европа, Ближний Восток и Африка) могут сэкономить до 20 процентов от подписки на план Creative Cloud All Apps в период с сегодняшнего дня до 18 мая. Подписка на все приложения включает доступ к…

Распродажи в День поминовения в 2021 году: все лучшие предложения

Продажи в День поминовения: чего ожидать Добро пожаловать в наш путеводитель по лучшим продажам в День поминовения в 2021 году. Мемориал День не так уж и далек — понедельник, 31 мая, если быть точным, — и если вы ищете выгодную сделку, это идеальная возможность найти себе высококачественное снаряжение по очень привлекательным ценам. Ищете ли вы…

Все, что вам нужно знать, прежде чем присоединиться к Clubhouse

Clubhouse — это популярный товар. Он значительно вырос с момента его запуска в апреле 2020 года. В декабре прошлого года было около 600 000 пользователей. Сейчас во всем мире их более 10 миллионов. Несмотря на большое количество, он все еще находится в стадии бета-тестирования, поэтому членство возможно только через существующего участника. Если вы получили приглашение,…

Скидка для студентов Apple: все, что вам нужно знать в 2021 году

Хотите получить скидку для студентов Apple? У нас для вас отличные новости. Неважно, учитесь ли вы в университете или колледже, Apple хочет ваш бизнес и предлагает несколько блестящих скидок (и несколько отличных подарков), чтобы соблазнить вас. Если вы думаете, что это так же просто, как Apple, предлагает вам одну скидку применительно ко всему его ассортименту…

Удаленная работа и все, что вы должны знать о ней заранее

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