Spec Registry
Help your agents use open-source better. Learn more.
Find usage specs for your project’s dependencies
- Author
- tessl
- Last updated
- Spec files
npm-svelte
Describes: npm/svelte
- Description
- Revolutionary JavaScript framework and compiler that builds web applications without runtime overhead by compiling components at build time.
- Author
- tessl
- Last updated
easing-functions.md docs/
1# Easing Functions23Comprehensive collection of easing functions for smooth animation curves and natural motion effects.45## Capabilities67### Linear Easing89Constant rate of change with no acceleration or deceleration.1011```javascript { .api }12/**13* Linear easing function with constant rate of change14* @param t - Time parameter (0-1)15* @returns Eased value (0-1)16*/17function linear(t: number): number;18```1920**Usage Examples:**2122```javascript23import { linear } from "svelte/easing";24import { tweened } from "svelte/motion";2526// Constant speed animation27const progress = tweened(0, {28duration: 1000,29easing: linear30});3132// Perfect for progress bars and loading indicators33progress.set(100);34```3536### Quadratic Easing3738Gentle acceleration/deceleration using quadratic curves.3940```javascript { .api }41/**42* Quadratic ease in - starts slow, accelerates43* @param t - Time parameter (0-1)44* @returns Eased value (0-1)45*/46function quadIn(t: number): number;4748/**49* Quadratic ease out - starts fast, decelerates50* @param t - Time parameter (0-1)51* @returns Eased value (0-1)52*/53function quadOut(t: number): number;5455/**56* Quadratic ease in-out - accelerates then decelerates57* @param t - Time parameter (0-1)58* @returns Eased value (0-1)59*/60function quadInOut(t: number): number;61```6263**Usage Examples:**6465```javascript66import { quadIn, quadOut, quadInOut } from "svelte/easing";6768// Gentle acceleration69<div transition:fade={{ easing: quadIn }}>70Fades in slowly then faster71</div>7273// Gentle deceleration74<div transition:slide={{ easing: quadOut }}>75Slides fast then slows down76</div>7778// Smooth in and out79<div transition:scale={{ easing: quadInOut }}>80Smooth acceleration and deceleration81</div>82```8384### Cubic Easing8586Moderate acceleration/deceleration using cubic curves.8788```javascript { .api }89/**90* Cubic ease in - moderate acceleration91* @param t - Time parameter (0-1)92* @returns Eased value (0-1)93*/94function cubicIn(t: number): number;9596/**97* Cubic ease out - moderate deceleration98* @param t - Time parameter (0-1)99* @returns Eased value (0-1)100*/101function cubicOut(t: number): number;102103/**104* Cubic ease in-out - moderate acceleration then deceleration105* @param t - Time parameter (0-1)106* @returns Eased value (0-1)107*/108function cubicInOut(t: number): number;109```110111**Usage Examples:**112113```javascript114import { cubicOut, cubicInOut } from "svelte/easing";115116// Most commonly used - natural feeling117<div transition:fly={{ easing: cubicOut }}>118Natural deceleration119</div>120121// Smooth both ways122<div transition:blur={{ easing: cubicInOut }}>123Balanced acceleration/deceleration124</div>125```126127### Quartic Easing128129Strong acceleration/deceleration using quartic curves.130131```javascript { .api }132/**133* Quartic ease in - strong acceleration134* @param t - Time parameter (0-1)135* @returns Eased value (0-1)136*/137function quartIn(t: number): number;138139/**140* Quartic ease out - strong deceleration141* @param t - Time parameter (0-1)142* @returns Eased value (0-1)143*/144function quartOut(t: number): number;145146/**147* Quartic ease in-out - strong acceleration then deceleration148* @param t - Time parameter (0-1)149* @returns Eased value (0-1)150*/151function quartInOut(t: number): number;152```153154### Quintic Easing155156Very strong acceleration/deceleration using quintic curves.157158```javascript { .api }159/**160* Quintic ease in - very strong acceleration161* @param t - Time parameter (0-1)162* @returns Eased value (0-1)163*/164function quintIn(t: number): number;165166/**167* Quintic ease out - very strong deceleration168* @param t - Time parameter (0-1)169* @returns Eased value (0-1)170*/171function quintOut(t: number): number;172173/**174* Quintic ease in-out - very strong acceleration then deceleration175* @param t - Time parameter (0-1)176* @returns Eased value (0-1)177*/178function quintInOut(t: number): number;179```180181### Sine Easing182183Smooth, wave-like acceleration/deceleration using sine curves.184185```javascript { .api }186/**187* Sine ease in - smooth acceleration188* @param t - Time parameter (0-1)189* @returns Eased value (0-1)190*/191function sineIn(t: number): number;192193/**194* Sine ease out - smooth deceleration195* @param t - Time parameter (0-1)196* @returns Eased value (0-1)197*/198function sineOut(t: number): number;199200/**201* Sine ease in-out - smooth acceleration then deceleration202* @param t - Time parameter (0-1)203* @returns Eased value (0-1)204*/205function sineInOut(t: number): number;206```207208**Usage Examples:**209210```javascript211import { sineInOut } from "svelte/easing";212213// Very smooth, organic feeling214<div transition:scale={{ easing: sineInOut }}>215Organic, wave-like motion216</div>217```218219### Exponential Easing220221Dramatic acceleration/deceleration using exponential curves.222223```javascript { .api }224/**225* Exponential ease in - dramatic acceleration226* @param t - Time parameter (0-1)227* @returns Eased value (0-1)228*/229function expoIn(t: number): number;230231/**232* Exponential ease out - dramatic deceleration233* @param t - Time parameter (0-1)234* @returns Eased value (0-1)235*/236function expoOut(t: number): number;237238/**239* Exponential ease in-out - dramatic acceleration then deceleration240* @param t - Time parameter (0-1)241* @returns Eased value (0-1)242*/243function expoInOut(t: number): number;244```245246**Usage Examples:**247248```javascript249import { expoOut } from "svelte/easing";250251// Dramatic effects, great for reveals252<div transition:fly={{ easing: expoOut }}>253Dramatic deceleration254</div>255```256257### Circular Easing258259Smooth circular arc acceleration/deceleration.260261```javascript { .api }262/**263* Circular ease in - circular arc acceleration264* @param t - Time parameter (0-1)265* @returns Eased value (0-1)266*/267function circIn(t: number): number;268269/**270* Circular ease out - circular arc deceleration271* @param t - Time parameter (0-1)272* @returns Eased value (0-1)273*/274function circOut(t: number): number;275276/**277* Circular ease in-out - circular arc acceleration then deceleration278* @param t - Time parameter (0-1)279* @returns Eased value (0-1)280*/281function circInOut(t: number): number;282```283284### Back Easing285286Overshoot effects that go slightly beyond the target before settling.287288```javascript { .api }289/**290* Back ease in - slight reverse before acceleration291* @param t - Time parameter (0-1)292* @returns Eased value (0-1)293*/294function backIn(t: number): number;295296/**297* Back ease out - overshoot then settle back298* @param t - Time parameter (0-1)299* @returns Eased value (0-1)300*/301function backOut(t: number): number;302303/**304* Back ease in-out - reverse, accelerate, overshoot, settle305* @param t - Time parameter (0-1)306* @returns Eased value (0-1)307*/308function backInOut(t: number): number;309```310311**Usage Examples:**312313```javascript314import { backOut } from "svelte/easing";315316// Great for UI elements that "pop" into place317<div transition:scale={{ easing: backOut }}>318Scales with slight overshoot319</div>320321// Perfect for button press effects322<button on:click={handleClick} transition:scale={{ easing: backOut, duration: 150 }}>323Click me324</button>325```326327### Elastic Easing328329Spring-like oscillating effects that settle over time.330331```javascript { .api }332/**333* Elastic ease in - oscillating acceleration334* @param t - Time parameter (0-1)335* @returns Eased value (0-1)336*/337function elasticIn(t: number): number;338339/**340* Elastic ease out - oscillating deceleration341* @param t - Time parameter (0-1)342* @returns Eased value (0-1)343*/344function elasticOut(t: number): number;345346/**347* Elastic ease in-out - oscillating acceleration then deceleration348* @param t - Time parameter (0-1)349* @returns Eased value (0-1)350*/351function elasticInOut(t: number): number;352```353354**Usage Examples:**355356```javascript357import { elasticOut } from "svelte/easing";358359// Bouncy, playful animations360<div transition:fly={{ easing: elasticOut }}>361Flies in with elastic bounce362</div>363364// Great for notifications or alerts365<div class="notification" transition:scale={{ easing: elasticOut }}>366Bouncy notification367</div>368```369370### Bounce Easing371372Ball-like bouncing effects that simulate physical bouncing.373374```javascript { .api }375/**376* Bounce ease in - bouncing acceleration377* @param t - Time parameter (0-1)378* @returns Eased value (0-1)379*/380function bounceIn(t: number): number;381382/**383* Bounce ease out - bouncing deceleration384* @param t - Time parameter (0-1)385* @returns Eased value (0-1)386*/387function bounceOut(t: number): number;388389/**390* Bounce ease in-out - bouncing acceleration then deceleration391* @param t - Time parameter (0-1)392* @returns Eased value (0-1)393*/394function bounceInOut(t: number): number;395```396397**Usage Examples:**398399```javascript400import { bounceOut } from "svelte/easing";401402// Physical bouncing effects403<div transition:fly={{ y: -100, easing: bounceOut }}>404Drops and bounces405</div>406407// Playful UI interactions408<div class="ball" transition:scale={{ easing: bounceOut }}>409Bouncing ball effect410</div>411```412413## Easing Function Selection Guide414415### Common Use Cases416417**UI Transitions (buttons, modals, dropdowns):**418- `cubicOut` - Most natural feeling419- `backOut` - Subtle overshoot for emphasis420- `quadOut` - Gentle, smooth421422**Dramatic Reveals:**423- `expoOut` - Dramatic slowdown424- `elasticOut` - Bouncy reveal425- `bounceOut` - Playful bounce426427**Loading Animations:**428- `linear` - Consistent progress429- `sineInOut` - Smooth wave-like430- `quadInOut` - Gentle acceleration/deceleration431432**Page Transitions:**433- `cubicInOut` - Balanced feel434- `quintOut` - Strong deceleration435- `circInOut` - Smooth arcs436437### Performance Considerations438439```javascript440import { cubicOut } from "svelte/easing";441442// Prefer CSS-based transitions for better performance443const fastTransition = {444duration: 200,445easing: cubicOut446};447448// Use tick callback sparingly for complex effects449const complexTransition = {450duration: 1000,451easing: elasticOut,452tick: (t, u) => {453// Custom animation logic454node.style.transform = `scale(${t}) rotate(${u * 360}deg)`;455}456};457```458459### Custom Easing Functions460461Create your own easing functions for specialized effects:462463```javascript464// Custom ease function465function customEase(t) {466// Create custom curve - must return 0-1 for input 0-1467return t * t * (3 - 2 * t); // Smoothstep468}469470// Stepped easing471function steps(count) {472return (t) => Math.floor(t * count) / count;473}474475// Usage476<div transition:fade={{ easing: customEase }}>477Custom eased fade478</div>479480<div transition:scale={{ easing: steps(5) }}>4815-step discrete scaling482</div>483```