Как найти контакт по центру

I am very new and was messing around with some code ( just HTML and CSS ) But I can’t get my link to center like my text? The id’s are just for practice I know They aren’t required.

http://pastebin.com/kYyR6WUx

asked Jul 15, 2013 at 17:42

Isaiah Young's user avatar

I provided a solution with css. You could take a look at this link http://jsfiddle.net/qPAfK/

div {
    width: 100px;
}

div a {
    text-align: center;
    display: block;
    margin: 0 auto;
}

answered Jul 15, 2013 at 17:51

seanxiaoxiao's user avatar

seanxiaoxiaoseanxiaoxiao

1,2822 gold badges11 silver badges23 bronze badges

3

In your Case

 #W3link
    {
    width:100px; /*use your preferred width*/
    margin-left:auto;
    margin-right:auto;
    }

Use Class if you want to use more than one time.

answered Jul 15, 2013 at 18:08

sun's user avatar

sunsun

1,59811 gold badges26 silver badges45 bronze badges

Link is an inline element. Bootstrap uses center-block to change inline element display:

.center-block {
  display: block;
  margin-right:auto;
  margin-left:auto;
}

Yet this doesn’t work when applied directly to link, such as:

<a href="#" class="center-block">link</a>  

It only works if I apply width style. 20% works well in my page. This is approximate centering. I’ve tried text-center many times with links and have never been able to make it work. What surprises me is that using display: block alone doesn’t work with margin centering. Width has to be added.

Samvel Aleqsanyan's user avatar

answered Apr 19, 2018 at 16:13

0

This is how it worked for me:

<div style="text-align:center"><a href="https://stackoverflow.com/"></a></div>

answered Sep 24, 2018 at 11:19

Ed 42's user avatar

Ed 42Ed 42

11 bronze badge

Сегодня мы покажем, как можно центрировать и выравнивать содержимое с помощью CSS. Ещё мы рассмотрим разные техники выравнивания.

Это — перевод оригинальной статьи на freeCodeCamp от автора Joy Shaheb.

Ещё у нас есть видеоверсия урока от автора (осторожно, английский язык):

Прежде всего, давайте разберемся, что такое:

  1. Главная ось.
  2. Поперечная ось.

Линия, проходящая по экрану слева направо — это и есть главная ось. Вы также можете называть её осью Х или горизонтальной линией.

Линия, которая проходит сверху вниз — это поперечная ось. Также её можно назвать осью Y или вертикальной линией. 

Настройка проекта

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

HTML

Запишите этот код внутри тега body:

    <div class="container">

   <div class="box-1"> </div>
    
</div>

CSS

Очистите стили браузера по умолчанию, чтобы мы получали точные результаты.

    *{
  margin: 0px;
  padding: 0px;
  box-sizing: border-box;
}

Выберите класс .container и установите его значение 100vh. В противном случае мы не сможем увидеть наш результат на вертикальной оси:

    .container{
   height: 100vh;
}

Стилизуйте класс .box-1 следующим образом:

    .box-1{
   width: 120px;
   height: 120px;
   background-color: skyblue;
   border: 2px solid black;
}

Все готово, теперь начнем кодить!

Как использовать Flexbox для центрирования чего-либо

Мы можем использовать Flexbox для выравнивания div по осям X и Y.

Для этого нам нужно записать свойство display: flex; внутри класса .container:

    .container{
   display: flex;
   
   height: 100vh;
}

Мы поэкспериментируем с этими двумя свойствами:

  • justify-content;
  • align-items.

Как отцентрировать что-либо по горизонтали с помощью Flexbox

Мы используем свойство justify-content, используя следующие значения.

Напишите следующий код.

    .container{
   display: flex;
   height: 100vh;
   
 /* Change values to  experiment*/
   justify-content: center;
}

Результат будет выглядеть следующим образом.

Как выровнять что-либо по вертикали с помощью Flexbox

Мы используем свойство align-items, используя следующие значения.

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

    .container{
   height: 100vh;
   display: flex;
   
 /* Change values to experiment*/
   align-items: center;
}

Результат выглядит так:

Как центрировать div по горизонтали и вертикали с помощью Flexbox

Мы объединим свойства justify-content и align-items, чтобы выровнять div как по горизонтали, так и по вертикали.

Напишите следующий код.

    .container{
   height: 100vh;
   display: flex;
   
/* Change values to experiment*/
   align-items: center;
   justify-content: center;
}

Результат выглядит следующим образом.

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

Как использовать CSS Grid для центрирования чего-либо

Используем grid для выравнивания содержимого div по осям X и Y.

Для этого нужно записать свойство display: grid; внутри класса .container:

    .container{
   display: grid;
   
   height: 100vh;
}

Поэкспериментируем с этими двумя свойствами:

  1. justify-content;
  2. align-content.

В качестве альтернативы можно использовать эти свойства:

  1. justify-items;
  2. align-items.

Как выровнять что-либо по горизонтали с помощью CSS Grid

Используем свойство justify-content.

Напишите такой код:

    .container{
   height: 100vh;
   display: grid;

  /* Change  values to experiment*/
   justify-content: center;
}

Вот результат:

Как выровнять что-либо по вертикали с помощью CSS Grid

Мы используем свойство align-content, используя следующие значения.

Напишите этот код:

    .container{
   height: 100vh;
   display: grid;
   
  /*  Change values to experiment*/
   align-content: center;
}

Вот, каким будет результат:

Как выровнять div по горизонтали и вертикали с помощью CSS Grid

Объединим свойства justify-content и align-content, чтобы выровнять div как по горизонтали, так и по вертикали.

Напишите следующий код:

    .container{
   height: 100vh;
   display: grid;
    
/* Change  values to experiment*/
   align-content: center;
   justify-content: center;
}

Результат, который должен получиться:

Альтернативный способ

Вы можете использовать свойства justify-items и align-items и получить те же результаты:

    .container{
   height: 100vh;
   display: grid;
    
/* Change  values to experiment*/
   align-items: center;
   justify-items: center;
}

Свойство place-content в CSS Grid

Это сокращение двух свойств CSS Grid:

  1. justify-content;
  2. align-content.
    .container{
   height: 100vh;
   display: grid;
   
   place-content: center;
}

Получаем тот же результат:

Как использовать свойство CSS Position для центрирования чего-либо

Это комбинация этих свойств:

  1. position;
  2. top, left;
  3. transform, translate.

Напишите следующий код:

    .container{
   height: 100vh;
   position: relative;
}

Вместе с этим кодом в CSS:

    .box-1{
   position: absolute;
   
   width: 120px;
   height: 120px;
   background-color: skyblue;
   border: 2px solid black;
}

Что такое центральная точка div

По умолчанию это — центральная точка div.

Вот почему мы видим такое странное поведение блока при попытке выровнять его.

Обратите внимание, что на изображении выше блок находится не по центру. 

Написав эту строку:

    transform: translate(-50%,-50%);

Мы решим проблему и получим следующий результат.

Что такое свойство Translate в CSS

Translate — это сокращение 3 свойств:

  1. translateX;
  2. translateY;
  3. translateZ.

Как выровнять div по горизонтали с помощью свойства CSS Position

Используем свойство left внутри класса .box-1

    .box-1{
/* other codes are here*/	

   left: 50%;
   transform: translate(-50%);
}

Вот результат:

Как выровнять div по вертикали с помощью свойства CSS Position

Используем свойство top внутри класса .box-1.

    .box-1{
/* Other codes are here*/	

   top: 50%;
   transform: translate(0,-50%);
}

Результат:

Как центрировать div по горизонтали и вертикали с помощью свойства CSS position

Чтобы достичь этого результата, мы объединим вместе свойства:

  1. top, left;
  2. transform, translate.
    .box-1{
/*Other codes are here */	

   top: 50%;
   left: 50%;
   transform: translate(-50%,-50%);
}

Результат:

Как использовать свойство margin для центрирования чего-либо

Свойство margin является сокращением 4 свойств:

  1. margin-top, margin-bottom;
  2. margin-left, margin-right.

Напишите этот код:

    .container{
   height: 100vh;
   
   display: flex;
}

.box-1{
   width: 120px;
   height: 120px;
   background-color: skyblue;
   border: 2px solid black;
}

Как выровнять div по горизонтали с помощью свойства CSS margin

Используем свойство margin внутри класса .box-1. Напишите этот код:

    .box-1{
 //Other codes are here 
   
  margin: 0px auto;	
}

Вот, как будет выглядеть результат:

Как выровнять div по вертикали с помощью свойства CSS margin

Снова используем margin внутри класса .box-1. Напишите следующий код:

    .box-1{
 //Other codes are here 
   
  margin: auto 0px;	
}

Результат:

Как выровнять div по горизонтали и вертикали с помощью свойства CSS margin

И ещё разок используем margin внутри класса .box-1. Напишите такой код:

    .box-1{
 //Other codes are here 
   
  margin: auto auto;	
}

Результат будет выглядеть так:

Заключение

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

Возьмите вашу медаль за то, что дочитали статью до конца!

.search__box {
  display: flex;
  position: absolute;
  background-color: #f7cb99;
  height: 40px;
  border-radius: 40px;
  padding: 10px;
  margin-top: 20px;
}
<div class="search__box">
  <input type="text" class="search__txt" placeholder="Найти работу">
  <a href="#" class="search__button">
    <i class="fa fa-search" aria-hidden="true"></i>
  </a>
</div>

Пытался сделать эту форму поиска по центру страницы через margin, но это получается не правильно и при уменьшении страницы Поиск выглядит ужасно. Центрирование почему-то не работает. Как это сделать правильно?

Andrei Fedorov's user avatar

задан 16 мар 2022 в 9:56

Polar333's user avatar

2

body {
  display: flex;
  min-height: 100vh;
  margin: 0;
}

.search__box {
  margin: auto;
  display: flex;
  background-color: #f7cb99;
  height: 40px;
  border-radius: 40px;
  padding: 10px;
}
<div class="search__box">
  <input type="text" class="search__txt" placeholder="Найти работу">
  <a href="#" class="search__button">
    <i class="fa fa-search" aria-hidden="true"></i>
  </a>
</div>

ответ дан 16 мар 2022 в 10:08

Andrei Fedorov's user avatar

Andrei FedorovAndrei Fedorov

5,7631 золотой знак9 серебряных знаков31 бронзовый знак

Чтобы расположить кнопку в центре HTML страницы, можно использовать 3 разных подхода:

  • margin: auto
  • div
  • flexbox

Разберем их подробнее.

Как использовать margin: auto для центрирования кнопки

Первый и, возможно, самый простой вариант — добавить кнопке CSS свойство margin: 0 auto, а затем добавить display: block, чтобы сделать кнопку в центре.

button {
  margin: 0 auto;
  display: block;
}

margin: 0 auto – это краткая форма установки верхнего и нижнего полей в 0 и левого и правого полей на авто.

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

Как центрировать кнопку с помощью HTML тега div

Второй вариант — обернуть кнопку тегом div, а затем использовать text-align: center для центрирования кнопки
внутри этого <div>.

Как будто ты размещаешь текст по центру.

div {
  text-align: center;
}
<div>
   <button>Centered button</button>
</div>

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

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

В таком случае лучше использовать первый вариант.

Короче говоря, если вы настаиваете на использовании этого подхода, сделайте это только для редких кнопок.

Как центрировать кнопку с помощью CSS flexbox

Третий вариант — использовать flexbox для центрирования кнопки.

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

Чтобы центрировать кнопку с помощью flexbox, ты должен сделать 2 вещи:

  • сначала добавь display: flex к родительскому элементу кнопки, чтобы активировать функции flexbox
  • затем добавь justify-content: center, чтобы кнопка была по центру

В приведенном ниже примере div является родительским элементом кнопки.

div {
  display: flex;
  justify-content: center;
}
<div>
   <button>Centered button</button>
</div>

Теперь ты знаешь 3 способа центрирования кнопки в CSS!

Получи мою
бесплатную электронную книгу для подготовки к техническому собеседованию на JavaScript или начни
Учить Full-Stack JavaScript прямо сейчас!

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

В статье мы расскажем об основных приёмах для выравнивания по центру в CSS. Какой из них более удобен и приятен — решать вам.

  • Горизонтальное центрирование
  • С помощью Flexbox
  • Через автоотступы
  • С помощью inline-блоков
  • Выравнивание нескольких элементов
  • Вертикальное центрирование
  • С помощью Flexbox
  • С помощью свойств position и transform
  • Ячейки таблицы
  • Выравнивание по центру
  • С помощью Flexbox
  • С помощью свойств position и transform
  • Через CSS Grid
  • Центрирование на примерах
  • Центрирование текста по горизонтали
  • Центрирование текста по вертикали
  • Как выровнять заголовок, список или форму
  • Как центрировать блок
  • Как разместить блок посередине страницы
  • Выравнивание картинок и кнопок по центру
  • Резюмируем

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

Для наглядности мы добавим границы блоков: синие для родительских и чёрные для дочерних.

Добавьте в родительский элемент свойства display: flex, чтобы сделать элемент flex-контейнером, и justify-content: center, чтобы контент внутри контейнера расположился посередине горизонтальной оси. Обратите внимание: justify-content действует только на flex-элементы, поэтому без display: flex он не заработает.

HTML:

<div class="parent">
  <div class="child">Блок с текстом</div>
</div>

CSS:

.parent {
  display: flex;
  justify-content: center;
  border: 2px solid blue;
}

.child {
  border: 2px solid black;
}

Результат:

Изображение: Skillbox Media

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

Добавьте свойства margin-left: auto и margin-right: auto — они устанавливают автоматические отступы слева и справа. И укажите ширину с помощью width:

CSS:

.block {
  width: 70px;
  margin-left: auto;
  margin-right: auto;
  border: 2px solid black;
}

HTML:

<div class="block">Блок с текстом</div>

Результат:

Изображение: Skillbox Media

Преимущество метода состоит в том, что не нужно явно прописывать свойства родительского элемента (в нашем случае это body).

Две строки с автоотступами можно заменить на одну: margin: 0 auto или margin: auto. В обоих случаях результат будет одинаковым.

Проще всего выравнивать текст по горизонтали. Для этого существует свойство text-align: center, которое применяется к родительскому элементу.

CSS:

.parent {
  text-align: center;
  border: 2px solid blue;
}

HTML:

<div class="parent">Текст</div>

Результат:

Изображение: Skillbox Media

Несмотря на своё название, text-align можно применять не только к тексту. Для этого нужно сделать элементы, которые хотите выровнять, встроенными — с помощью display: inline-block.

CSS:

.parent {
  text-align: center;
  border: 2px solid blue;
}

.child {
  display: inline-block;
  border: 2px solid black;
}

HTML:

<div class="parent">
  <div class="child">Блок с текстом</div>
</div>

Результат:

Изображение: Skillbox Media

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

Каждый из трёх способов будет вести себя по-разному, если мы будем размещать по центру сразу несколько элементов. Возьмём один и тот же HTML-код и последовательно применим к нему описанные выше методы:

<div class="parent">
  <div class="child">Блок с текстом</div>
  <div class="child">Блок с текстом<br>в две строки</div>
  <div class="child">Блок с текстом<br>в три<br>строки</div>
</div>

Flex-элементы выстраиваются в один ряд и приобретают одинаковую высоту:

.parent {
  display: flex;
  justify-content: center;
  border: 2px solid blue;
}

.child {
  border: 2px solid black;
}

Изображение: Skillbox Media

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

.block {
  width: 120px;
  margin: auto;
  border: 2px solid black;
}

Изображение: Skillbox Media

Инлайн-блоки остаются в одном ряду, но у них будет разная высота (у каждого — по размеру контента). Плюс текст в них автоматически выравнивается по центру.

.parent {
  text-align: center;
  border: 2px solid blue;
}

.child {
  display: inline-block;
  border: 2px solid black;
}

Изображение: Skillbox Media

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

Как и в прошлом разделе, мы будем показывать работу всех методов на примере блоков div и добавим те же границы: синие — для родительских и чёрные — для дочерних элементов. Во всех примерах будем использовать один и тот же HTML-код:

<div class="parent">
  <div class="child">Блок с текстом</div>
</div>

Добавьте в родительский элемент свойства display: flex (превращает элемент во flex-контейнер) и align-items: center. Второе свойство отцентрирует весь контент внутри контейнера по вертикали.

.parent {
  height: 100px;
  display: flex;
  align-items: center;
  border: 2px solid blue;
}

.child {
  border: 2px solid black;
}

Изображение: Skillbox Media

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

Родительскому элементу нужно присвоить свойство position: relative, а дочернему — position: absolute. Благодаря этому мы сможем сдвинуть дочерний блок относительно верхнего края родительского, используя свойство top: 50%.

.parent {
  height: 100px;
  position: relative;
  border: 2px solid blue;
}

.child {
  position: absolute;
  top: 50%;
  border: 2px solid black;
}

Изображение: Skillbox Media

Обратите внимание, что сейчас по центру расположена не середина блока с текстом, а его верхняя граница. Чтобы исправить это, дочерний элемент нужно сдвинуть на половину его высоты вверх. Делается это свойством transform: translate (0, -50%). Первое число означает смещение по горизонтали, второе — по вертикали.

.parent {
  height: 100px;
  position: relative;
  border: 2px solid blue;
}

.child {
  position: absolute;
  top: 50%;
  transform: translate(0, -50%);
  border: 2px solid black;
}

В результате получается так:

Изображение: Skillbox Media

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

Добавьте в родительский элемент display: table-cell, чтобы блок вёл себя как ячейка таблицы, и vertical-align: middle — это свойство центрирует содержимое блока по вертикали.

.parent {
  height: 100px;
  display: table-cell;
  vertical-align: middle;
  border: 2px solid blue;
}

.child {
  border: 2px solid black;
}

Изображение: Skillbox Media

Это довольно костыльный и не очень удобный способ. Так как ячейка находится вне таблицы, мы не можем корректно управлять её шириной. Для этого нужно создать родительский элемент со свойством display: table и задавать width уже внутри него.

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

Во всех примерах мы будем использовать один и тот же HTML-код и получать один и тот же результат.

<div class="parent">
  <div class="child">Блок с текстом</div>
</div>

Изображение: Skillbox Media

Чтобы центрировать элемент с помощью Flexbox, достаточно объединить горизонтальный и вертикальный способы:

.parent {
  height: 100px;
  display: flex;
  justify-content: center;
  align-items: center;
  border: 2px solid blue;
}

.child {
  border: 2px solid black;
}

В этом случае нужно сделать всё то же, что и при вертикальным центрировании, но с двумя изменениями в стилях дочернего элемента:

  • добавить свойство left: 50%;
  • установить свойству transform значение translate (-50%, -50%).

.parent {
  height: 100px;
  position: relative;
  border: 2px solid blue;
}

.child {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  border: 2px solid black;
}

Этот способ похож на вёрстку флексами. Нужно установить в родительском элементе свойство display: grid — оно превратит его в grid-контейнер. А в дочернем задать автоматические отступы с помощью margin: auto.

.parent {
  height: 100px;
  display: grid;
  border: 2px solid blue;
}

.child {
  margin: auto;
  border: 2px solid black;
}

Теперь рассмотрим частные случаи, как отцентрировать текст, заголовок, список, форму, блок, изображение и кнопку.

Самый простой способ выровнять текст по горизонтали — использовать свойство text-align: center.

HTML:

<p class="center-text">Абзац текста, горизонтально выровненный по центру</p>

CSS:

.center-text {
  text-align: center;
}

Результат:

Изображение: Skillbox Media

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

HTML:

<p class="center-text">Абзац текста, выровненный по центру, ограниченный справа и слева</p>

CSS:

.center-text {
  width: 100px;
  margin: auto;
  text-align: center;
}

Результат:

Изображение: Skillbox Media

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

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

Flexbox. В этом случае нужно задать стили только для родительского элемента, а для дочернего CSS-кода можно не писать.

HTML:

<main class="parent">
  <p class="child">Абзац с текстом, вертикально выровненный по центру</p>
</main>

CSS:

.parent {
  height: 100px;
  display: flex;
  align-items: center;
  border: 2px solid blue;
}

Результат:

Изображение: Skillbox Media

Позиционирование. Если применить к элементу <p> свойства position и transform, позиционирование будет работать некорректно из-за того, что по умолчанию у него есть отступы. Решить это можно двумя путями.

Первый (рекомендуемый) — убрать из абзаца отступ свойством margin: 0.

HTML:

<main class="parent">
  <p class="child">Абзац с текстом, вертикально выровненный по центру</p>
</main>

CSS:

.parent {
  height: 100px;
  position: relative;
  border: 2px solid blue;
}

.child {
  position: absolute;
  top: 50%;
  transform: translate(0, -50%);
  margin: 0;
}

Второй — применить стиль дочернего элемента к тегу <span> внутри <p>.

HTML:

<main class="parent">
  <p><span class="child">Абзац с текстом, вертикально выровненный по центру</span></p>
</main>

CSS:

.parent {
  height: 100px;
  position: relative;
  border: 2px solid blue;
}

.child {
  position: absolute;
  top: 50%;
  transform: translate(0, -50%);

При обоих путях результат будет один и тот же:

Изображение: Skillbox Media

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

HTML:

<main class="parent">
  <p>Абзац с текстом, вертикально выровненный по центру
</main>

CSS:

.parent {
  height: 100px;
  display: table-cell;
  vertical-align: middle;
  border: 2px solid blue;
}

Результат:

Изображение: Skillbox Media

К заголовкам, спискам и формам применяются все те же способы позиционирования по центру, что и к обычному тексту: как по горизонтали, так и по вертикали.

Единственная особенность списков — их родителю не стоит присваивать свойство text-align: center. Выглядеть это будет плохо, можете убедиться в этом на следующем примере.

HTML:

<div class="parent">
  <ul> 
    <li>Первый пункт</li>
    <ul>
      <li>Первый подпункт</li>
      <li>Второй подпункт</li>
    </ul>
    <li>Второй пункт</li>
  </ul>
</div>

CSS:

.parent {
  text-align: center;
  border: 2px solid blue;
}

Результат:

Изображение: Skillbox Media

Когда мы рассказывали о способах выравнивания элементов, приводили примеры именно на блоках. Поэтому, если вы ищете ответ на этот вопрос, перейдите в один из предыдущих разделов:

  • Горизонтальное центрирование
  • Вертикальное центрирование
  • Выравнивание по центру

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

  • в качестве родительского элемента выступает всё тело веб-страницы (элемент <body>);
  • необязательно явно указывать высоту блока.

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

Изображение: Skillbox Media

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

HTML:

<body>
  <div>Блок посередине</div>
</body>

CSS:

body {
  display: flex;
  align-items: center;
  justify-content: center;
  border: 2px solid blue;
}

Позиционирование. Дополнительное отличие от описанного выше способа в том, что не нужно указывать свойство position: relative — ведь расположение <body> не зависит ни от каких других элементов.

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

HTML:

<body>
  <div class="block">Блок посередине</div>
</body>

CSS:

body {
  border: 2px solid blue;
}

.block {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  border: 2px solid black;
}

Grid. Здесь мы задаём свойства как родительскому, так и дочернему элементу.

HTML:

<body>
  <div class="block">Блок посередине</div>
</body>

CSS:

body {
  display: grid;
  border: 2px solid blue;
}

.block {
  margin: auto;
  border: 2px solid black;
}

Центрирование изображений <img> и кнопок <button> в CSS работает почти так же, как и с блоками. В большинстве случаев вы можете просто использовать те же методы, о которых мы рассказывали ранее:

  • для горизонтального центрирования (кроме автоотступов);
  • для вертикального центрирования (кроме некоторых случаев во флексбоксах);
  • для выравнивания посередине (кроме некоторых случаев во флексбоксах).

Если вы выравниваете картинку или кнопку по горизонтали с помощью автоотступов, добавьте ей свойство display: block, чтобы она вела себя как блок.

HTML:

<img src="https://skillbox.ru/local/templates/media/images/common/menu-icon-3.svg">

CSS:

<img src="https://skillbox.ru/local/templates/media/images/commonimg {
  height:150px;
  display: block;
  margin: auto;
}/menu-icon-3.svg">

Результат:

Изображение: Skillbox Media

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

  • задана высота родительского блока;
  • не заданы размеры картинки;
  • не указано свойство align-items.

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

CSS:

.parent {
  height: 300px;
  display: flex;
  justify-content: center;
  border: 2px solid blue;
}

HTML:

<div class="parent">
  <img src="https://skillbox.ru/local/templates/media/images/common/menu-icon-3.svg">
</div>

Результат:

Стандартный размер этого изображения — 17 на 24 пикселя. Но здесь оно автоматически растянулось
Изображение: Skillbox Media

В остальных случаях флексбоксы будут работать так же, как и с блочными элементами.

Основная сложность при выравнивании элементов веб-страницы по центру — обилие подходов, у каждого из которых свои тонкости и ограничения:

  • Flexbox удобен для любого вида выравнивания. При таком подходе необходимо задавать стили только родительскому элементу.
  • Позиционирование можно использовать для выравнивания по вертикали и размещения элемента по центру блока (выравнивания по вертикали и горизонтали одновременно).
  • Автоотступы и inline-блоки удобно использовать для горизонтального выравнивания, ячейки таблицы — для вертикального, Grid — для размещения элемента по центру родительского блока.

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