JSFiddle - React, Tailwind, and code Playground
by wllai2001
HTML
<div class="reaction-3vwAF2 shakeReaction-h226gy" style="opacity: 1; background: rgba(198, 176, 139, 0.2);">
<div class="reactionInner-YJjOtT" aria-expanded="false" aria-disabled="false" aria-label="hanaBlankies,64 個超級反應,按下就能使用超級反應" aria-pressed="false" role="button" tabindex="0">
<div class="burstGlow-3AZMzF" style="box-shadow: rgb(240, 234, 224) 0px 0px 16px;"></div>
<div>
<div class="effectsWrapper-1M6qbb">
<div class="effect-3LmGg0 effect-2X-be6" style="transform: translateY(68px); height: 120px; width: 120px;">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 300 300" width="300" height="300" preserveAspectRatio="xMidYMid meet" style="width: 100%; height: 100%; transform: translate3d(0px, 0px, 0px); content-visibility: visible;">
<defs>
<clipPath id="__lottie_element_9312">
<rect width="300" height="300" x="0" y="0"></rect>
</clipPath>
<image xlink:href="https://cdn.discordapp.com/emojis/1150481634638975136.gif?size=32&quality=lossless"></image>
<mask id="__lottie_element_9334" mask-type="alpha">
<g transform="matrix(1,0,0,1,0,0)" opacity="1" style="display: block;">
<path fill="rgb(140,87,174)" fill-opacity="1" d=" M150,242.9 C150,242.9 150,242.9 150,242.9 C150,242.9 150,242.9 150,242.9 C150,242.9 150,242.9 150,242.9 C150,242.9 150,242.9 150,242.9z M210,57.65 C210,57.65 210,244.65 210,244.65 C210,244.65 90,244.65 90,244.65 C90,244.65 90,57.65 90,57.65 C90,57.65 210,57.65 210,57.65z M150,57.15 C150,57.15 150,57.15 150,57.15 C150,57.15 150,57.15 150,57.15 C150,57.15 150,57.15 150,57.15 C150,57.15 150,57.15 150,57.15z"></path>
<g opacity="1" transform="matrix(1,0,0,1,150,242.89599609375)"></g>
<g opacity="1" transform="matrix(1,0,0,1,150,57.150001525878906)"></g>
...
CSS
.effect-3LmGg0{position:absolute;pointer-events:none;bottom:0;overflow:hidden}
.effect-2X-be6{margin-bottom:-.125rem}
.effectsWrapper-1M6qbb {
position: relative;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
height: 100%;
z-index: 1;
}
.reaction-3vwAF2.shakeReaction-h226gy {
-webkit-animation: shake-2By5IS .5s;
animation: shake-2By5IS .5s;
-webkit-animation-iteration-count: 1;
animation-iteration-count: 1;
}
@-webkit-keyframes shake-2By5IS {
0% {
-webkit-transform: translate(1px, 1px) rotate(0deg);
transform: translate(1px, 1px) rotate(0deg);
}
10% {
-webkit-transform: translate(-1px, -1px) rotate(-1deg);
transform: translate(-1px, -1px) rotate(-1deg);
}
20% {
-webkit-transform: translate(-2px) rotate(1deg);
transform: translate(-2px) rotate(1deg);
}
30% {
-webkit-transform: translate(2px, 1px) rotate(0deg);
transform: translate(2px, 1px) rotate(0deg);
}
40% {
-webkit-transform: translate(1px, -1px) rotate(1deg);
transform: translate(1px, -1px) rotate(1deg);
}
50% {
-webkit-transform: translate(-1px, 1px) rotate(-1deg);
transform: translate(-1px, 1px) rotate(-1deg);
}
60% {
-webkit-transform: translate(-2px, 1px) rotate(0deg);
transform: translate(-2px, 1px) rotate(0deg);
}
70% {
-webkit-transform: translate(2px, 1px) rotate(-1deg);
transform: translate(2px, 1px) rotate(-1deg);
}
80% {
-webkit-transform: translate(-1px, -1px) rotate(1deg);
transform: translate(-1px, -1px) rotate(1deg);
}
90% {
-webkit-transform: translate(1px, 1px) rotate(0deg);
transform: translate(1px, 1px) rotate(0deg);
}
to {
-webkit-transform: translate(1px, -1px) rotate(-1deg);
transform: translate(1px, -1px) rotate(-1deg);
}
}
@keyframes shake-2By5IS {
0% {
-webkit-transform: translate(1px, 1px) rotate(0deg);
transform:...