Оригінальна публікація: How to Center an Image Vertically and Horizontally with CSS
Багатьом розробникам важко працювати із зображеннями. Надзвичайно важко з адаптивністю та вирівнюванням, особливо посередині сторінки.
У цій публікації я покажу декілька поширених способів вертикального та горизонтального центрування зображення за допомогою різних властивостей CSS.
Горизонтальне центрування зображення
Розпочнемо з горизонтального центрування зображення за допомогою трьох різних властивостей CSS.
Text-Align
Перший спосіб: використати властивість text-align. Однак цей метод працює лише тоді, коли зображення знаходиться всередині контейнера на рівні блоку, наприклад <div>:
<style>
div {
text-align: center;
}
</style>
<div>
<img src="your-image.jpg">
</div>Margin: Auto
Другий спосіб: використати властивість margin: auto (для лівого та правого полів).
Однак просто використати margin: auto не вийде. Окрім margin: auto потрібно використати ще дві додаткові властивості.
Властивість margin-auto не впливає на рядкові елементи. Оскільки тег <img> є рядковим елементом, спершу потрібно конвертувати його в елемент на рівні блоку:
img {
margin: auto;
display: block;
}По-друге, нам потрібно визначити ширину. Таким чином ліве та праве поля можуть зайняти решту порожнього простору та автоматично вирівнятися (якщо ми не задамо ширину 100%):
img {
width: 60%;
margin: auto;
display: block;
}Display: Flex
Третій спосіб: використати display: flex. Так само як ми використали властивість text-align для контейнера, ми використаємо display: flex.
Однак просто використати display: flex не вийде. Контейнер повинен мати додаткову властивість justify-content:
div {
display: flex;
justify-content: center;
}
img {
width: 60%;
}Властивість justify-content працює разом із display: flex, що ми можемо використати для горизонтального центрування.
Зрештою, ширина зображення повинна бути меншою за ширину контейнера. В іншому разі, воно займе 100% простору та ми не зможемо його відцентрувати.
Важливо: властивість display: flex не підтримується на старих версіях браузерів.
Вертикальне центрування зображення
Display: Flex
display: flex знову буде в нагоді.
Розглянемо випадок, де контейнер має висоту 800px, а висота зображення — лише 500px:
div {
display: flex;
justify-content: center;
height: 800px;
}
img {
width: 60%;
height: 500px;
}В такому випадку все вирішує додавання до контейнера одної лінії коду — align-items: center:
div {
display: flex;
justify-content: center;
align-items: center;
height: 800px;
}Властивість align-items може розставити елементи вертикально, якщо використана разом із display: flex.
Властивості Absolute та Transform
Інший метод для вертикального розташування — використати властивості position та transform разом. Це трішки важко, тому зробимо все покроково.
Крок 1: абсолютна позиція
Спочатку ми змінюємо позиціювання зображення з static на absolute:
div {
height: 800px;
position: relative;
background: red;
}
img {
width: 80%;
position: absolute;
}Крім того, воно повинне бути всередині відносно розташованого контейнера, тому ми додаємо position: relative до div контейнера.
Крок 2: верхня та ліва властивості
Потім ми визначаємо верхню і ліву властивості зображення та встановлюємо їх на 50%. Це перемістить початкову точку зображення (верхній лівий кут) до центру контейнера:
img {
width: 80%;
position: absolute;
top: 50%;
left: 50%;
}Крок 3: трансформація
Другий крок частково перемістив зображення за межі контейнера. Потрібно повернути його всередину.
Потрібно визначити властивість transform та додати -50% до осей X і Y:
img {
width: 80%;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}Існують інші способи горизонтального та вертикального центрування, але я описав найпоширеніші. Надіюсь, ця публікація допомогла вам зрозуміти, як вирівняти зображення посередині сторінки.
Дякую, що прочитали!