JSFiddle - React, Tailwind, and code Playground

by 규연 황

HTML

<svg width="452.123px" height="108.863px" viewBox="0 0 452.123 108.863">
<defs>
	<mask id="th-mask">
		<path class="th-mask-order01" fill="none" stroke="#FFFFFF" stroke-width="9" stroke-miterlimit="10" d="M55.228,25.265c0,0-5.494,27.274-30.361,27.637
			c0,0-17.306,2.154-4.972-21.642c0,0,14.167-20.204,35.458-21.672c0,0,18.876-3.656,13.542,18.011c0,0-0.332,15.437-33.833,30.385
			c0,0-32.82,9.512-34.827,29.063c0,0-0.673-17.019,20.326-10.231c0,0,31.008,12.521,77.337-0.782c0,0,53.516-16.769,48.923-55.102
			c0,0-1.196-14.342-12.931-15c0,0-16.019-2.333-25.674,15c0,0-0.519-9.333-14.587-8.667c0,0-13.069,1.333-15.402,24.333
			c0,0-2.792,17.833,14.208,34.458c0,0,9.75,13.771,38.443,12.81"/>
		<line class="th-mask-order02" fill="none" stroke="#FFFFFF" stroke-width="1" stroke-miterlimit="10" x1="135.869" y1="62.701" x2="149.687" y2="62.431"/>
		<path class="th-mask-order03" fill="none" stroke="#FFFFFF" stroke-width="5" stroke-miterlimit="10" d="M147.812,52.056l-13.155,24.759
			c0,0-6.383,12.32,4.905,4.058c0,0,9.912-9.297,16.044-13.976c0,0,5.949-8.561,9.119-3.93c0,0,1.768,1.589-2.135,7.714
			c0,0-8.308,10.674-2.668,11.774c0,0,2.098,3.821,13.057-13.102"/>
		<line class="th-mask-order04" fill="none" stroke="#FFFFFF" stroke-width="5" stroke-miterlimit="10" x1="166.812" y1="41.056" x2="142.062" y2="85.806"/>
	</mask>
	<mask id="th-logo01">
		<path id="lmt-logo01" fill="#ffffff" d="M244.36,33.258v4.483h-61.55v-4.483h25.771v-6.167h-14.498c-1.265,0-2.355-0.438-3.287-1.295
		c-0.938-0.862-1.4-1.968-1.4-3.33V11.772h38.304V5.525h-38.304V1.036h47.332v15.281h-38.242v4.268c0,0.69,0.138,1.196,0.396,1.456
		c0.26,0.289,0.703,0.425,1.363,0.425h37.321v4.625h-19.18v6.167H244.36z...

CSS

body {
	background-color: #000000;
}
svg {
  width: 90%;
  height: 90%;
  position: absolute;
  top: 0;
  left: 5%;
}

#th-mask * {
  
  stroke-dasharray: 900;
  stroke-dashoffset: 900; 
  animation-timing-function: cubic-bezier(0.645, 0.045, 0.355, 1);
  animation-iteration-count: 1;
  animation-direction: alternate;
  animation-fill-mode: forwards;
}
#th-mask .th-mask-order01 {
  animation-name: fireworks-step01-move;
  animation-delay: 0s;
  animation-duration: 2s;
}
#th-mask .th-mask-order02 {
  animation-name: fireworks-step02-move;
  animation-delay: 1s;
  animation-duration: .2s;
}
#th-mask .th-mask-order03 {
  animation-name: fireworks-step03-move;
  animation-delay: 1.1s;
  animation-duration: 1s;
}
#th-mask .th-mask-order04 {
  animation-name: fireworks-step04-move;
  animation-delay: 1.6s;
  animation-duration: .6s;
}

@keyframes fireworks-step01-move {
  100% {
    stroke-dashoffset: 0; 
  }
}
@keyframes fireworks-step02-move {
  100% {
    stroke-dashoffset: 0; 
  }
}
@keyframes fireworks-step03-move {
  100% {
    stroke-dashoffset: 0; 
  }
}
@keyframes fireworks-step04-move {
  100% {
    stroke-dashoffset: 0; 
  }
}

#th-logo01 path,
#th-logo02 path,
#th-logo03 path,
#th-logo04 path {
  stroke: #21E8AF;
  stroke-width: 1px;
  stroke-dasharray: 0;
  fill: none;	
  animation-delay: 1s;	
  animation-duration: 3s;
  stroke-dasharray: 900;
  stroke-dashoffset: 900; 
  animation-timing-function: cubic-bezier(0.645, 0.045, 0.355, 1);
  /* animation-iteration-count: 1; */
  /* animation-direction: normal; */
  animation-fill-mode: both ;
}
#th-logo01 path {
  animation-name: th-logo01-move;
}
#th-logo02 path {
  animation-name: th-logo02-move;	
}
#th-logo03 path {
  animation-name: th-logo03-move;	
}
#th-logo04 path {
  animation-name: th-logo04-move;
  	
}
@keyframes th-logo01-move {
  50% {
    stroke-dashoffset: 0; 
	animation-delay: 2s;
  }
  100% {
	stroke-dashoffset: 0; 
  }
}
@keyframes th-logo02-move {
  100% {
    stroke-dashoffset: 0; 
 ...