Moetion

Spotlight

Spotlight
is the new trend.

Spotlight effect is a great way to draw attention to a specific part of the page. Here, we are drawing the attention towards the text section of the page. I don't know why but I'm running out of copy.

<script setup lang="ts">
defineProps<{
  fill?: string
  extClass?: string
}>()

const baseClass = 'pointer-events-none absolute z-1 h-169% w-138% spotlight opacity-0 lg:w-84%'
</script>

<template>
  <svg :class="[baseClass, extClass]" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 3787 2842" fill="none">
    <g filter="url(#filter)">
      <ellipse
        cx="1924.71" cy="273.501" rx="1924.71" ry="273.501"
        transform="matrix(-0.822377 -0.568943 -0.568943 0.822377 3631.88 2291.09)" :fill="fill ?? 'white'"
        fill-opacity="0.21"
      />
    </g>
    <defs>
      <filter
        id="filter" x="0.860352" y="0.838989" width="3785.16" height="2840.26" filterUnits="userSpaceOnUse"
        color-interpolation-filters="sRGB"
      >
        <feFlood flood-opacity="0" result="BackgroundImageFix" />
        <feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape" />
        <feGaussianBlur stdDeviation="151" result="effect1_foregroundBlur_1065_8" />
      </filter>
    </defs>

  </svg>
</template>

<style scoped>
@keyframes spotlight {
  0% {
    opacity: 0;
    transform: translate(-72%, -62%) scale(0.5);
  }

  100% {
    opacity: 1;
    transform: translate(-50%, -40%) scale(1);
  }
}

.spotlight {
  animation: spotlight 2s ease 0.75s 1 forwards;
}
</style>