Почему синий круг не вращается в центре самого себя

Почему синий круг не вращается вокруг своей оси? Ниже вы можете найти мой предыдущий код.

Здесь вы можете увидеть мой CSS с пропорциональным SVG:

circle {
  animation: grow 2s infinite;
  transform-origin: center;
}

@keyframes grow {
  0% {
    transform: scale(1);
  }
  50% {
    transform: scale(0.5);
  }
  100% {
    transform: scale(1);
  }
}
<svg xmlns = "http://www.w3.org/2000/svg"
     width = "80"
     height = "110"
     version = "1.1">
     <rect width = "70"
           height = "100"
           x = "5"
           y = "5"
           fill = "white"
           stroke = "red"
           stroke-width = "10"
           rx = "5"/>
     <circle cx = "40" cy = "105" r = "3" fill = "blue"/>
</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 сценарий полностью изменился.
0
0
67
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Поскольку масштаб в SVG другой, он масштабируется по осям X и Y. Кроме того, он масштабирует свойства «cx» и «cy». Лучший способ сделать «cx» и «cy» равными 0 и использовать «перевод» в нужные вам координаты.

 <svg xmlns = "http://www.w3.org/2000/svg" width = "80" height = "110" version = "1.1">
      <rect
        width = "70"
        height = "100"
        x = "5"
        y = "5"
        fill = "white"
        stroke = "red"
        stroke-width = "10"
        rx = "5" />
    	<circle cx = "0" cy = "0" r = "3" fill = "blue" transform = "translate(40 105)">
    		<animateTransform 
                     attributeName = "transform"
    				 type = "scale" 
    				 additive = "sum" 
    				 from = "1 1" 
    				 to = "1 1" 
    				 values = "1 1; 0.5 0.5; 1 1" 
    				 begin = "0s" 
    				 dur = "2s" 
    				 repeatCount = "indefinite">
    			
    		</animateTransform>
    	</circle>	
    </svg>

Наслаждаться!

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

Вам нужно коробка-трансформер: fill-box;

circle {
  animation: grow 2s infinite;
  transform-origin: center;
  transform-box: fill-box;
}
@keyframes grow {
  0% {
    transform: scale(1);
  }
  50% {
    transform: scale(0.5);
  }
  100% {
    transform: scale(1);
  }
}
<svg
  xmlns = "http://www.w3.org/2000/svg"
  width = "80"
  height = "110"
  version = "1.1"
>
  <rect
    width = "70"
    height = "100"
    x = "5"
    y = "5"
    fill = "white"
    stroke = "red"
    stroke-width = "10"
    rx = "5"
  />
  <circle cx = "40" cy = "105" r = "3" fill = "blue" />
</svg>

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