• Nimiq Frankenstein

Animated Staking Ripple

vue
<template>
  <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 148 148" text="green inverted:white">
    <radialGradient id="a" cx="-791" cy="458" r="1" gradientTransform="matrix(-83 0 0 83.5341 -66014 -38208)" gradientUnits="userSpaceOnUse">
      <stop offset="0" stop-color="#41a38e" />
      <stop offset="1" stop-color="#21bca5" />
    </radialGradient>
    <circle cx="73.76" cy="73.76" r="51.76" stroke-opacity=".8" stroke-width="3" style="--delay:200ms" stroke="currentColor" class="ripple" />
    <circle cx="73.76" cy="73.76" r="61.76" stroke-opacity=".6" stroke-width="3" style="--delay:400ms" stroke="currentColor" class="ripple" />
    <circle cx="73.76" cy="73.76" r="71.76" stroke-opacity=".4" stroke-width="3" style="--delay:600ms" stroke="currentColor" class="ripple" />
    <circle cx="73.76" cy="73.76" r="41.76" fill="url(#a)" style="--fill: inverted:white" />
    <path stroke="neutral-0 inverted:!green" stroke-linecap="round" stroke-linejoin="round" stroke-width="4" d="M72.53 75.07v16.61m0-16.61C60.13 75.07 56 68.33 56 55c15.5 0 16.53 6.64 16.53 20.07Zm18.71-9.5c0 12.4-6.31 18.89-18.71 18.89 0-17.56 5.28-18.89 18.71-18.89Z" translate-y-3 />
  </svg>
</template>

<style scoped>
svg {
  .ripple {
    animation: fastwave 1s ease alternate infinite;
    animation-delay: var(--delay);
  }
}

@keyframes fastwave {
  0% {
    opacity: 1;
  }
  50% {
    opacity: 0.15;
  }
  100% {
    opacity: 0;
  }
}
</style>
Copy page