پیش‌نمایش زنده
کد HTML
<div class="wrapper">
  <div class="container">
    <div class="wave">
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
    </div>
    <div data-level="1" class="wave">
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
    </div>
    <div data-level="2" class="wave">
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
    </div>
    <div data-level="3" class="wave">
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
      <div class="bar"></div>
    </div>
  </div>
</div>
کد CSS
.container {
  padding: 0;
  margin: 0 auto;
  box-sizing: border-box;
  position: relative;
  width: 220px;
  height: 220px;
  border-radius: 50%;
  overflow: hidden;
}

.wave {
  padding: 0;
  margin: 0 auto;
  box-sizing: border-box;
  position: absolute;
  width: 100%;
  height: 100%;
  display: flex;
  align-items: flex-end;
}
.wave:nth-child(1) .bar {
  padding: 0;
  margin: 0 auto;
  box-sizing: border-box;
  width: 2px;
  height: 220px;
  background-color: #ccc;
}
.wave:nth-child(n + 2) .bar {
  padding: 0;
  margin: 0 auto;
  box-sizing: border-box;
  -webkit-animation:
    barHeight 3.9s infinite ease-in-out alternate,
    barSkew 3.9s infinite ease-in-out alternate;
  animation:
    barHeight 3.9s infinite ease-in-out alternate,
    barSkew 3.9s infinite ease-in-out alternate;
}
.wave .bar:nth-child(1) {
  -webkit-animation-delay: calc(var(--f) * 0), calc(var(--f) * 0 - 1.95s);
  animation-delay: calc(var(--f) * 0), calc(var(--f) * 0 - 1.95s);
}
.wave .bar:nth-child(2) {
  -webkit-animation-delay: calc(var(--f) * 1), calc(var(--f) * 1 - 1.95s);
  animation-delay: calc(var(--f) * 1), calc(var(--f) * 1 - 1.95s);
}
.wave .bar:nth-child(3) {
  -webkit-animation-delay: calc(var(--f) * 2), calc(var(--f) * 2 - 1.95s);
  animation-delay: calc(var(--f) * 2), calc(var(--f) * 2 - 1.95s);
}
.wave .bar:nth-child(4) {
  -webkit-animation-delay: calc(var(--f) * 3), calc(var(--f) * 3 - 1.95s);
  animation-delay: calc(var(--f) * 3), calc(var(--f) * 3 - 1.95s);
}
.wave .bar:nth-child(5) {
  -webkit-animation-delay: calc(var(--f) * 4), calc(var(--f) * 4 - 1.95s);
  animation-delay: calc(var(--f) * 4), calc(var(--f) * 4 - 1.95s);
}
.wave .bar:nth-child(6) {
  -webkit-animation-delay: calc(var(--f) * 5), calc(var(--f) * 5 - 1.95s);
  animation-delay: calc(var(--f) * 5), calc(var(--f) * 5 - 1.95s);
}
.wave .bar:nth-child(7) {
  -webkit-animation-delay: calc(var(--f) * 6), calc(var(--f) * 6 - 1.95s);
  animation-delay: calc(var(--f) * 6), calc(var(--f) * 6 - 1.95s);
}
.wave .bar:nth-child(8) {
  -webkit-animation-delay: calc(var(--f) * 7), calc(var(--f) * 7 - 1.95s);
  animation-delay: calc(var(--f) * 7), calc(var(--f) * 7 - 1.95s);
}
.wave .bar:nth-child(9) {
  -webkit-animation-delay: calc(var(--f) * 8), calc(var(--f) * 8 - 1.95s);
  animation-delay: calc(var(--f) * 8), calc(var(--f) * 8 - 1.95s);
}
.wave .bar:nth-child(10) {
  -webkit-animation-delay: calc(var(--f) * 9), calc(var(--f) * 9 - 1.95s);
  animation-delay: calc(var(--f) * 9), calc(var(--f) * 9 - 1.95s);
}
.wave .bar:nth-child(11) {
  -webkit-animation-delay: calc(var(--f) * 10), calc(var(--f) * 10 - 1.95s);
  animation-delay: calc(var(--f) * 10), calc(var(--f) * 10 - 1.95s);
}
.wave .bar:nth-child(12) {
  -webkit-animation-delay: calc(var(--f) * 11), calc(var(--f) * 11 - 1.95s);
  animation-delay: calc(var(--f) * 11), calc(var(--f) * 11 - 1.95s);
}
.wave .bar:nth-child(13) {
  -webkit-animation-delay: calc(var(--f) * 12), calc(var(--f) * 12 - 1.95s);
  animation-delay: calc(var(--f) * 12), calc(var(--f) * 12 - 1.95s);
}
.wave .bar:nth-child(14) {
  -webkit-animation-delay: calc(var(--f) * 13), calc(var(--f) * 13 - 1.95s);
  animation-delay: calc(var(--f) * 13), calc(var(--f) * 13 - 1.95s);
}
.wave .bar:nth-child(15) {
  -webkit-animation-delay: calc(var(--f) * 14), calc(var(--f) * 14 - 1.95s);
  animation-delay: calc(var(--f) * 14), calc(var(--f) * 14 - 1.95s);
}
.wave .bar:nth-child(16) {
  -webkit-animation-delay: calc(var(--f) * 15), calc(var(--f) * 15 - 1.95s);
  animation-delay: calc(var(--f) * 15), calc(var(--f) * 15 - 1.95s);
}
.wave .bar:nth-child(17) {
  -webkit-animation-delay: calc(var(--f) * 16), calc(var(--f) * 16 - 1.95s);
  animation-delay: calc(var(--f) * 16), calc(var(--f) * 16 - 1.95s);
}
.wave .bar:nth-child(18) {
  -webkit-animation-delay: calc(var(--f) * 17), calc(var(--f) * 17 - 1.95s);
  animation-delay: calc(var(--f) * 17), calc(var(--f) * 17 - 1.95s);
}
.wave .bar:nth-child(19) {
  -webkit-animation-delay: calc(var(--f) * 18), calc(var(--f) * 18 - 1.95s);
  animation-delay: calc(var(--f) * 18), calc(var(--f) * 18 - 1.95s);
}
.wave .bar:nth-child(20) {
  -webkit-animation-delay: calc(var(--f) * 19), calc(var(--f) * 19 - 1.95s);
  animation-delay: calc(var(--f) * 19), calc(var(--f) * 19 - 1.95s);
}
.wave .bar:nth-child(21) {
  -webkit-animation-delay: calc(var(--f) * 20), calc(var(--f) * 20 - 1.95s);
  animation-delay: calc(var(--f) * 20), calc(var(--f) * 20 - 1.95s);
}
.wave .bar:nth-child(22) {
  -webkit-animation-delay: calc(var(--f) * 21), calc(var(--f) * 21 - 1.95s);
  animation-delay: calc(var(--f) * 21), calc(var(--f) * 21 - 1.95s);
}
.wave .bar:nth-child(23) {
  -webkit-animation-delay: calc(var(--f) * 22), calc(var(--f) * 22 - 1.95s);
  animation-delay: calc(var(--f) * 22), calc(var(--f) * 22 - 1.95s);
}
.wave .bar:nth-child(24) {
  -webkit-animation-delay: calc(var(--f) * 23), calc(var(--f) * 23 - 1.95s);
  animation-delay: calc(var(--f) * 23), calc(var(--f) * 23 - 1.95s);
}
.wave[data-level="1"] .bar {
  width: 11px;
  background-color: #fff;
  --f: -0.24375s;
  --h: 40px;
}
.wave[data-level="2"] .bar {
  width: 8px;
  background-color: #eee;
  --f: -0.4875s;
  --h: 100px;
}
.wave[data-level="3"] .bar {
  width: 5px;
  background-color: #ddd;
  --f: -0.325s;
  --h: 120px;
}

@-webkit-keyframes barHeight {
  from {
    height: var(--h);
  }
  to {
    height: calc(var(--h) + 50px);
  }
}

@keyframes barHeight {
  from {
    height: var(--h);
  }
  to {
    height: calc(var(--h) + 50px);
  }
}
@-webkit-keyframes barSkew {
  from {
    transform: skewY(30deg);
  }
  to {
    transform: skewY(-30deg);
  }
}
@keyframes barSkew {
  from {
    transform: skewY(30deg);
  }
  to {
    transform: skewY(-30deg);
  }
}
نوع: loader
تاریخ ایجاد: 2026/06/06
آخرین بروزرسانی: 2026/06/06