Skip to content

SAPTARSHI-coder/EaseMotion-css

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9,641 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
EaseMotion CSS

⚡ EaseMotion CSS

A zero-dependency, animation-first CSS framework for faster, more expressive UI.

EaseMotion CSS lets you build polished interfaces with readable class names such as ease-fade-in, ease-slide-up, and ease-hover-grow. No build step, no complex setup, and no need to memorize shorthand.


npm version Sponsor Discord npm downloads jsDelivr CDN GitHub Stars GitHub Forks GitHub Contributors Merged PRs Closed Issues Open PRs Open Issues License: MIT GSSoC Maintainer


Important

Temporary Contribution Guidelines & Freeze Notice

Due to the high volume of contributions and multiple merge conflicts affecting framework stability, PRs modifying core files, workflows, configs, or shared framework code are temporarily restricted.

For now, only self-contained submissions inside submissions/examples/* will be reviewed and merged.

This is being done to stabilize the repository, reduce breaking changes, and ensure contributor work is preserved without conflicts or accidental overwrites.

Core contribution access may reopen once the framework structure and validation systems are fully stabilized.


Table of Contents 📑


🚀 Quick Start

<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link
  href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap"
  rel="stylesheet"
/>
<link
  rel="stylesheet"
  href="https://cdn.jsdelivr.net/gh/SAPTARSHI-coder/EaseMotion-css@main/easemotion.min.css"
/>

📖 Documentation · 🎮 Live Demo · 📦 npm · 🤝 Contributing

Controlling looping animations

Looping animations such as .ease-bounce, .ease-pulse, .ease-rotate, .ease-ping, and .ease-typewriter-loop use the CSS variable --ease-animation-iterations.

The default value is infinite, which keeps existing behavior unchanged. If you want a looping animation to run only a few times, set the variable once in your project:

:root {
  --ease-animation-iterations: 3;
}

This will apply the iteration count to all looping animation utilities by default.


Support the Project ⭐

If EaseMotion CSS saves you time or helps your learning journey, please consider supporting it.

Most people simply forget. This is your reminder. 😊

Action Why it matters
💖 Sponsor on GitHub Directly support the creator to keep the project active and stable
Star the repo Helps more developers discover the project
🍴 Fork and contribute Your idea could become a real framework class
🐞 Report an issue Bugs you catch make it better for everyone
💡 Suggest a feature Good ideas ship faster than you think

Stars cost nothing and mean everything to an independent open-source project. If this saved you even 10 minutes, it's worth a click.


Project Statistics 📊

Metric Value
📦 npm Package easemotion-css
🌐 CDN cdn.jsdelivr.net/gh/...
Classes 80+ utility classes, 20+ animation classes
🎨 Components Buttons (6 variants), Cards (13 variants)
🔑 Design Tokens 60+ CSS custom properties
⚖️ Bundle Size ~15 kB (unpacked: ~62 kB)
📜 License MIT
🔧 Build Step ❌ None required
🏗️ Dependencies ❌ Zero

Browser Compatibility 🌐

EaseMotion CSS is built for modern evergreen browsers and relies on CSS3 custom properties, CSS animations, Flexbox, CSS Grid, transforms, transitions, and keyframe animations.

| Browser | Minimum Version | backdrop-filter | aspect-ratio | CSS variables | Animations | Notes | | ------- | --------------- | ------------------------------------------------- | -------------- | ------------- | ---------- | --------- | --- | | Chrome | 49+ | Supported | Supported | Supported | Supported | | | Firefox | 31+ | Supported | Supported | Supported | Supported | | | Safari | 9.1+ | Supported with -webkit-backdrop-filter fallback | Supported | Supported | Supported | Supported | | | Edge | 15+ | Supported | Supported | Supported | Supported | | | Opera | 36+ | Supported | Supported | Supported | Supported | |

Internet Explorer (IE 11 and earlier) is not supported.


What is EaseMotion CSS? ✨

EaseMotion CSS is a curated, animation-first CSS framework where class names read like plain English. It is designed for developers who want expressive motion and clean HTML without a build tool or complex configuration.

<div class="ease-center ease-fade-in">
  <h1 class="ease-slide-up ease-delay-100">Build faster.</h1>
  <p class="ease-slide-up ease-delay-200">Animation-first CSS for humans.</p>
  <button
    class="ease-btn ease-btn-primary ease-btn-pill ease-hover-grow ease-delay-300"
  >
    Get Started →
  </button>
</div>

Why it is easy to use

  • Readable utility names such as ease-center and ease-hover-grow
  • Zero dependency setup with CDN or npm
  • Ready-to-use motion, layout, and component helpers
  • Easy customization through CSS variables

Why EaseMotion CSS? 🆚

Vanilla CSS Tailwind CSS EaseMotion CSS
Setup Write from scratch Build step + config Link one file
Readability ✅ High ❌ Low (px-4 flex gap-x-2) High (ease-center)
Animations ⚙️ Manual 🔸 Minimal First-class
Zero config
Quality control You You Curated by maintainer
CDN ready N/A Yes
Learning curve High Medium Near zero

Quick Start ⚡

Option 1 — CDN (fastest, zero setup, recommended)

<!DOCTYPE html>
<html>
  <head>
    <link rel="preconnect" href="https://fonts.googleapis.com" />
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
    <link
      href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap"
      rel="stylesheet"
    />
    <link
      rel="stylesheet"
      href="https://cdn.jsdelivr.net/gh/SAPTARSHI-coder/EaseMotion-css@main/easemotion.min.css"
    />
  </head>
  <body>
    <div class="ease-center ease-fade-in">
      <h1>Hello, EaseMotion!</h1>
    </div>
  </body>
</html>

Powered by jsDelivr — globally cached, always fast, no account needed. The CDN link is live the moment you paste it.

Alternative CDN Providers

EaseMotion CSS can also be loaded using alternative CDN providers.

jsDelivr (recommended)

<link
  rel="stylesheet"
  href="https://cdn.jsdelivr.net/gh/SAPTARSHI-coder/EaseMotion-css@main/easemotion.min.css"
/>

unpkg

<link
  rel="stylesheet"
  href="https://unpkg.com/easemotion-css/easemotion.min.css"
/>

GitHub Raw CDN

<link
  rel="stylesheet"
  href="https://raw.githubusercontent.com/SAPTARSHI-coder/EaseMotion-css/main/easemotion.min.css"
/>

jsDelivr is recommended for production usage because it provides global caching and better reliability.

Option 2 — npm

npm install easemotion-css

Then in your HTML:

<link rel="stylesheet" href="node_modules/easemotion-css/easemotion.min.css" />

Or in CSS / PostCSS / Sass:

@import "easemotion-css/easemotion.min.css";

Option 3 — Granular imports (pick only what you need)

<!-- Font (optional — for Inter typography) -->
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link
  href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap"
  rel="stylesheet"
/>

<!-- Core (always required — load in this exact order) -->
<link
  rel="stylesheet"
  href="https://cdn.jsdelivr.net/npm/easemotion-css/core/variables.css"
/>
<link
  rel="stylesheet"
  href="https://cdn.jsdelivr.net/npm/easemotion-css/core/base.css"
/>
<link
  rel="stylesheet"
  href="https://cdn.jsdelivr.net/npm/easemotion-css/core/animations.css"
/>
<link
  rel="stylesheet"
  href="https://cdn.jsdelivr.net/npm/easemotion-css/core/utilities.css"
/>

<!-- Components — add only what you use -->
<link
  rel="stylesheet"
  href="https://cdn.jsdelivr.net/npm/easemotion-css/components/buttons.css"
/>
<link
  rel="stylesheet"
  href="https://cdn.jsdelivr.net/npm/easemotion-css/components/cards.css"
/>

Option 4 — Modular animation imports (load only what you need)

<link
  rel="stylesheet"
  href="https://cdn.jsdelivr.net/npm/easemotion-css/easemotion/variables.css"
/>
<link
  rel="stylesheet"
  href="https://cdn.jsdelivr.net/npm/easemotion-css/easemotion/fade.css"
/>
<link
  rel="stylesheet"
  href="https://cdn.jsdelivr.net/npm/easemotion-css/easemotion/slide.css"
/>
<!-- Add only the animation categories you need -->

Full bundle

<link
  rel="stylesheet"
  href="https://cdn.jsdelivr.net/npm/easemotion-css/easemotion/all.css"
/>

⚠️ easemotion/variables.css must always load before modular animation files. It provides the shared custom properties used by all animation categories.

Philosophy 🧠

EaseMotion CSS is not just a CSS library — it is a design language.

"If you can say it in English, you should be able to write it as a class."

<!-- Center this -->
<div class="ease-center">
  <!-- Fade this in -->
  <h1 class="ease-fade-in">
    <!-- Make it grow on hover --><button class="ease-hover-grow">
      <!-- Slide up with delay -->
      <p class="ease-slide-up ease-delay-200"></p>
    </button>
  </h1>
</div>

No documentation lookup required. The class name is the documentation.

Four principles that never get broken

Principle What it means
Human-readable Class names describe behavior in plain English
Animation-first Motion is a first-class citizen, not an afterthought
Composable Stack any classes freely — no specificity wars, ever
Curated Every single class is maintainer-reviewed before release

How the curation pipeline works

1. Contributors submit raw HTML + CSS
         ↓
2. Maintainer reviews and evaluates fit
         ↓
3. Code is converted into EaseMotion CSS format
   (ease-* naming · CSS variables · accessibility)
         ↓
4. Integrated into core/ or components/
         ↓
5. Released, documented, and credited

Every class in the framework has passed through this process. The curation is what makes EaseMotion CSS consistent.


Usage & Examples 💡

Animations

<!-- Entrance animations (run on page load) -->
<h1 class="ease-fade-in">Fade in</h1>
<h2 class="ease-slide-up">Slide up</h2>
<h3 class="ease-slide-in-left">Slide left</h3>
<h4 class="ease-slide-in-right">Slide right</h4>
<h5 class="ease-zoom-in">Zoom in</h5>
<h6 class="ease-flip">3D flip</h6>

<!-- Staggered sequence — each item starts 100ms later -->
<div class="ease-slide-up ease-delay-100">First</div>
<div class="ease-slide-up ease-delay-200">Second</div>
<div class="ease-slide-up ease-delay-300">Third</div>

Duration Helpers

<div class="ease-slide-up ease-duration-fast">Fast animation</div>
<div class="ease-slide-up ease-duration-slow">Slow animation</div>
Class Duration
ease-duration-fast 150ms
ease-duration-medium 300ms
ease-duration-slow 600ms
Bouncing
Pulsing
Rotating
Ping

You can customize the iteration count of looping animations:

:root {
  --ease-animation-iterations: 3;
}

By default, the value is infinite, preserving existing behavior.

Scroll-Triggered Animations (Ease Reveal)

To use .ease-reveal and have elements animate when scrolled into view, you must also include the reveal.js script in your HTML:

<!-- Add this before closing </body> tag -->
<script src="https://cdn.jsdelivr.net/npm/easemotion-css/core/reveal.js"></script>

Then simply add .ease-reveal along with an animation class:

<div class="ease-reveal ease-slide-up">
  This animates when scrolled into view!
</div>

Hover Effects

<button class="ease-hover-grow">Scales up on hover</button>
<div class="ease-hover-morph-card">Morph</div>
<div class="ease-hover-glow">Primary color glow</div>
<div class="ease-hover-lift">Lifts with shadow</div>
<div class="ease-hover-shimmer">Shimmer sweep effect</div>
<a class="ease-hover-underline">Animated underline</a>
<span class="ease-hover-bounce-text">Bounce!</span>

Applies a quick squish animation during hover, focus, and active interactions.

Layout Utilities

<!-- Centering (the most-used utility) -->
<div class="ease-center">Perfectly centered</div>

<!-- Flexbox -->
<div class="ease-flex ease-justify-between ease-items-center ease-gap-4">
  <span>Left</span>
  <span class="ease-self-end">Right</span>
</div>

<!-- Flex wrap utilities -->
<div class="ease-flex ease-flex-wrap ease-gap-3">Wrap</div>
<div class="ease-flex ease-flex-nowrap ease-gap-3">No wrap</div>
<div class="ease-flex ease-flex-wrap-reverse ease-gap-3">Reverse wrap</div>

<!-- Align self utilities -->
<div class="ease-flex ease-items-stretch ease-gap-3">
  <span class="ease-self-start">Start</span>
  <span class="ease-self-center">Center</span>
  <span class="ease-self-end">End</span>
  <span class="ease-self-stretch">Stretch</span>
</div>

<!-- Responsive auto-fit grid (no media queries needed) -->
<div class="ease-grid ease-grid-auto ease-gap-6">
  <div class="ease-card">Card 1</div>
  <div class="ease-card">Card 2</div>
  <div class="ease-card">Card 3</div>
</div>

<!-- Grid placement utilities -->
<div class="ease-grid ease-grid-cols-4 ease-place-center ease-gap-4">
  <div class="ease-col-span-2">Centered span 2</div>
  <div class="ease-col-span-1">Span 1</div>
  <div class="ease-col-span-1">Span 1</div>
</div>
<div class="ease-grid ease-grid-cols-3 ease-place-start ease-gap-4">Start</div>
<div class="ease-grid ease-grid-cols-3 ease-place-end ease-gap-4">End</div>

Align Self Utilities

<div class="ease-flex">
  <div class="ease-self-start">Start</div>
  <div class="ease-self-center">Center</div>
  <div class="ease-self-end">End</div>
  <div class="ease-self-stretch">Stretch</div>
</div>

Available Classes

  • .ease-self-startalign-self: flex-start
  • .ease-self-centeralign-self: center
  • .ease-self-endalign-self: flex-end
  • .ease-self-stretchalign-self: stretch

Hover Animation Examples

Common hover-triggered animation examples are available for:

  • Buttons
  • Cards
  • Images

Example showcase:

  • hover-animation-showcase
  • hover-sweep

Buttons

<!-- Variants -->
<button class="ease-btn ease-btn-primary">Primary</button>
<button class="ease-btn ease-btn-success">Success</button>
<button class="ease-btn ease-btn-danger">Danger</button>
<button class="ease-btn ease-btn-outline">Outline</button>
<button class="ease-btn ease-btn-ghost">Ghost</button>

<!-- With hover animation -->
<button class="ease-btn ease-btn-primary ease-btn-hover">Animated</button>

<!-- With squish button -->
<button class="ease-btn ease-btn-primary ease-squish-button">Squish Me</button>

<!-- Sizes + shapes -->
<button class="ease-btn ease-btn-primary ease-btn-sm">Small</button>
<button class="ease-btn ease-btn-primary ease-btn-lg ease-btn-pill">
  Large Pill
</button>

Cards

<!-- Hover card with shadow -->
<div class="ease-card ease-card-shadow ease-card-hover">
  <div class="ease-card-header">
    <h3 class="ease-card-title">Title</h3>
  </div>
  <div class="ease-card-body"><p>Content goes here.</p></div>
  <div class="ease-card-footer">
    <button class="ease-btn ease-btn-primary ease-btn-sm">Action</button>
  </div>
</div>

<!-- Glassmorphism -->
<div class="ease-card ease-card-glass">Glass card</div>

<!-- Neumorphic -->
<div class="ease-card ease-card-neumorphic">Soft UI card</div>

<!-- Accent border -->
<div class="ease-card ease-card-accent">Highlighted card</div>

Navigation

<nav class="ease-navbar-glass" aria-label="Primary navigation">
  <div class="ease-navbar-brand">EaseMotion</div>
  <div class="ease-navbar-menu">
    <a class="ease-navbar-item" href="#">Home</a>
    <a class="ease-navbar-item" href="#">Features</a>
    <a class="ease-navbar-item" href="#">Contact</a>
  </div>
</nav>
<nav
  class="ease-navbar-glass ease-navbar-glass-sticky"
  aria-label="Sticky navigation"
>
  <div class="ease-navbar-brand">Sticky Nav</div>
  <div class="ease-navbar-menu">
    <a class="ease-navbar-item" href="#">Overview</a>
    <a class="ease-navbar-item" href="#">Docs</a>
  </div>
</nav>
<nav
  class="ease-navbar-glass ease-navbar-glass-blur"
  aria-label="Blurred navbar"
>
  <div class="ease-navbar-brand">Deep Blur</div>
  <div class="ease-navbar-menu">
    <a class="ease-navbar-item" href="#">Product</a>
    <a class="ease-navbar-item" href="#">Support</a>
  </div>
</nav>

Build a Hero Section in 5 Lines

<section class="ease-center ease-padding-16">
  <h1 class="ease-fade-in">Build faster.</h1>
  <p class="ease-slide-up ease-delay-200">Animation-first CSS for humans.</p>
  <button
    class="ease-btn ease-btn-primary ease-btn-lg ease-btn-pill ease-hover-grow ease-delay-300"
  >
    Get Started →
  </button>
</section>

Customization ⚙️

Override any CSS custom property to theme the entire framework — no Sass, no PostCSS, just CSS:

:root {
  /* Colors */
  --ease-color-primary: #f97316; /* swap to orange  */
  --ease-color-success: #10b981; /* teal green      */

  /* Motion */
  --ease-speed-fast: 100ms; /* snappier        */
  --ease-speed-medium: 400ms; /* slightly slower */
  --ease-ease-bounce: cubic-bezier(0.34, 1.56, 0.64, 1);

  /* Shape */
  --ease-radius-md: 1rem; /* rounder corners */
  --ease-radius-full: 9999px;

  /* Shadows */
  --ease-shadow-md: 0 4px 20px rgba(0, 0, 0, 0.15);
}

Override framework styles with @layer

EaseMotion wraps all its CSS behind @layer cascade layers. Your own styles always win — even if the framework loads after your stylesheet:

/* Your custom overrides — always takes priority */
@layer easemotion.components {
  .ease-btn-primary {
    background: var(--ease-color-orange);
    border-radius: 2rem;
  }
}

No !important needed.


FAQ

How does EaseMotion CSS differ from Tailwind?

Tailwind is a utility-first framework built around short atomic class names and usually fits best in a build-driven workflow. EaseMotion CSS focuses on human-readable class names like ease-center and ease-fade-in, treats animation as a first-class feature, and is designed to work immediately by linking a stylesheet.

Can I use it with React/Vue?

Yes. EaseMotion CSS works with React, Vue, plain HTML, or any framework that renders standard class attributes. You can install it from npm, import the stylesheet, and use the classes directly in your components.

How do I submit a new component?

Open or claim an issue first for non-trivial ideas, then add your raw demo inside submissions/examples/your-feature-name/ with demo.html, style.css, and README.md. The maintainer reviews it, standardizes naming, and integrates it into the framework if it fits the project.

Does it work without a build step?

Yes. That is one of the core goals of EaseMotion CSS. You can use the CDN link or local CSS files directly without configuring a bundler, compiler, or build pipeline.


File Structure 📂

easemotion-css/
├── easemotion.css              ← readable source entry point
├── easemotion.min.css          ← bundled production build
│
├── core/                       ← MAINTAINER-ONLY
│   ├── variables.css           ← 60+ design tokens
│   ├── base.css                ← reset + typography (Inter font)
│   ├── animations.css          ← 20+ animation classes
│   └── utilities.css           ← 80+ layout utilities
│
├── components/                 ← MAINTAINER-ONLY
│   ├── buttons.css             ← 6 variants, 4 sizes, pill, icon
│   └── cards.css               ← 13 card variants
│
├── submissions/                ← CONTRIBUTOR AREA
│   ├── README.md               ← full submission workflow
│   └── examples/
│       ├── hover-grow/         ← [INTEGRATED] → ease-hover-grow
│       ├── hover-shimmer/      ← [INTEGRATED] → ease-hover-shimmer
│       ├── card-lift/          ← [INTEGRATED] → ease-card-lift
│       └── button-glow/        ← pending review
│
├── examples/demo.html          ← source interactive showcase
├── docs/demo.html              ← deployed live demo page
├── docs/index.html             ← full documentation site
│
├── .github/
│   ├── CODEOWNERS
│   ├── ISSUE_TEMPLATE/
│   │   ├── feature_request.md
│   │   └── bug_report.md
│   └── PULL_REQUEST_TEMPLATE.md
│
├── VISION.md                   ← long-term project direction
├── CHANGELOG.md                ← full release history
├── CONTRIBUTING.md             ← contribution guide
├── LICENSE                     ← MIT © 2026 Saptarshi Sadhu
└── README.md

Roadmap 🗺️

Track progress and vote on features via GitHub Issues.

Feature Status
✅ Human-readable core utilities (80+) Shipped — v1.0
✅ Animation-first motion library (20+) Shipped — v1.0
✅ Curated contribution pipeline Shipped — v1.0
✅ Component library (buttons, cards) Shipped — v1.0
✅ npm package + jsDelivr CDN Shipped — v1.0
✅ Full documentation site Shipped — v1.0
🔜 Form components (inputs, checkboxes, toggles) Planned — v1.1
🔜 Dark mode token layer Planned — v1.1
🔜 Modal & tooltip components Planned — v1.2
🔜 Scroll-triggered animations (IntersectionObserver) Planned — v1.2
🔜 Navigation components (navbar, sidebar) Planned — v1.3
🔜 CSS-only accordion & tabs Planned — v1.3
🔜 Badge, tag, avatar, progress bar Planned — v1.3
🔜 Theming CLI (generate custom token file) Exploring

Contributing 🤝

EaseMotion CSS is a curated, maintainer-reviewed framework. Contributors submit raw ideas — the maintainer handles standardization, naming, and integration.

✅ What contributors do

✅ Add a folder to submissions/examples/your-feature/
✅ Include: demo.html + style.css + README.md
✅ Use any class naming — no ease- prefix required
✅ One feature per PR

❌ What contributors do NOT do

❌ Edit core/           → PR closed without review
❌ Edit components/     → PR closed without review
❌ Merge their own PRs  → Maintainer-only
❌ Claim more than 2 active issues at once

The submission pipeline

Your raw CSS  →  Maintainer standardizes  →  ease-* class ships
.hover-grow       ease-hover-grow              core/animations.css

🌟 Why contribute?

  • Beginner-friendly — write raw CSS, no conventions to memorize
  • Learn real system design — see how raw ideas become a coherent API
  • Your idea ships — accepted submissions become real framework classes
  • Credited in CHANGELOG — your contribution is documented permanently
  • Your name in the README — see the contributor wall below

📖 Read the full guide → CONTRIBUTING.md

📢 Contribution Rate Limit Update

To maintain repository stability, review quality, and fair contribution distribution, EaseMotion CSS is introducing a soft contribution limit:

  • Contributors may submit up to 30 PRs per day
  • Focus on quality, originality, accessibility, and proper testing
  • Low-effort, repetitive, or mass-generated PRs may be closed without review

Why This Change?

EaseMotion CSS has grown rapidly with hundreds of contributors and thousands of merged PRs. This update helps:

  • Reduce merge conflicts
  • Improve review quality
  • Maintain framework consistency
  • Encourage meaningful contributions over quantity

🧹 Clean Commit History & Squashing

To keep the repository's git history clean and readable, contributors must follow these rules:

  • Squash your commits: Ensure all commits in your Pull Request are squashed into a single meaningful commit (or a few logical commits) before submitting for review. Do not push dozens of micro-commits (e.g., "fix", "typo", "update style.css", etc.) for a single change.
  • Keep history clean: PRs containing noisy, repetitive, or excessive commit histories (e.g., dozens of micro-commits) may be closed without review or blocked from merging.
  • Write clear commit messages: Use descriptive commit messages following the Conventional Commits format (e.g., feat: add card component or fix: resolve hover animation issue).

📢 Contribution Policy Update

All contributions are welcome and eligible for merge when submitted inside the submissions/examples/ folder following the repository structure and guidelines.

To avoid naming conflicts and overlapping components, contributors must append a short unique identifier or abbreviation to their feature/component name.

Example:

  • ease-hover-sap
  • ease-tabs-ak
  • ease-card-pr

This ensures:

  • Unambiguous component naming,
  • Preservation of every contributor’s work,
  • Conflict-free merges,
  • Easier maintenance and review workflow,
  • Support for parallel implementations of similar ideas.

The project encourages creative variations and parallel implementations rather than overwriting existing contributor work.


Issue Labels 🏷️

Label Used for
good first issue Easy entry points, perfect for first-time contributors
animation Hover effects, entrance animations, keyframe ideas
component New UI components (modals, tooltips, badges, etc.)
enhancement Improvements to existing classes
documentation README, docs site, submission guide
curated Accepted into the framework
maintainer-approved Reviewed, pending integration
featured Exceptional submission — will be showcased

Issue Cooldown Rule: Maximum 2 active assigned issues per contributor. Issues with no progress for 24 hours (1 day) are unassigned and reopened.


Community 💬

Platform Link
🐛 Bug Reports Open an issue
💡 Feature Requests Request a feature
🔀 Pull Requests Submit a contribution
📖 Documentation Full docs site
📦 npm Package easemotion-css on npm
🌐 CDN jsDelivr (GitHub CDN)
🏆 GSSoC 2026 GirlScript Summer of Code
💬 Discord Server Join Discord

If EaseMotion CSS saves you time, consider starring the repo. It helps more developers discover the project and motivates continued development.


Contributors 🏆

Everyone who has submitted a PR, opened an issue, or contributed an idea. This wall regenerates automatically on every push to main.

265 Contributors

SAPTARSHI-coder
SAPTARSHI-coder
2787 commits
Aryan0819
Aryan0819
288 commits
zen-ash-dev
zen-ash-dev
151 commits
Dharm3112
Dharm3112
107 commits
Pcmhacker-piro
Pcmhacker-piro
103 commits
sonusharma6-dsa
sonusharma6-dsa
89 commits
TavishaBudhiraja
TavishaBudhiraja
81 commits
Prateek2007-cmd
Prateek2007-cmd
74 commits
sanrishi
sanrishi
70 commits
KRITIKA-l
KRITIKA-l
61 commits
ishita526
ishita526
61 commits
sudha09-git
sudha09-git
58 commits
Rashi1404
Rashi1404
55 commits
ArshVermaGit
ArshVermaGit
53 commits
Shreeya1207
Shreeya1207
51 commits
shresthbhargava
shresthbhargava
50 commits
codedbydollys10
codedbydollys10
50 commits
sricharan-213
sricharan-213
47 commits
Ru-2008
Ru-2008
46 commits
REHAN-503
REHAN-503
44 commits
Kokila-chandrakar
Kokila-chandrakar
37 commits
prerendrarahitya1708
prerendrarahitya1708
34 commits
Rajlakshmi-ai
Rajlakshmi-ai
34 commits
Abhay-1704
Abhay-1704
34 commits
ARPANPATRA111
ARPANPATRA111
28 commits
AnanyaTiwari850
AnanyaTiwari850
27 commits
rpoojaa06-git
rpoojaa06-git
27 commits
nyxsky404
nyxsky404
26 commits
Aryan-Agarwal-creator
Aryan-Agarwal-creator
23 commits
pari-dubey1
pari-dubey1
23 commits
TEJASWANIANIMIREDDY
TEJASWANIANIMIREDDY
22 commits
hiitarun1
hiitarun1
21 commits
geetanunakani
geetanunakani
21 commits
AyushPrad2907
AyushPrad2907
21 commits
Ishika-1110
Ishika-1110
20 commits
Muditapandey26
Muditapandey26
19 commits
Nicks-19
Nicks-19
19 commits
Ayushisingh09
Ayushisingh09
17 commits
Pranaykarvi
Pranaykarvi
16 commits
dishamaurya081-create
dishamaurya081-create
15 commits
KRUSHAL2956
KRUSHAL2956
15 commits
Ankitkr16
Ankitkr16
14 commits
Premshaw23
Premshaw23
14 commits
PradeepTech-hub
PradeepTech-hub
14 commits
Xploit-Ghost
Xploit-Ghost
13 commits
zairahussain27
zairahussain27
13 commits
Ayontikapal
Ayontikapal
12 commits
bhavyabhardwaj001
bhavyabhardwaj001
12 commits
Krish-Mishra
Krish-Mishra
12 commits
panditshubham766-dotcom
panditshubham766-dotcom
11 commits
Khushi-Rajput77
Khushi-Rajput77
10 commits
Pr241singh
Pr241singh
10 commits
BinaryBandit-07
BinaryBandit-07
10 commits
adyamohanka
adyamohanka
9 commits
srividrumavangara
srividrumavangara
9 commits
iammissmiller
iammissmiller
9 commits
kunal-9090
kunal-9090
9 commits
HarmiBhikadiya
HarmiBhikadiya
9 commits
joshnajojo12
joshnajojo12
8 commits
S0412-2007
S0412-2007
8 commits
vbarik317-droid
vbarik317-droid
8 commits
PAWANBHOWATE04
PAWANBHOWATE04
8 commits
Juhi4433
Juhi4433
8 commits
janievinod
janievinod
8 commits
bhavyapandiya29
bhavyapandiya29
8 commits
Aarju247
Aarju247
8 commits
alishaalmeida10
alishaalmeida10
8 commits
dhruv-jani-0808
dhruv-jani-0808
7 commits
Rakshita006
Rakshita006
7 commits
saurabhhhcodes
saurabhhhcodes
7 commits
jayesh-durge
jayesh-durge
7 commits
riddhimagupta2
riddhimagupta2
7 commits
yatri28
yatri28
7 commits
Dhruva5vora
Dhruva5vora
7 commits
antara5603
antara5603
7 commits
gowrishvarma2003
gowrishvarma2003
6 commits
ksrikarsai
ksrikarsai
6 commits
ujwal-224
ujwal-224
6 commits
MajBlaze
MajBlaze
6 commits
mohamedfahim18
mohamedfahim18
6 commits
Siddh2024
Siddh2024
6 commits
gaurav123-4
gaurav123-4
6 commits
bhaktisp15
bhaktisp15
6 commits
abhinavkhedwal4-maker
abhinavkhedwal4-maker
6 commits
ionfwsrijan
ionfwsrijan
6 commits
PRINCE-ANTHONY
PRINCE-ANTHONY
6 commits
mokshikabhardwaj29
mokshikabhardwaj29
6 commits
aryanmalhotraug25-hash
aryanmalhotraug25-hash
6 commits
ShamrithaGS
ShamrithaGS
6 commits
WHENKEY2007
WHENKEY2007
6 commits
sarveshwarikumari05
sarveshwarikumari05
5 commits
kavin553
kavin553
5 commits
boss477
boss477
5 commits
YerraguntaAjayKumar
YerraguntaAjayKumar
5 commits
vaddempuditejaswini30-star
vaddempuditejaswini30-star
5 commits
Shruti1420
Shruti1420
5 commits
SAMJOD07-devz
SAMJOD07-devz
5 commits
ParulPatil26
ParulPatil26
5 commits
Luffy-456
Luffy-456
5 commits
Lehana02
Lehana02
5 commits
himanshursingh21-cloud
himanshursingh21-cloud
5 commits
bh462007
bh462007
5 commits
AgnusSerena
AgnusSerena
5 commits
Hridayesh68
Hridayesh68
4 commits
unnatipandey19
unnatipandey19
4 commits
kshah123919
kshah123919
4 commits
surajbharsakle07
surajbharsakle07
4 commits
srujana-manda
srujana-manda
4 commits
rishikareddy771
rishikareddy771
4 commits
nyaminidurga-cmd
nyaminidurga-cmd
4 commits
himadri721
himadri721
4 commits
ankitrmishra01
ankitrmishra01
4 commits
JoyceHanan
JoyceHanan
4 commits
one8alpha
one8alpha
4 commits
Nikitasoni22
Nikitasoni22
4 commits
PojashriJM
PojashriJM
4 commits
ritikamahato924
ritikamahato924
4 commits
SRSoham
SRSoham
4 commits
Sreeya-kumari
Sreeya-kumari
4 commits
bhanuvarma045
bhanuvarma045
4 commits
Subhash21022
Subhash21022
3 commits
Siddhi-Kapoor
Siddhi-Kapoor
3 commits
vs-tries-to-code
vs-tries-to-code
3 commits
shyam-medh
shyam-medh
3 commits
mythri2405
mythri2405
3 commits
lokeshkumar69
lokeshkumar69
3 commits
karrisanthoshigayatri
karrisanthoshigayatri
3 commits
ida-jemi
ida-jemi
3 commits
Thacker-Meet
Thacker-Meet
3 commits
sudeekshaballanda-hub
sudeekshaballanda-hub
3 commits
notlexius-glitch
notlexius-glitch
3 commits
Paawangarg1084
Paawangarg1084
3 commits
Namratha36
Namratha36
3 commits
Muskan-S123
Muskan-S123
3 commits
Asifmd45
Asifmd45
3 commits
Man1ac-1773
Man1ac-1773
3 commits
sdeepika-2606
sdeepika-2606
3 commits
ArchiGajera
ArchiGajera
3 commits
anurag5603
anurag5603
3 commits
Ankitjsr-dev05
Ankitjsr-dev05
3 commits
Aritra235
Aritra235
3 commits
Anshu2607-iiitr
Anshu2607-iiitr
3 commits
Vrutik-0
Vrutik-0
2 commits
YASHK-arch
YASHK-arch
2 commits
abhi-nav-25
abhi-nav-25
2 commits
adittya-code
adittya-code
2 commits
buildwithnisha
buildwithnisha
2 commits
Vishvadharman
Vishvadharman
2 commits
vikasverma101
vikasverma101
2 commits
Vaishnavi10706
Vaishnavi10706
2 commits
toufiq00007
toufiq00007
2 commits
Sweksha-Kakkar
Sweksha-Kakkar
2 commits
Aditisingh0102
Aditisingh0102
2 commits
hari2k7
hari2k7
2 commits
harshacodes0
harshacodes0
2 commits
nishiagarwal2006-lang
nishiagarwal2006-lang
2 commits
piyushsinghania06-hub
piyushsinghania06-hub
2 commits
Pranathi-Kunjeti
Pranathi-Kunjeti
2 commits
shivanisreejith1
shivanisreejith1
2 commits
sri6792
sri6792
2 commits
sujeetkumar1425
sujeetkumar1425
2 commits
tejasch2006-ux
tejasch2006-ux
2 commits
tigerkun
tigerkun
2 commits
vaishnavi003-svg
vaishnavi003-svg
2 commits
vs-learner-chhavi
vs-learner-chhavi
2 commits
divyasharma-21
divyasharma-21
2 commits
ishikamittal2002
ishikamittal2002
2 commits
akshatsinghai6682-sketch
akshatsinghai6682-sketch
2 commits
Akshu121796
Akshu121796
2 commits
AnushKamble
AnushKamble
2 commits
Apurva-Lakhe
Apurva-Lakhe
2 commits
aasheeshhh
aasheeshhh
2 commits
Avyakta-dev
Avyakta-dev
2 commits
Bheemeswari497
Bheemeswari497
2 commits
Bhoomikakaushik
Bhoomikakaushik
2 commits
chethanamp22-tech
chethanamp22-tech
2 commits
chhavisharmaofficial11-cs
chhavisharmaofficial11-cs
2 commits
Christina1507
Christina1507
2 commits
darshiB27
darshiB27
2 commits
sinchana-aiml
sinchana-aiml
2 commits
siri-004
siri-004
2 commits
SaiRishithaK
SaiRishithaK
2 commits
SHREYA-G-AMIN
SHREYA-G-AMIN
2 commits
Pratik-kr21
Pratik-kr21
2 commits
PalashKulkarni
PalashKulkarni
2 commits
NirmalSingh-09
NirmalSingh-09
2 commits
NehaShrivastava-Tech
NehaShrivastava-Tech
2 commits
Naman-Bagoria17
Naman-Bagoria17
2 commits
Krishna009-pro
Krishna009-pro
2 commits
kas2804
kas2804
2 commits
Jeet-Srivastava
Jeet-Srivastava
2 commits
Hasini2706
Hasini2706
2 commits
dhruvil-1207
dhruvil-1207
2 commits
FazilPRaphi
FazilPRaphi
1 commits
edepraneethasri
edepraneethasri
1 commits
dk132006
dk132006
1 commits
AbhijeetKushwaha1213
AbhijeetKushwaha1213
1 commits
codematser69
codematser69
1 commits
bivekm01
bivekm01
1 commits
bhaiyachimkandi01-source
bhaiyachimkandi01-source
1 commits
anjali62510-star
anjali62510-star
1 commits
amisha-srivastavaa
amisha-srivastavaa
1 commits
ambikabains
ambikabains
1 commits
aditip01-cloud
aditip01-cloud
1 commits
vishal-kushwaha-9912
vishal-kushwaha-9912
1 commits
yash23082007
yash23082007
1 commits
Y-o-ULA
Y-o-ULA
1 commits
swapnil2737
swapnil2737
1 commits
surbhii-thisside
surbhii-thisside
1 commits
shikha123-ops
shikha123-ops
1 commits
Sejal10406
Sejal10406
1 commits
unknown-tech-ui
unknown-tech-ui
1 commits
thakurakanksha288
thakurakanksha288
1 commits
renoschubert
renoschubert
1 commits
sarthakshruti999-code
sarthakshruti999-code
1 commits
sandradominic
sandradominic
1 commits
sakshishinde1606
sakshishinde1606
1 commits
saibhumi146
saibhumi146
1 commits
ranbeer06052009
ranbeer06052009
1 commits
rachika08
rachika08
1 commits
prithivika2007
prithivika2007
1 commits
tamoghnodeb
tamoghnodeb
1 commits
ny798299-design
ny798299-design
1 commits
kunalSingh026
kunalSingh026
1 commits
khushboo-khatoon
khushboo-khatoon
1 commits
kejriwalkaushal04
kejriwalkaushal04
1 commits
kashviporwal-byte
kashviporwal-byte
1 commits
GAURAVSHEEPU
GAURAVSHEEPU
1 commits
gamana618
gamana618
1 commits
maheshbhojane1
maheshbhojane1
1 commits
Krithikakannan
Krithikakannan
1 commits
Krish0703-irl
Krish0703-irl
1 commits
KartikHariramani
KartikHariramani
1 commits
hematejaswi-30
hematejaswi-30
1 commits
devansh-nitb
devansh-nitb
1 commits
Dippp10-ally
Dippp10-ally
1 commits
nishantpurohit04
nishantpurohit04
1 commits
CSquareClub
CSquareClub
1 commits
bhavyajain0810
bhavyajain0810
1 commits
asxayush
asxayush
1 commits
Aribafatma
Aribafatma
1 commits
Anup1dubey
Anup1dubey
1 commits
alisha-khan6
alisha-khan6
1 commits
Akhileswar6
Akhileswar6
1 commits
AkankshaYadav05
AkankshaYadav05
1 commits
aanyabansal-22
aanyabansal-22
1 commits
ANUSHREE-123-S
ANUSHREE-123-S
1 commits
savi-commits
savi-commits
1 commits
SathvikaSingoti
SathvikaSingoti
1 commits
saksham0777
saksham0777
1 commits
silentguyracer
silentguyracer
1 commits
RaviCoderWallah
RaviCoderWallah
1 commits
rastogiradhika
rastogiradhika
1 commits
RachelCodes247
RachelCodes247
1 commits
pushtikadia
pushtikadia
1 commits
Priti-1001
Priti-1001
1 commits
prastutirai847-design
prastutirai847-design
1 commits
Parthasarathyjeeva27
Parthasarathyjeeva27
1 commits
Sricharan106
Sricharan106
1 commits
prasanthipallagani9-ops
prasanthipallagani9-ops
1 commits
NiteshSingh3228
NiteshSingh3228
1 commits
Nish232003
Nish232003
1 commits
EchoOfCode
EchoOfCode
1 commits
Mehul5124
Mehul5124
1 commits
Malusnow
Malusnow
1 commits

Auto-updated daily · View all →


Maintainer 👤

Saptarshi Sadhu

GitHub

EaseMotion CSS is designed, curated, and actively maintained by Saptarshi Sadhu. All contributions are reviewed and standardized before integration. The framework does not accept unreviewed direct edits.

Only the maintainer merges pull requests. This is enforced via CODEOWNERS.


Changelog 📜

See CHANGELOG.md for the full release history.

Latest: v1.0.0 — Initial public release. 80+ utilities, 20+ animations, buttons, cards, full docs site, npm + CDN.


License ⚖️

MIT © 2026 Saptarshi Sadhu — see LICENSE for details.

You are free to use EaseMotion CSS in personal and commercial projects. Attribution appreciated but not required.


Thank you for building EaseMotion CSS with me. 💜

Every star, every PR, every issue — it all adds up.

— Saptarshi Sadhu · @SAPTARSHI-coder


npm Stars License Sponsor

Built with care  ·  Zero dependencies  ·  Animation-first  ·  Community-driven

Accessibility

EaseMotion CSS supports the prefers-reduced-motion media query to respect users who prefer reduced motion and reduce animation-related discomfort. When enabled at the operating system level, animations and transitions are minimized to provide a more accessible experience.

Releases

No releases published

Packages

 
 
 

Contributors

Languages