Css последовательная анимация испорчена - PullRequest
0 голосов
/ 14 октября 2018

Я хочу получить последовательную анимацию CSS, где div перемещается вокруг границ другого div.Работает два направления (сверху вниз и справа налево), остальные, похоже, перепутаны.

У меня есть код

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  -ms-box-sizing: border-box;
}
body {
  background: #000;
}
.box-outer {
  overflow: hidden;
  margin: 50px auto;
  width: 200px;
  height: 200px;
}
.main_box {
  width: 200px;
  height: 200px;
  position: relative;
  background: #f34c4c;
  border: 10px solid #000;
}
.bar {
  position: absolute;
  width: 10px;
  height: 10px;
  background: #fff;
  top: -10px;
  left: -10px;
  animation-name: move-right, move-down, move-left, move-up;
  animation-delay: 0, 2s, 4s, 6s;
  animation-duration: 2s, 2s, 2s, 2s;
  animation-iteration-count: infinite, infinite, infinite, infinite;
}

@keyframes move-right {
  0% {
    left: -10px;
  }
  25% {
    left: 100%;
  }
}
@keyframes move-down {
  26% {
    top: -10px;
  }
  50% {
    top: 100%;
  }
}
@keyframes move-left {
  51% {
    left: 100%;
  }
  75% {
    left: -10px;
  }
}
@keyframes move-up {
  76% {
    top: 100%;
  }
  99% {
    top: -10px;
  }
}
<div class="box-outer">
  <div class="main_box">
    <div class="bar"></div>
  </div>
</div>

1 Ответ

0 голосов
/ 14 октября 2018

Это потому, что вы должны установить значения top и left в каждом из ваших ключевых кадров.
Кстати, вы можете использовать одну анимацию, а не 4.

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  -ms-box-sizing: border-box;
}

body {
  background: #000;
}

.box-outer {
  overflow: hidden;
  margin: 50px auto;
  width: 220px;
  height: 220px;
}

.main_box {
  width: 220px;
  height: 220px;
  position: relative;
  background: #f34c4c;
  border: 10px solid #000;
}

.bar {
  position: absolute;
  width: 10px;
  height: 10px;
  background: #fff;
}

.top {
  top: -10px;
  left: -10px;
  animation: move 4s infinite linear;
}

@keyframes move {
  0% {
    top: -10px;
    left: -10px;
  }
  25% {
    top: -10px;
    left: 200px;
  }
  50% {
    top: 200px;
    left: 200px;
  }
  75% {
    top: 200px;
    left: -10px;
  }
}
<div class="box-outer">
  <div class="main_box">
    <div class="bar top"></div>
  </div>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...