Атрибут transform-origin SVG задает преобразования элемента.
SVG — атрибут transform-origin задает источник преобразования элемента.
Вы можете использовать этот атрибут с любым элементом SVG.
Примечание. Как атрибут представления в SVG, transform-origin по синтаксису и поведению соответствует свойству transform-origin в CSS и может использоваться как свойство CSS для стилизации SVG. См. Свойство CSS transform-origin для получения дополнительной информации.
Usage notes
| Values | Ошибка:не удалось найти синтаксис для этого элемента |
| Default value | 0, 0 |
| Animatable | Yes |
Примечание. Значение по умолчанию для параметра transform-origin равно 0 0 для всех элементов SVG, кроме корневых элементов <svg> и элементов <svg>
50% 50% , как и другие CSS-элементы.
Свойство transform-origin может быть указано с использованием одного, двух или трех значений, где каждое значение представляет смещение. Смещения, которые не определены явно, сбрасываются до соответствующих начальных значений .
Если определено одно значение <length> или <percentage> , оно представляет горизонтальное смещение.
Если определены два или более значений, и ни одно из значений не является ключевым словом, или единственным используемым ключевым словом является center , то первое значение представляет горизонтальное смещение, а второе представляет вертикальное смещение.
- One-value syntax:
- Значение должно быть
<length>или одним из ключевых словleft,center,right,topиbottom.
- Значение должно быть
- Two-value syntax:
- Одно значение должно быть
<length>,<percentage>или одно из ключевых словleft,centerиright.
- Другое значение должно быть
<length>,<percentage>или одним из ключевых словtop,centerиbottom.
- Одно значение должно быть
- Three-value syntax:
- Первые два значения совпадают с синтаксисом двух значений.
- Третье значение должно быть
<length>. Он всегда представляет смещение по оси Z.
Example
В этом примере показан код для одного изображения PNG и трех изображений SVG:
- Эталонное изображение в формате PNG.
- Эталонное изображение SVG,в котором не используется преобразование.
- Изображение SVG, которое использует
transform-originдля преобразования, при этом ожидаемым результатом является изображение, идентичное эталонному изображению. - Изображение SVG, которое не использует
transform-origin, но выполняет то же преобразование, используя толькоtransform, при этом ожидаемым результатом является изображение, идентичное эталонному изображению.
На четвертом изображении показано, как выполнить преобразование в браузерах, не поддерживающих transform-origin , потому что код для четвертого изображения выполняет то же преобразование, что и код третьего изображения, основанный на transform-origin , но с использованием только transform без transform-origin .
Примечание. В этих примерах используется модифицированная версия фрагмента кода из вопроса Stack Overflow от Максима Куликова , а также модифицированная версия фрагмента кода из ответа Майкла Маллани , сопровождающего вопрос. Оба фрагмента кода используются в соответствии с условиями лицензии CC BY-SA .)
HTML
<h5>Reference image</h5>
<div>
<figure>
<img src="reference.png" alt="PNG reference image"/>
<figcaption>Figure 1. PNG reference image. The images following this should look exactly the same as this.</figcaption>
</figure>
</div>
<div>
<figure>
<svg xmlns="http://www.
w3.org/2000/svg" viewBox="0 0 200 200">
<circle cx="100" cy="100" r="100" stroke="none" fill="black"/>
<line x1="100" y1="0" x2="100" y2="200" stroke="rebeccapurple" stroke-width="2"/>
<line x1="0" y1="100" x2="200" y2="100" stroke="rebeccapurple" stroke-width="2"/>
<circle cx="100" cy="100" r="75" stroke="none" fill="blue"/>
<line x1="100" y1="25" x2="100" y2="175" stroke="rebeccapurple" stroke-width="1.5"/>
<line x1="25" y1="100" x2="175" y2="100" stroke="rebeccapurple" stroke-width="1.5"/>
<circle cx="100" cy="100" r="50" stroke="none" fill="red"/>
<line x1="100" y1="50" x2="100" y2="150" stroke="rebeccapurple" stroke-width="1"/>
<line x1="50" y1="100" x2="150" y2="100" stroke="rebeccapurple" stroke-width="1"/>
<circle cx="100" cy="100" r="25" stroke="none" fill="yellow"/>
<line x1="100" y1="75" x2="100" y2="125" stroke="rebeccapurple" stroke-width="0.5"/>
<line x1="75" y1="100" x2="125" y2="100" stroke="rebeccapurple" stroke-width="0.
5"/>
</svg>
<figcaption>Figure 2. SVG reference image. The images following this should look exactly the same as this.</figcaption>
</figure>
</div>
<h5>Transformation with transform-origin</h5>
<div>
<figure>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200">
<defs>
<g>
<circle cx="100" cy="100" r="100" stroke="none"/>
<line x1="100" y1="0" x2="100" y2="200" stroke="rebeccapurple" stroke-width="2"/>
<line x1="0" y1="100" x2="200" y2="100" stroke="rebeccapurple" stroke-width="2"/>
</g>
</defs>
<use href="#target-g-1" fill="black"/>
<use href="#target-g-1" fill="blue"
transform="scale(0.75 0.75)"
transform-origin="100 100"/>
<svg xmlns="http://www.w3.org/2000/svg" x="0" y="0" viewBox="0 0 200 200">
<use href="#target-g-1" fill="red"
transform="scale(0.
5 0.5)"
transform-origin="100 100"/>
<use href="#target-g-1" fill="yellow"
transform="scale(0.25 0.25)"
transform-origin="100 100"/>
</svg>
</svg>
<figcaption>Figure 3. transform-origin used.
This image should look exactly the same as the reference image in Figure 2.</figcaption>
</figure>
</div>
<h5>Transformation without transform-origin</h5>
<div>
<figure>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200">
<defs>
<g>
<circle cx="100" cy="100" r="100" stroke="none"/>
<line x1="100" y1="0" x2="100" y2="200" stroke="rebeccapurple" stroke-width="2"/>
<line x1="0" y1="100" x2="200" y2="100" stroke="rebeccapurple" stroke-width="2"/>
</g>
</defs>
<use href="#target-g-1" fill="black"/>
<use href="#target-g-1" fill="blue"
transform="translate(100 100) scale(0.
75 0.75) translate(-100 -100)"/>
<svg xmlns="http://www.w3.org/2000/svg" x="0" y="0" viewBox="0 0 200 200">
<use href="#target-g-1" fill="red"
transform="translate(100 100) scale(0.5 0.5) translate(-100 -100)"/>
<use href="#target-g-1" fill="yellow"
transform="translate(100 100) scale(0.25 0.25) translate(-100 -100)"/>
</svg>
</svg>
<figcaption>Figure 4. transform-origin not used.
This image should look exactly the same as the reference image in Figure 2.</figcaption>
</figure>
</div>
CSS
h5 {
font-family: sans-serif;
}
figure {
border: thin #c0c0c0 solid;
display: inline-flex;
flex-flow: column;
padding: 5px;
max-width: 200px;
margin: auto;
}
figcaption {
margin-top: 5px;
background-color: #222;
color: #fff;
font: smaller sans-serif;
padding: 3px;
text-align: center;
}
Result
Specifications
| Specification |
|---|
| CSS Transforms Module Level 1 # transform-origin-property |
Масштабируемая векторная графика (SVG) 1. 1 (второе издание) # PresentationAttributes |
Browser compatibility
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | WebView Android | Chrome Android | Firefox для Android | Opera Android | Safari на IOS | Samsung Internet | |
transform-origin | Yes | Yes | 77 | No | Yes | Yes Не работает с атрибутом представления | Yes | Yes | No | Yes | Yes Не работает с атрибутом представления | Yes |
- 1
- …
- 212
- 213
- 214
- 215
- 216
- …
- 367
- Next
type
Атрибут преобразования SVG — GeeksforGeeks
Улучшить статью
Сохранить статью
- Последнее обновление: 31 мар, 2022
Улучшить статью
Сохранить статью
Атрибут преобразования указывает список определений преобразования, которые применяются к элементу и его дочерним элементам.
В SVG 1.1 только этим элементам разрешено использовать атрибут преобразования ,
Синтаксис:
transform = scale() | перевести() | повернуть () |
матрица() | косойX() | skewY() Значения атрибута: Атрибут преобразования принимает функцию преобразования, упомянутую выше и описанную ниже.
- skewX(): Перечисляет наклонное преобразование по оси x в градусах.
- skewY(): Перечисляет наклонное преобразование по оси Y на градус.
- scale(): Перечисляет операцию масштабирования по x и y. Предполагается, что он равен x, если y не указан.
- rotate(): Перечисляет поворот на градус вокруг заданной точки.
- translate(): Перемещает объект по x и y.
Предполагается, что он равен 0, если y не указан. - matrix(): Он перечисляет преобразование в виде матрицы преобразования из шести значений.
Пример 1: Ниже приведен пример, иллюстрирующий использование атрибута преобразования с использованием функций преобразования rotate(), translate(), skewX() и scale().
HTML
(40) Инсульта = 90 900 "0079 "green" /> |
Вывод:
Пример 2: Ниже приведен пример, иллюстрирующий использование преобразования Атрибут 0022 с использованием функции преобразования шкалы .
HTML
|
Вывод:
Статьи по теме
transform - SVG: масштабируемая векторная графика
Преобразование определяет атрибут определения, который применяется к дочернему элементу.
html,body,svg { height:100% } Примечание: Начиная с SVG2, transform является атрибутом представления, что означает, что его можно использовать как свойство CSS. Однако имейте в виду, что между свойством CSS и атрибутом есть некоторые различия в синтаксисе. См. документацию по свойству CSS , преобразованию , чтобы узнать, какой синтаксис следует использовать в этом случае.
В качестве атрибута представления transform может использоваться любым элементом (в SVG 1.
1 его можно было использовать только этим 16 элементам: , , , , , , , , < line> , , , , , , и 0
Также как наследие SVG 1.1, и поддерживают атрибут gradientTransform , а поддерживает атрибут patternTransform , оба из которых действуют точно так же, как атрибут transform .
| Значение | <список-преобразования> |
|---|---|
| Значение по умолчанию | нет |
| Анимация | Да |
Функции преобразования
Следующие функции преобразования могут использоваться атрибутом преобразования
Предупреждение: В соответствии со спецификацией вы также должны иметь возможность использовать функции преобразования CSS.
Однако совместимость не гарантируется.
Матрица
Матрица ( Функция преобразования задает преобразование в виде матрицы преобразования из шести значений. Матрица ( a , b , c , d , e , f ) эквивалентна применению матрицы преобразования \ b & d & f \\ 0 & 0 & 1 \end{pmatrix}, которая отображает координаты из предыдущей системы координат в новую систему координат с помощью следующих матричных равенств:(xnewCoordSysynewCoordSys1)=(acebdf001)(xprevCoordSysyprevCoordSys1)=(axprevCoordSys +cyprevCoordSys+ebxprevCoordSys+dyprevCoordSys+f1) \begin{pmatrix} x_{\mathrm{newCoordSys}} \\ y_{\mathrm{newCoordSys}} \\ 1 \end{pmatrix} = \begin{pmatrix} a & c & e \\ b & d & f \\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} x_{\mathrm{prevCoordSys}} \\ y_{\mathrm{prevCoordSys}} \\ 1 \end{pmatrix } = \begin{pmatrix} a x_{\mathrm{prevCoordSys}} + c y_{\mathrm{prevCoordSys}} + e \\ b x_{\mathrm{prevCoordSys}} + d y_{\mathrm{prevCoordSys}} + f \\ 1 \end{pmatrix}
Пример
HTML, тело, SVG {высота: 100%}
w3.org/2000/svg">
Перевести
Функция преобразования translate( перемещает объект на x и y .
Если y не указан, предполагается, что он равен 0 .
Другими словами:
х новый = х старый +г новый = г старый + <у>
Пример
HTML, тело, SVG {высота: 100%}
Весы
Функция преобразования scale( определяет операцию масштабирования на x и y .
Если y не указано, предполагается, что оно равно x .
Пример
HTML, тело, SVG {высота: 100%}
Повернуть
Функция преобразования rotate( [ задает поворот на a градусов относительно заданной точки. Если необязательные параметры x и y не указаны, вращение происходит вокруг начала координат текущей пользовательской системы координат.
Если указаны необязательные параметры x и y , вращение происходит вокруг точки ( x , y ) .
Пример
HTML, тело, SVG {высота: 100%}
СкьюX
Функция преобразования skewX( ) задает преобразование наклона вдоль оси x на a градусов.
Пример
HTML, тело, SVG {высота: 100%}
Перекошенный
skewY( ) функция преобразования определяет наклонное преобразование по оси Y на a градусов.



w3.org/2000/svg" viewBox="0 0 200 200">
<circle cx="100" cy="100" r="100" stroke="none" fill="black"/>
<line x1="100" y1="0" x2="100" y2="200" stroke="rebeccapurple" stroke-width="2"/>
<line x1="0" y1="100" x2="200" y2="100" stroke="rebeccapurple" stroke-width="2"/>
<circle cx="100" cy="100" r="75" stroke="none" fill="blue"/>
<line x1="100" y1="25" x2="100" y2="175" stroke="rebeccapurple" stroke-width="1.5"/>
<line x1="25" y1="100" x2="175" y2="100" stroke="rebeccapurple" stroke-width="1.5"/>
<circle cx="100" cy="100" r="50" stroke="none" fill="red"/>
<line x1="100" y1="50" x2="100" y2="150" stroke="rebeccapurple" stroke-width="1"/>
<line x1="50" y1="100" x2="150" y2="100" stroke="rebeccapurple" stroke-width="1"/>
<circle cx="100" cy="100" r="25" stroke="none" fill="yellow"/>
<line x1="100" y1="75" x2="100" y2="125" stroke="rebeccapurple" stroke-width="0.5"/>
<line x1="75" y1="100" x2="125" y2="100" stroke="rebeccapurple" stroke-width="0.
75 0.75) translate(-100 -100)"/>
<svg xmlns="http://www.w3.org/2000/svg" x="0" y="0" viewBox="0 0 200 200">
<use href="#target-g-1" fill="red"
transform="translate(100 100) scale(0.5 0.5) translate(-100 -100)"/>
<use href="#target-g-1" fill="yellow"
transform="translate(100 100) scale(0.25 0.25) translate(-100 -100)"/>
</svg>
</svg>
<figcaption>Figure 4. transform-origin not used.
This image should look exactly the same as the reference image in Figure 2.</figcaption>
</figure>
</div>
1 (второе издание)
Работает только со свойством CSS
Предполагается, что он равен 0, если y не указан.
w3.org/2000/svg"
0 Q 10, 60 10,
w3.org/2000/svg"
0079 cy