Spec-Zone.ru › CSS

transform-origin

Базовая линия Широко доступно

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с сентября 2015 года.

  • Подробнее
  • Полная совместимость
  • Отправить отзыв

Свойство transform-origin CSS задаёт точку начала преобразований элемента.

Попробовать

Точка начала преобразования — это точка, относительно которой применяется преобразование. Например, точка начала преобразования функции rotate() — это центр вращения.

Фактически, это свойство заключает в себе пару переводов вокруг других преобразований элемента. Первый перевод перемещает точку начала преобразования в истинное начало координат ( 0 , 0 ) . Затем применяются другие преобразования, и поскольку точка начала преобразования находится в ( 0 , 0 ) , эти преобразования действуют относительно точки начала преобразования. Наконец, применяется обратный перевод, перемещающий точку начала преобразования обратно в её исходное положение. Вследствие этого определение

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 для различных функций преобразования.

Спецификации

Спецификация
CSS Transforms Module Level 1
# transform-origin-property

Совместимость браузеров

Рабочий стол Мобильный
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Поддерживается только для преобразований, применяемых с помощью свойства CSS transform (например, .className { transform: rotate(45deg); transform-origin: center; }). Оно не оказывает влияния на преобразования, применяемые с помощью атрибута transform SVG (например, <rect style="transform-origin: center;" transform="rotate(45)" />).
25
43Ключевые слова и проценты относятся к холсту, а не к самому объекту. См. ошибку 1209061.
14
6Поддерживается только для преобразований, применяемых с помощью свойства CSS transform (например, .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

См. также

  • Использование преобразований CSS
  • https://css-tricks.com/almanac/properties/t/transform-origin/

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API