Skip to content
LSD Framework
Components · images

Images, frames, aspect ratios. Then they arrive.

Three orthogonal concerns: .lsd-aspect locks proportion, .lsd-frame is the chrome around the image, .lsd-img is the surface effect. Layer any combination, then chain a .lsd-fx--<entrance> on the wrapper for scroll-triggered arrival.

01 · proportion

.lsd-aspect

A pure CSS utility — sets aspect-ratio: var(--ar) and clips children to object-fit: cover. Same placeholder, ten ratios, immediately visible proportional difference.

16 / 9

cinema
<div class="lsd-aspect lsd-aspect--16-9">…</div>

4 / 3

classic

3 / 2

photo

1 / 1

square

3 / 4

portrait

4 / 5

portrait

9 / 16

vertical

21 / 9

ultra-wide

golden

1.618

silver

1.414
02 · chrome

.lsd-frame

A frame is the chrome around the image — border, shadow, corners, decoration. Pair any frame with any aspect ratio: <div class="lsd-frame lsd-frame--polaroid"><div class="lsd-aspect lsd-aspect--4-3">…</div></div>

bordered

F1

shadowed

F2

polaroid

F3

magazine

F4

ticket

F5

film

F6

ornate

F7

vignette

F8

label-strip

F9

glass-card

F10
03 · surface

.lsd-img

Surface treatments — hover transitions, idle motion, color and pointer effects. Independent of frame and aspect.

zoom-hover

I1

scale(1.08) on hover

ken-burns

I2

slow infinite scale + pan

parallax-bg

I3

translates with --lsd-progress while scrolling

duotone

I4

accent + accent-3 color overlay

mask-reveal

I5

pointer-driven porthole — move over image

grayscale-hover

I6

desaturated, color on hover

blur-hover

I7

blurred at rest, sharp on hover

noise

I8

SVG turbulence film grain

04 · arrival

.lsd-fx--<entrance>

Each card carries .lsd-scroll .lsd-fx--<name>; lsd-scroll-trigger.js adds .lsd-in-view on intersection and the transition plays. Click Replay to re-arm the observer.

fade-in

E1

slide-up

E2

slide-left

E2

scale-in

E3

scale-out

E4

blur-in

E5

mask-up

E6

mask-iris

E7

rotate-in

E8

flip-in

E9

curtain

E10

stagger-children

E12
05 · chain

aspect + frame + img + entrance + hover

Every concern is an independent class. The whole stack chains on one element. Each card below combines all five layers.

polaroid + zoom + scale-in + lift

<div class="lsd-frame lsd-frame--polaroid
            lsd-fx--scale-in lsd-fx--lift lsd-scroll lsd-scroll-once">
  <div class="lsd-aspect lsd-aspect--1-1">
    <div class="lsd-img lsd-img--zoom-hover" …></div>
  </div>
</div>

film + duotone + slide-up + shimmer

glass-card + grayscale + blur-in + tilt

vignette + ken-burns + curtain + glow-pulse

Components · Images · 10 aspects · 10 frames · 8 effects · 12 entrances
↩ Framework index