LightedText.vue 1.33 KB
Newer Older
hucy's avatar
hucy committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
<script setup lang="ts"></script>
<template>
  <div class="content fit center">
    <h2>
      <span style="--i: 1">H</span>
      <span style="--i: 2">a</span>
      <span style="--i: 3">p</span>
      <span style="--i: 4">p</span>
      <span style="--i: 5">y</span>
      <span style="--i: 7; margin-left: 10px">D</span>
      <span style="--i: 8">i</span>
      <span style="--i: 9">w</span>
      <span style="--i: 10">a</span>
      <span style="--i: 11">l</span>
      <span style="--i: 12">i</span>
    </h2>
  </div>
</template>
<style lang="scss" scoped>
@keyframes animate {
  0% {
    color: #fff;
    filter: blur(0px) hue-rotate(0deg);
    text-shadow: 0 0 10px #00b3ff, 0 0 20px #00b3ff, 0 0 40px #00b3ff,
      0 0 80px #00b3ff, 0 0 120px #00b3ff, 0 0 200px #00b3ff, 0 0 300px #00b3ff;
  }

  30%,
  70% {
    color: #fff;
    filter: blur(0px) hue-rotate(360deg);
    text-shadow: 0 0 10px #00b3ff, 0 0 20px #00b3ff, 0 0 40px #00b3ff,
      0 0 80px #00b3ff, 0 0 120px #00b3ff, 0 0 200px #00b3ff, 0 0 300px #00b3ff;
  }

  100% {
    color: transparent;
    box-shadow: none;
    filter: blur(0px) hue-rotate(0deg);
  }
}
.content {
  font-family: 'Ink Free', sans-serif;
  background: #111;

  h2 {
    color: transparent;
    span {
      animation: animate 3s linear infinite;
      animation-delay: calc(0.1s * var(--i));
    }
  }
}
</style>