Как начать SVG анимацию с самого начала

Вот простой пример SVG анимации.

Суть которого состоит в том, что есть две фигуры: круг и квадрат.

При клике по кругу он начинает смещаться вправо. Квадрат начинает двигаться вправо через одну секунду после начала анимации круга. В итоге в конце анимации обе фигуры находятся справа.

При повторном клике по кругу, круг снова оказывается слева и начинает двигаться вправо. Квадрат же остаётся на месте в котором закончилась его анимация (справа). И только через одну секунду он попадает в левую часть и начинает двигаться вправо.

Как сделать так, что бы при повторном клике по кругу обе фигуры оказались слева, ну а потом начали двигаться вправо? То есть, как запустить анимацию с самого начала?

HTML

svg {
  border: 3px solid #eee;
  display: block;
  margin: 1em auto;
}

p {
  color: #aaa;
  text-align: center;
  margin: 2em 0;
}
<svg width="500" height="350">
  <circle id="orange-circle" r="30" cx="50" cy="50" fill="orange" />
  <rect id="blue-rectangle" width="50" height="50" x="25" y="200" fill="#0099cc"></rect>
  
  <animate 
           xlink:href="#orange-circle"
           attributeName="cx"
           from="50"
           to="450" 
           dur="5s"
           begin="click"
           fill="freeze" 
           id="circAnim"/>
  
  <animate 
           xlink:href="#blue-rectangle"
           attributeName="x" 
           from="50"
           to="425" 
           dur="5s"
           begin="circAnim.begin + 1s"
           fill="freeze" 
           id="rectAnim"/>
  
</svg>
<p>Кликните по кругу, чтобы анимировать его, а следом за ним и прямоугольник.</p>

Ссылка на Сodepen


Ответы (1 шт):

Автор решения: Alexandr_TT

Вопрос:

Как сделать так, что бы при повторном клике по кругу обе фигуры оказались слева, ну а потом начали двигаться вправо? То есть, как запустить анимацию с самого начала?

Удалите fill="freeze" заморозку в конце анимации и оба элемента будут тут же возвращаться на место.
Добавил команду restart="whenNotActive"/>,которая защищает от повторного запуска, пока анимация не дошла до конца.

svg {
  border: 3px solid #eee;
  display: block;
  margin: 1em auto;
}
p {
  color: #aaa;
  text-align: center;
  margin: 2em 0;
}
<svg width="500" height="350">
  <circle id="orange-circle" r="30" cx="50" cy="50" fill="orange" />
  <rect id="blue-rectangle" width="50" height="50" x="25" y="200" fill="#0099cc"></rect>
  
  <animate 
           xlink:href="#orange-circle"
           attributeName="cx"
           from="50"
           to="450" 
           dur="5s"
           begin="click"
           id="circAnim"
           restart="whenNotActive"/>
  
  <animate 
           xlink:href="#blue-rectangle"
           attributeName="x" 
           from="50"
           to="425" 
           dur="4s"
           begin="circAnim.begin + 1s"
           id="rectAnim"
           restart="whenNotActive"/>
  
</svg>
<p>Кликните по кругу, чтобы анимировать его, а следом за ним и прямоугольник.</p>

→ Ссылка