<div class="wrapper">
  <div></div>
</div>
<div class="wrapper">
  <div></div>
</div>
<div class="wrapper">
  <div></div>
</div>
<div class="wrapper">
  <div></div>
</div>
<div class="wrapper">
  <div></div>
</div>
* {
  box-sizing: border-box;
}
body {
  background: linear-gradient(to top, #A18CD1 0%, #FBC2EB 100%);
  width: 100vw;
  height: 100vh;
  display: flex;
  justify-content: center;
  align-items: center;
  margin: 0;
  padding: 0;
}
.wrapper {
  position: absolute;
  animation: x 1s ease-in-out alternate infinite 0s both;
}
.wrapper:nth-of-type(2) {
  animation-delay: 0.1s;
}
.wrapper:nth-of-type(3) {
  animation-delay: 0.2s
}
.wrapper:nth-of-type(4) {
  animation-delay: 0.3s
}
.wrapper:nth-of-type(5) {
  animation-delay: 0.4s
}
.wrapper > div {
  width: 50px;
  height: 50px;
  background-color: #fff;
  border-radius: 100%;
  margin: 40px;
  animation: y 1s linear infinite 0s both;
}
.wrapper:nth-of-type(2) > div {
  animation-delay: 0.1s;
  height: 40px;
  width: 40px;
  opacity: 0.8;
}
.wrapper:nth-of-type(3) > div {
  animation-delay: 0.2s;
  height: 40px;
  width: 40px;
  opacity: 0.6;
}
.wrapper:nth-of-type(4) > div {
  animation-delay: 0.3s;
  height: 40px;
  width: 40px;
  opacity: 0.4;
}
.wrapper:nth-of-type(5) > div {
  animation-delay: 0.4s;
  height: 40px;
  width: 40px;
  opacity: 0.2;
}
@keyframes x {
  0% {
    transform:translatex(-100px);
  }
  100% {
    transform:translatex(100px);
  }
}
@keyframes y {
  25% {
    transform:translatey(-50px);
  }
  0%,50%,100% {
    transform:translatey(0);
  }
  75% {
    transform:translatey(50px);
  }
}

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.