The logic:
-
Wrap each textual character inside a <span> tag
-
Make the new span tags relatively positioned to manipulate their location without affecting layout flow.
-
Apply randomized CSS style to each span separately (for dynamic movement) on hover
-
Remove the style after a delay
The position change is animated using the CSS transition property.