Перейти до основного вмісту

2D-трансформації

CSS-трансформації дозволяють зсувати, змінювати масштаб і повертати елементи, тобто додавати декоративні ефекти. Трансформації змінюють форму і положення елемента, не впливаючи на інші елементи сторінки. За замовчуванням трансформація відбувається щодо центру елемента, але це можна змінити.

Властивість transform​

Відповідає за застосування однієї або більше трансформації до елемента.

transform: none | <тип трансформації> <тип трансформації> ...

Трансформований елемент - це елемент з будь-яким встановленим значенням властивості transform, відмінним від none.

Масштабування​

Функції scaleX(tx), scaleY(ty) і scale(tx, ty) масштабують блок по ширині та/або висоті, не впливаючи на геометрію оточуючих елементів. Якщо для scale() вказано одне значення, друге буде таке саме.

.box {
transform: scale(1.15);
}

Початковий масштаб елемента - 1. Значення від 1 до 0 зменшують елемент, більше 1 - навпаки, збільшують. Наприклад, значення scale(1.25) - це 125% від початкового розміру, а scale(0.75) - 75%.

Увага

Анімація прикладів зроблена для візуалізації зміни властивостей і поведінки елементів.

Поворот​

Функція rotate(кут) повертає елементи на задану кількість градусів (одиниця deg). Додатні значення повертають елемент за годинниковою стрілкою, від'ємні - проти.

.box {
transform: rotate(45deg);
}
Цікаво

Значення можна передати не тільки в градусах, а й в «оборотах» (одиниця turn). Наприклад, rotate(0.5turn) - це половина обороту, аналог rotate(180deg).

Зміщення​

Функції translateX(tx), translateY(ty) і translate(tx, ty) переміщують елемент в горизонтальному (вісь X) та/або вертикальному (вісь Y) напрямках щодо початкового положення.

  • Додатні значення X зміщують елемент вправо, від'ємні - вліво.
  • Додатні значення Y зміщують елемент вниз, від'ємні - вгору.

Значення можуть бути в пікселях або відсотках. Якщо значення задане у відсотках, то воно розраховується на підставі розміру елемента, що зміщується.

.box {
transform: translate(100px, 200px);
}

Центрування елемента​

Розглянемо прийом, за допомогою якого можна поставити абсолютно позиційований елемент точно по центру блоку, щодо якого він позиціонується. Техніка дуже проста і складається з трьох кроків.

.box {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
  1. Абсолютно позиціонуємо елемент щодо предка.
  2. Задаємо елементу властивості top і left зі значенням 50%, це поставить верхній лівий кут елемента рівно по центру предка.
  3. Задаємо елементу від'ємне зміщення (translate) по 50% його висоти і ширини. Це посуне елемент вгору і вліво, і відцентрує всередині предка.

Викривлення​

Функції skewX(кут), skewY(кут) і skew(x-кут, y-кут) використовуються для викривлення (нахилу, деформування) сторін елемента щодо координатних осей. Якщо для skew() вказане тільки одне значення, друге дорівнюватиме 0, тобто це буде аналог skewX().

.box {
transform: skew(30deg);
}

Точка трансформації​

Властивість transform-origin дозволяє змістити точку трансформації, щодо якої відбувається зміна положення, розміру або форми елемента. Значення за замовчуванням — center, або 50% 50%. Задається лише для трансформованих елементів. Не наслідується.

У прикладі точка трансформації кожного елемента позначена синьою міткою. Значення можна вказувати не тільки ключовими словами, а також в пікселях або відсотках.