Spec-Zone.ru › SVG

transform-origin

Ограниченная доступность

Эта функция не входит в Baseline, поскольку она не работает в некоторых наиболее широко используемых браузерах.

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

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

Этот атрибут можно использовать с любым элементом SVG.

Примечание: У transform-origin как у атрибута представления также есть соответствующее свойство CSS: transform-origin. Если заданы оба варианта, приоритет имеет свойство CSS.

Примечания по использованию

Значения См. transform-origin
Значение по умолчанию 0 0
Анимируемое Да

Примечание: Значение transform-origin по умолчанию — 0 0 для всех элементов SVG, кроме корневых элементов <svg> и элементов <svg>, являющихся непосредственными потомками foreignObject. Для этих элементов используется transform-origin: 50% 50%, как и в обычном CSS.

Заданные длины, проценты и ключевые слова (left, center, right, top и bottom) отсчитываются относительно опорной области. Поскольку значение transform-box по умолчанию — view-box, координаты начала преобразования отсчитываются относительно viewBox элемента SVG, если только у самого элемента нет связанного с ним блока макета CSS.

Примеры

В следующих примерах показан поворот прямоугольного блока на 30° вокруг нескольких различных transform-origin. В каждом случае SVG объявляется с исходным блоком, обведённым красной пунктирной линией, затем повёрнутым блоком, нарисованным салатовым цветом, и transform-origin, обозначенным красным маркером-перекрестием.

transform-origin по умолчанию

По умолчанию transform-origin имеет значение 0 0, которое помещает его в начало координат viewBox. Ниже мы расширяем viewBox до отрицательных значений, чтобы можно было увидеть маркер-перекрестие целиком, а также заметить, что он не всегда находится в верхнем левом углу элемента <svg>.

<svg
  viewBox="-10 -10 300 300"
  xmlns="http://www.w3.org/2000/svg"
  width="310"
  height="310">
  <rect
    x="60"
    y="10"
    width="180"
    height="180"
    fill="none"
    stroke="red"
    stroke-width="3"
    stroke-dasharray="3 3" />
  <rect
    x="60"
    y="10"
    width="180"
    height="180"
    fill="lime"
    opacity="0.5"
    transform="rotate(30)" />
  <g transform="translate(0 0)">
    <circle cx="0" cy="0" r="3" fill="red" opacity="0.5" />
    <path d="M -8 0 h 16 m -8 -8 v 16" fill="none" stroke="red" />
    <circle cx="0" cy="0" r="6" fill="none" stroke="red" />
  </g>
</svg>

transform-origin по центру

Ниже мы задаём для transform-origin значение center, которое помещает начало координат в центр viewBox, но не в центр преобразуемого элемента.

<svg
  viewBox="-10 -10 300 300"
  xmlns="http://www.w3.org/2000/svg"
  width="310"
  height="310">
  <rect
    x="60"
    y="10"
    width="180"
    height="180"
    fill="none"
    stroke="red"
    stroke-width="3"
    stroke-dasharray="3 3" />
  <rect
    x="60"
    y="10"
    width="180"
    height="180"
    fill="lime"
    opacity="0.5"
    transform="rotate(30)"
    transform-origin="center" />
  <g transform="translate(150 150)">
    <circle cx="0" cy="0" r="3" fill="red" opacity="0.5" />
    <path d="M -8 0 h 16 m -8 -8 v 16" fill="none" stroke="red" />
    <circle cx="0" cy="0" r="6" fill="none" stroke="red" />
  </g>
</svg>

transform-origin относительно преобразуемого элемента

Чтобы задать transform-origin относительно преобразуемого элемента, можно использовать свойство transform-box. Ниже мы задаём для transform-box значение fill-box, в результате чего transform-origin располагается относительно ограничивающего прямоугольника преобразуемого элемента.

<svg
  viewBox="-10 -10 300 300"
  xmlns="http://www.w3.org/2000/svg"
  width="310"
  height="310">
  <rect
    x="60"
    y="10"
    width="180"
    height="180"
    fill="none"
    stroke="red"
    stroke-width="3"
    stroke-dasharray="3 3" />
  <rect
    class="transformed-elem"
    x="60"
    y="10"
    width="180"
    height="180"
    fill="lime"
    opacity="0.5"
    transform="rotate(30)"
    transform-origin="center" />
  <g transform="translate(150 100)">
    <circle cx="0" cy="0" r="3" fill="red" opacity="0.5" />
    <path d="M -8 0 h 16 m -8 -8 v 16" fill="none" stroke="red" />
    <circle cx="0" cy="0" r="6" fill="none" stroke="red" />
  </g>
</svg>
.transformed-elem {
  transform-box: fill-box;
}

Другие примеры см. в статье о свойстве CSS transform-origin.

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

Спецификация
Модуль преобразований CSS уровня 1>
# transform-origin-property>
Масштабируемая векторная графика (SVG) 2>
# PresentationAttributes>

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

Настольные компьютеры Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android WebView на iOS
transform-origin ≤83 ≤83 77 ≤69
≤13.1Не работает с атрибутом представления SVG transform. Работает только со свойством CSS transform. См. ошибку 201854.
≤83 79 ≤59
≤13.4Не работает с атрибутом представления SVG transform. Работает только со свойством CSS transform. См. ошибку 201854.
≤13.0 ≤83
≤13.4Не работает с атрибутом представления SVG transform. Работает только со свойством CSS transform. См. ошибку 201854.

См. также

  • Свойство CSS transform-origin

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Attribute/transform-origin

Spec-Zone.ru

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