SDS Motion Forge

Interactive animation · .sds-jelly-hover

Jelly Hover

Squash + stretch spring on hover. Add the class .sds-jelly-hover to any element — it plays once in response to the cursor, with no JavaScript beyond the optional cursor engine.

Live demo

Jelly Hover

Demo uses this site's neutral theme; override --sds-primary to match your brand.

Quick start

<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@salkomdesignstudio/sds-motion-forge/dist/categories/text.min.css" />

<h2 class="sds-jelly-hover">Jelly Hover</h2>

Loads only the interactive bundle (core is included).Prefer one file? Use https://cdn.jsdelivr.net/npm/@salkomdesignstudio/sds-motion-forge/dist/motion.min.css (all 604 effects).

How it works

Plays as the cursor moves over it (JS engine). It animates the element's appearance — compositor-only, so it never causes page reflow. Timing is fixed for this effect, but you can still override animation-duration/timing-function on the element. Requires motion-interactive.min.js (7 KB, zero-config) — it wires all events and respects prefers-reduced-motion and touch devices.

Technical details

Class.sds-jelly-hover
CategoryInteractive
Runsplays once, in response to the cursor
Animated propertiesn/a
Compositor-onlyYes — transform/opacity only, no layout reflow
Needs child elementsNo
Needs per-character spansNo
JavaScriptmotion-interactive
Keyframesn/a
Design tokensn/a
Since4.0.3

Copy-paste code

HTML
<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@salkomdesignstudio/sds-motion-forge/dist/motion.min.css" />
  </head>
  <body>
    <h2 class="sds-jelly-hover">Jelly Hover</h2>
    <script src="https://cdn.jsdelivr.net/npm/@salkomdesignstudio/sds-motion-forge/dist/motion-interactive.min.js" defer></script>
  </body>
</html>
React / Next.js
import "@salkomdesignstudio/sds-motion-forge/dist/motion.min.css";
import "@salkomdesignstudio/sds-motion-forge/dist/motion-interactive.min.js"; // cursor engine (client-side only)

export default function Demo() {
  return (
    <h2 className="sds-jelly-hover">Jelly Hover</h2>
  );
}
Angular
// angular.json → architect.build.options.styles:
//   "node_modules/@salkomdesignstudio/sds-motion-forge/dist/motion.min.css"
import { Component } from '@angular/core';

@Component({
  selector: 'app-demo',
  standalone: true,
  template: `
    <h2 class="sds-jelly-hover">Jelly Hover</h2>
  `,
})
export class DemoComponent {}
Tailwind CSS
/* app.css — Tailwind v4 */
@import "tailwindcss";
@import "@salkomdesignstudio/sds-motion-forge/dist/motion.min.css";

/* then use the class like any other: */
<h2 class="sds-jelly-hover">Jelly Hover</h2>

Typed React, Angular, Tailwind and Web Components wrappers live in packages/ in the repository and are not yet published to npm; the snippets above need only the CSS.

Related animations

All interactive animations · Installation & usage docs · Custom bundle builder