Вертикальне і горизонтальне центрування за допомогою CSS3 transform

28 червня 2016 18:26 comandante 315 3

Центрувати елементи по горизонталі не складно, але вертикальне вирівнювання завжди було трохи заплутаним. У цій статті я покажу вам, як центрувати по вертикалі і по горизонталі за допомогою CSS3 transform.


Я створив для цього клас .centerthis, який ви можете вільно використовувати в будь-якому проекті. Можна також видалити вирівнювання по горизонталі і залишити лише вертикальне.

.centerthis {
    margin: 0 auto;
    display: table;
    position: relative;
    top: 50%;
    -webkit-transform: translateY(-50%);
    -moz-transform: translateY(-50%);
    -o-transform: translateY(-50%);
    -ms-transform: translateY(-50%);
    transform: translateY(-50%);
}
Я застосував цей клас для контейнера, у якому знаходяться зображення і текст. Також додав клас до самого тексту.

Горизонтальне центрування може бути зроблено наступним чином: margin: 0 auto; display: table;

Вертикальне центрування трохи складніше. На щастя, в CSS3 є transform!

По-перше, ми змістили вниз елемент по вертикалі на 50% від верхньої частини батьківського контейнера:

position: relative;
top: 50%;

Тепер елемент розташований занадто низько. Це тому, що нам потрібно перемістити елемент вгору на 50% від своєї власної висоти. Ми робимо це за допомогою transform:

-webkit-transform: translateY(-50%);
-moz-transform: translateY(-50%);
-o-transform: translateY(-50%);
-ms-transform: translateY(-50%);
transform: translateY(-50%);

Ось і все! За допомогою цього нескладного коду можно швидко та легко відцентрувати елемент по горизонталі та вертикалі. А якими способами користуетесь ви?

Джерело перекладу

315 6

Схожі матеріали:

Коментарі:

Q-Bart

28 Чер 2016 23:01

Flex можна, хіба ні?

Дмитро Дирзул

29 Чер 2016 07:27

Спробував в хромі. Є косяк. Коли висота елемента непарна то верхня і нижня сторони розмиваються на пів пікселя. І те саме з усіма елементами всередині цього елементу.

IhorKevin

29 Чер 2016 11:35

Найбільше подобається такий спосіб:
display: flex;
justify-content: center;
align-items: center;

Але це не працює в Safari на елементах button та input.

Авторизуйтесь, щоб залишити коментар.