transform-origin
Базовая линия Широко доступно
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с сентября 2015 года.
Свойство transform-origin CSS задаёт точку начала преобразований элемента.
Попробовать
Точка начала преобразования — это точка, относительно которой применяется преобразование. Например, точка начала преобразования функции rotate() — это центр вращения.
Фактически, это свойство заключает в себе пару переводов вокруг других преобразований элемента. Первый перевод перемещает точку начала преобразования в истинное начало координат . Затем применяются другие преобразования, и поскольку точка начала преобразования находится в , эти преобразования действуют относительно точки начала преобразования. Наконец, применяется обратный перевод, перемещающий точку начала преобразования обратно в её исходное положение. Вследствие этого определение
transform-origin: -100% 50%; transform: rotate(45deg);
приводит к тому же преобразованию, что и
transform-origin: 0 0; transform: translate(-100%, 50%) rotate(45deg) translate(100%, -50%);
Читая справа налево, translate(100%, -50%) — это перевод, чтобы перенести точку начала преобразования в истинное начало координат, rotate(45deg) — это исходное преобразование, а translate(-100%, 50%) — это перевод для возврата точки начала преобразования в её исходное положение.
По умолчанию, начало преобразования — center.
Синтаксис
/* One-value syntax */ transform-origin: 2px; transform-origin: bottom; /* x-offset | y-offset */ transform-origin: 3cm 2px; /* x-offset-keyword | y-offset */ transform-origin: left 2px; /* x-offset-keyword | y-offset-keyword */ transform-origin: right top; /* y-offset-keyword | x-offset-keyword */ transform-origin: top right; /* x-offset | y-offset | z-offset */ transform-origin: 2px 30% 10px; /* x-offset-keyword | y-offset | z-offset */ transform-origin: left 5px -3px; /* x-offset-keyword | y-offset-keyword | z-offset */ transform-origin: right bottom 2cm; /* y-offset-keyword | x-offset-keyword | z-offset */ transform-origin: bottom right 2cm; /* Global values */ transform-origin: inherit; transform-origin: initial; transform-origin: revert; transform-origin: revert-layer; transform-origin: unset;
Свойство transform-origin может быть указано с использованием одного, двух или трёх значений, где каждое значение представляет собой смещение. Смещения, которые не определены явно, сбрасываются до соответствующих начальных значений.
Если определено одно значение <length> или <percentage>, оно представляет собой горизонтальное смещение.
Если определено два или более значений, и ни одно значение не является ключевым словом, или единственное использованное ключевое слово — center, то первое значение представляет собой горизонтальное смещение, а второе — вертикальное смещение.
-
Синтаксис с одним значением:
- Значение должно быть
<length>,<percentage>, или одним из ключевых словleft,center,right,top, иbottom.
- Значение должно быть
-
Синтаксис с двумя значениями:
- Одно значение должно быть
<length>,<percentage>, или одним из ключевых словleft,center, иright. - Другое значение должно быть
<length>,<percentage>, или одним из ключевых словtop,center, иbottom.
- Одно значение должно быть
-
Синтаксис с тремя значениями:
- Первые два значения такие же, как и для синтаксиса с двумя значениями.
- Третье значение должно быть
<length>. Оно всегда представляет смещение по оси Z.
Значения
- x-смещение
-
Это
<length>или<percentage>, описывающее расстояние от левого края блока до начала преобразования. - ключевое слово смещения
-
Это одно из
left,right,top,bottom, илиcenterключевых слов, описывающих соответствующее смещение. - y-смещение
-
Это
<length>или<percentage>, описывающее расстояние от верхнего края блока до начала преобразования. - ключевое слово x-смещения
-
Это одно из
left,right, илиcenterключевых слов, описывающих расстояние от левого края блока до начала преобразования. - ключевое слово y-смещения
-
Это одно из
top,bottom, илиcenterключевых слов, описывающих расстояние от верхнего края блока до начала преобразования. - z-смещение
-
Это
<length>(и никогда не<percentage>, что сделало бы утверждение недействительным), описывающее расстояние от точки z=0 до зрителя.
Ключевые слова — это удобные сокращения и соответствуют следующим <percentage> значениям:
| Ключевое слово | Значение |
|---|---|
left | 0% |
center | 50% |
right | 100% |
top | 0% |
bottom | 100% |
Формальное определение
| Начальное значение | 50% 50% 0 |
|---|---|
| Применяется к | преобразуемым элементам |
| Наследуется | нет |
| Проценты | относятся к размеру ограничивающей рамки |
| Вычисленное значение | для <length> абсолютное значение, в противном случае процент |
| Тип анимации | простой список длин, процентов или calc |
Примечание: Начальное значение transform-origin — 0 0 для всех элементов SVG, за исключением корневых <svg> элементов и <svg> элементов, являющихся прямыми дочерними элементами foreignObject, и у которых transform-origin равно 50% 50%, как и у других элементов CSS. Для получения дополнительной информации см. атрибут SVG transform-origin.
Формальный синтаксис
transform-origin =
[ left | center | right | top | bottom | <length-percentage> ] |
[ left | center | right | <length-percentage> ] [ top | center | bottom | <length-percentage> ] <length>? |
[ [ center | left | right ] && [ center | top | bottom ] ] <length>?
<length-percentage> =
<length> |
<percentage>
Примеры
Демонстрация различных значений преобразования
Этот пример показывает эффект выбора различных значений transform-origin для различных функций преобразования.
Спецификации
Совместимость браузеров
| Рабочий стол | Мобильный | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на IOS | Samsung Internet | WebView Android | |
transform-origin |
361 | 1212 | 16493.5–preview | 231512.1–1510.5–15 | 92 | 3618 | 16494 | 241512.1–1511–14 | 91 | 3.01.0 | 374.4 |
bottom |
1 | 12 | ≤72 | 15 | 2 | 18 | 79 | 14 | 1 | 1.0 | 4.4 |
center |
1 | 12 | ≤72 | 15 | 2 | 18 | 79 | 14 | 1 | 1.0 | 4.4 |
left |
1 | 12 | ≤72 | 15 | 2 | 18 | 79 | 14 | 1 | 1.0 | 4.4 |
right |
1 | 12 | ≤72 | 15 | 2 | 18 | 79 | 14 | 1 | 1.0 | 4.4 |
svg_elements |
19 | 17 | 43Ключевые слова и проценты относятся к холсту, а не к самому объекту. См. ошибку 1209061. |
15 | 6Поддерживается только для преобразований, применяемых с помощью свойства CSStransform (например, .className { transform: rotate(45deg); transform-origin: center; }). Оно не оказывает влияния на преобразования, применяемые с помощью атрибута transform SVG (например, <rect style="transform-origin: center;" transform="rotate(45)" />). |
25 | 43Ключевые слова и проценты относятся к холсту, а не к самому объекту. См. ошибку 1209061. |
14 | 6Поддерживается только для преобразований, применяемых с помощью свойства CSStransform (например, .className { transform: rotate(45deg); transform-origin: center; }). Оно не оказывает влияния на преобразования, применяемые с помощью атрибута transform SVG (например, <rect style="transform-origin: center;" transform="rotate(45)" />). |
1.5 | 4.4 |
three_value_syntax |
12 | 12 | 10 | 15 | 5 | 18 | 10 | 14 | 3.2 | 1.0 | 4.4 |
top |
1 | 12 | ≤72 | 15 | 2 | 18 | 79 | 14 | 1 | 1.0 | 4.4 |
См. также
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/transform-origin