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.
Спецификации
Совместимость с браузерами
| Настольные компьютеры | Мобильные устройства | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 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Не работает с атрибутом представления SVGtransform. Работает только со свойством CSS transform. См. ошибку 201854. |
≤83 | 79 | ≤59 | ≤13.4Не работает с атрибутом представления SVGtransform. Работает только со свойством CSS transform. См. ошибку 201854. |
≤13.0 | ≤83 | ≤13.4Не работает с атрибутом представления SVGtransform. Работает только со свойством 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