Страницы

Поиск по вопросам

воскресенье, 9 февраля 2020 г.

Как правильно задать центр вращения для анимации SVG элемента?

#html #css #svg #css_animation #smil


Есть rect, которому нужно задать анимацию поворота "туда-обратно", неважно через
CSS-анимации или через SMIL, анимация всё равно простая. Но возникает трудность с определением
точки, от которой производится поворот фигуры. Нужно чтобы он производился от середины
нижней грани прямоугольника, но как определить эти координаты? Для наглядности я привёл
свой ошибочный пример, где circle отображает точку от которой нужно совершить поворот.   




  
  
  




    


Ответы

Ответ 1



Задайте transform-origin в пикселях, как и центр круга... svg { height: 300px; width: 300px; background-color: grey; } rect { animation: anim 2s ease-in-out infinite; transform-origin: 165px 170px; } @keyframes anim { 0% {transform: rotate(-10deg)} 50% {transform: rotate(370deg)} 100% {transform: rotate(-10deg)} }

Ответ 2



Вариант SVG smil Но возникает трудность с определением точки, от которой производится поворот фигуры. Нужно чтобы он производился от середины нижней грани прямоугольника, но как определить эти координаты? Определение координат центра вращения Для прямоугольника координата X - центра вращения: координата левого верхнего угла прямоугольника (x) + width/2 x = 150+30/2 = 165px координата Y центра вращения: y = 120 + 50 = 170px Вращение одного прямоугольника svg { height: 300px; width: 300px; background-color: grey; Вращение нескольких прямоугольников Каждый прямоугольник поворачивается на разный угол. Первый прямоугольник поворачивается на 45град, - values="0 160 170;45 160 170" Второй на 90 град - values="0 160 170;90 160 170" и так далее svg { height: 45%; width: 45%; background-color: #d3d3d3; Вариант открытия веером. Запуск анимации от кнопки "Start"
Start


Комментариев нет:

Отправить комментарий