No frames! Pure CSS
One @keyframes translate per lane. React and Vue mount it. Expo and NativeScript host it in a WebView.
OPEN SOURCE JS LIBRARY
A continuous image pattern for the web, in any proportion.
The Vue binding mounts the same JS renderer used in production. Reduced motion pauses it.
Default study: vertical columns, 12°, sequential order.
npm i images-in-motionyarn add images-in-motionpnpm add images-in-motionbun add images-in-motionReact and Vue are optional peers. The JS renderer and <images-in-motion> have none. Expo and NativeScript host that same renderer in a WebView.
Examples fill the available box and size the mosaic to 20rem by 20rem.
import { mountImagesInMotion } from 'images-in-motion'
document.body.style.cssText = 'margin:0;width:100%;height:100%;min-height:100dvh;display:flex;align-items:center;justify-content:center'
const stage = document.querySelector('#stage')
stage.style.width = '20rem'
stage.style.height = '20rem'
mountImagesInMotion(stage, {
images: ['/a.jpg', '/b.jpg', '/c.jpg', '/d.jpg'],
speedRange: [8, 18],
angle: 12,
})Usage · Frameworks · No frames! Pure CSS · Image-free JSON · Bundle size · Examples
src/core. Animation lives in src/js. React and Vue only mount that renderer. Expo and NativeScript host it in a WebView.