JS властивість CSSStyleDeclaration.transformOrigin


Загальний опис

element.style.transformOrigin - це властивість, яка визначає точку, навколо якої застосовуються трансформації елемента. Вона дозволяє змінювати центр обертання, масштабування або іншої трансформації, що робить анімації та ефекти більш контрольованими та гнучкими.

Для роботи з властивістю element.style.transformOrigin вам потрібно спочатку вибрати елемент у DOM. Це можна зробити за допомогою методів, таких як document.getElementById або document.querySelector.

Приклад:

let element = document.getElementById('myElement');
element.style.transformOrigin = 'top left';
element.style.transform = 'rotate(45deg)';

У цьому прикладі елемент з ідентифікатором myElement обертається на 45 градусів навколо точки, яка знаходиться у верхньому лівому куті елемента. За замовчуванням, точка трансформації знаходиться в центрі елемента (50% 50%), але її можна змінити на будь-яку іншу позицію, використовуючи одиниці вимірювання, такі як відсотки (%), пікселі (px) або ключові слова (top, bottom, left, right, center).

Наступний приклад показує, як змінити точку трансформації для масштабування елемента:

let element = document.getElementById('myElement');
element.style.transformOrigin = 'bottom right';
element.style.transform = 'scale(1.5)';

Тут елемент масштабується в 1.5 рази навколо точки, що знаходиться у нижньому правому куті. Це корисно, коли вам потрібно, щоб елемент збільшувався або зменшувався від певної точки, а не від центру.

Крім ключових слів і відсотків, ви також можете використовувати пікселі для більш точної настройки точки трансформації:

let element = document.getElementById('myElement');
element.style.transformOrigin = '30px 40px';
element.style.transform = 'rotate(30deg)';

У цьому прикладі обертання відбувається навколо точки, що знаходиться на 30 пікселів праворуч і 40 пікселів вниз від верхнього лівого кута елемента. Це дає вам точний контроль над місцем, де повинні відбуватися трансформації.

Використання transformOrigin також важливе при створенні складних анімацій. Наприклад, якщо ви створюєте анімацію обертання руки на зображенні персонажа, ви можете встановити точку трансформації на плечі, щоб обертання виглядало природно:

let arm = document.getElementById('arm');
arm.style.transformOrigin = 'top left';
arm.style.transform = 'rotate(90deg)';

Важливо враховувати, що transformOrigin впливає на всі типи трансформацій, включаючи rotate, scale, skew та translate, тому використання цієї властивості допомагає досягти бажаних ефектів з високою точністю.

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

автор: Bond

Порада

Використовуйте transformOrigin для створення реалістичних анімацій персонажів. Наприклад, якщо ви анімуєте руку персонажа, встановіть transformOrigin на плечі, щоб обертання виглядало природно. Це дозволить вам створити більш правдоподібні анімації, які виглядатимуть краще і природніше.

автор: Bond
Порада

Поєднуйте transformOrigin з іншими CSS-властивостями для створення плавних анімацій. Використовуйте transition разом з transform і transformOrigin, щоб зробити зміни плавними та природними. Це допоможе вам покращити користувацький досвід, роблячи анімації більш привабливими.

автор: Bond
Порада

Налаштування transformOrigin може допомогти вам створити анімації масштабування з певної точки. Замість того щоб масштабувати елемент з його центру, ви можете змінити точку масштабування, щоб створити цікаві візуальні ефекти. Наприклад, ви можете збільшити елемент від нижнього правого кута, встановивши transformOrigin на 'bottom right'.

автор: Bond

Синтаксис

element.style.transformOrigin

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
36 16 9 23 12 10
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
37 36 16 9

Приклади

+ запропонувати свій приклад у пісочниці

Цей приклад показує, як створити анімацію руху руки при наведенні курсора. Встановлюючи transformOrigin на 'top right', ми задаємо точку обертання на плечі руки. При наведенні курсора рука нахиляється на 20 градусів, а при відведенні повертається в початкове положення, що створює ефект природного руху.

HTML

<div id="hand">Демонстраційний елемент</div>

JS

let hand = document.getElementById('hand');
hand.style.transformOrigin = 'top right';
hand.style.transition = 'transform 0.5s';
hand.addEventListener('mouseover', () => {
    hand.style.transform = 'rotate(20deg)';
});
hand.addEventListener('mouseout', () => {
    hand.style.transform = 'rotate(0deg)';
});
автор: Bond

Цей приклад демонструє, як створити ефект відкриття дверей. Встановлюючи transformOrigin на 'left center', ми визначаємо точку обертання вздовж лівого краю дверей. При натисканні на елемент, він обертається на 90 градусів по осі Y, створюючи ефект відкриття.

HTML

<div id="door">Демонстраційний елемент</div>

JS

let element = document.getElementById('door');
element.style.transformOrigin = 'left center';
element.style.transition = 'transform 1s';
element.addEventListener('click', () => {
    element.style.transform = 'rotateY(90deg)';
});
автор: Bond

Цей приклад надає користувачу можливість обертати квадратний елемент навколо різних точок: центру, верхнього лівого кута та нижнього правого кута. Кожна кнопка встановлює відповідну точку обертання за допомогою transformOrigin та обертає елемент на 360 градусів, дозволяючи спостерігати різницю в поведінці обертання.

автор: Bond

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід