Движение элемента по часовой стрелке

Только начинаю изучать веб. Подскажите пожалуйста, как заставить квадрат перемещаться по часовой стрелке и при наведении мышки он прекращал движение, а если убрать её то продолжал движение, 2 дня ломаю голову, никак не могу понять

function animation(args, elem) {
  var speed = 20;
  var x = 0;
  var y = 0;
  var right = true;
  var down;
  var left;
  var up;
  var n = -10;
  setInterval(function() {
    if (right) {
      elem.style.left += -n + 'px';
      x += -n;
      if (x >= 200) {
        down = true;
        right = false;
      }
    }
    if (down) {
      elem.style.top += -n + 'px';
      y += -n;
      if (y >= 200) {
        down = false;
        left = true;
      }
    }
    if (left) {
      elem.style.left += n + 'px';
      x += n;
      if (x <= 0) {
        left = false;
        up = true;
      }
    }
    if (up) {
      elem.style.top += n + 'px';
      y += n;
      if (y <= 0) {
        up = false;
        right = true;
      }
    }
  }, speed)
}
.content {
  position: absolute;
  width: 80%;
  height: 80%;
  background: blue;
}

.css {
  position: absolute;
  width: 30px;
  height: 30px;
  left: 10px;
  top: 10px;
  border: 3px solid #fff;
  background: black;
  cursor: pointer;
}
<div class="content">
  <div class="css" onClick="animation({}, this);"></div>
</div>


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

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

Тут можно обойтись даже без JS, с помощью CSS анимации

.content{
    position: absolute;
    width: 150px;
    height: 150px;
    background: blue;
}
.css {
    position: absolute;
    width: 30px;
    height: 30px;
    left: 10px;
    top: 10px;
    border: 3px solid #fff;
    background: black;
    cursor: pointer;
    animation: clock 5s infinite;
    animation-timing-function: linear;
}
.content:hover .css{
    animation-play-state: paused;
}
@keyframes clock{

  0% {
    left: 10px;
    top: 10px;
  }
  25% {
    left: calc(100% - 45px);
    top: 10px;
    transition: 1s;
  }
  50% {
    left: calc(100% - 45px);
    right: 10px;
    top: calc(100% - 45px);
    bottom: 10px;
    transition: 1s;
  }
  75% {
    top: calc(100% - 45px);
    transition: 1s;
    left: 10px;
    right: 10px;
  }
  100% {
    left: 10px;
    right: 10px;
    transition: 1s;
  }
}
<div class = "content">
    <div class="css"></div>
</div>

→ Ссылка