SVG-анимация поворота пути

Я пытаюсь заставить часть моего SVG вращаться, но мне кажется, что он вращается вокруг очень большой исходной точки, что сбивает с толку, потому что фактический путь невероятно мал.

Вот моя анимация элемента пути css:

.wing1 {
  transform-origin: bottom right;
  animation: spin 6s cubic-bezier(.8, 0, .2, 1) infinite;
  @keyframes spin {
    50% { transform: rotate(45deg); }
    100% { transform: rotate(0deg); }
  }
}

Вот JSFiddle (с включенным SVG): http://jsfiddle.net/c5g3sq4e/

Я пытаюсь заставить элемент крыла вращаться вокруг правого нижнего угла, чтобы он выглядел так, как будто он летит, но я никогда не выполнял вращение элемента SVG, поэтому я не уверен, что правильно указал начало координат.

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
1
0
3 326
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам необходимо добавить transform-box: fill-box;. Это заставит ограничивающую рамку объекта использовать как контрольную рамку.

.wing1 {
  transform-origin: bottom right;
  transform-box: fill-box;
  animation: spin 6s cubic-bezier(.8, 0, .2, 1) infinite;
  @keyframes spin {
    50% { transform: rotate(45deg); }
    100% { transform: rotate(0deg); }
  }
}
transform-box появился недавно. Если вы хотите быть совместимыми со старыми версиями браузеров, рассмотрите возможность использования вместо них абсолютных координат. Например. transform-origin: 736px -124px;
Paul LeBeau 13.11.2018 13:18
transform-box - недавняя вещь, используемая для исправления еще одной недавней вещи. Эта ручка: codepen.io/mandymichael/details/LEpywo (как комментарий автора) лучше всего работала в Chrome. Не больше. Еще в 2014-2015 годах ручка работала без transform-box. Теперь вам понадобится transform-box, чтобы он работал правильно.
enxaneta 13.11.2018 14:00

Не совсем. Это поведение Chrome было ошибкой. Что они сейчас исправили. transform-box был добавлен для обеспечения гибкости в интерпретации transform-origin. Теперь ваше исправление будет работать в большинстве браузеров. Но он не будет работать в Firefox год назад - с transform-box или без него. Мое предложение будет работать во всех версиях Chrome и Firefox.

Paul LeBeau 13.11.2018 14:49

Другие вопросы по теме