Static Project · CSS Showcase · 2026

CSS
2026

The browser is the GPU. Every pixel, every animation, every interaction — pure CSS. Zero JavaScript.

scroll-driven@propertyoklch :has()preserve-3dclip-path backdrop-filtercolor-mix()@layer css nesting@starting-stylemix-blend-mode
scroll
01
Chrome 115+ · Firefox 110+ · Safari 18+
animation-timeline: scroll() / view()

Scroll is
the Timeline

No IntersectionObserver. No scroll event listeners. CSS alone drives every entrance — each card animates itself into view based purely on its position relative to the viewport.

view() Timeline

Ties animation progress to how far an element has entered the viewport — no JS needed.

animation-timeline: view()
📜
scroll() Timeline

Links animation to the scroll container's overall scroll progress — great for progress bars.

animation-timeline: scroll(root)
🎯
animation-range

Define exactly when in the scroll journey your animation starts and ends.

animation-range: entry 0% entry 40%
🪄
Parallax

Background layers drift at different rates. Pure CSS, no rAF loop.

animation-range: entry 0% exit 100%
Off Main Thread

Runs on the compositor — silky 120fps even during heavy JS work.

compositor · zero jank
🔗
Named Timelines

Name a scroll container and share its timeline across multiple elements.

scroll-timeline-name: --main
02
Chrome 85+ · Firefox 128+ · Safari 16.4+
@property — Typed Custom Properties

Animate
Anything

Declare the type of a custom property. Now the browser can interpolate gradients, angles, colors — things that were fundamentally impossible before. The holographic border cycles the entire hue spectrum without a single line of JS.

@property
Holographic · Animated Conic Gradient · Zero JS
oklch(0.65 0.28 --hue)
3s · no delay
oklch(0.70 0.24 --hue)
4s · −1s offset
oklch(0.75 0.20 --hue)
5.5s · −2s offset
oklch(0.80 0.16 --hue)
7s · −3.5s offset
03
All modern browsers
transform-style: preserve-3d · perspective

The Browser
is Your GPU

Full 3D scene graphs in pure CSS. No WebGL. No Three.js. Declare your transforms, set perspective, let the browser composite the rest. Hover the card to flip it.

CSS
WOW
3D
FX
2026
LAB
🃏
hover to flip
CSS 3D
No JS

preserve-3d + backface-visibility + :hover. Pure CSS.

04
Chrome 105+ · Firefox 121+ · Safari 15.4+
:has() — The Parent Selector

CSS
Sees Inside

25 years of CSS without a parent selector. :has() changes everything. These tabs are driven by radio inputs and :has() — no JavaScript, no event listeners, no framework needed.

Parent Selector

Select an element that contains a specific child. Style a nav if it has an active link. Highlight a section if it has a focused input. Change layout if it has an image.

section:has(h2.active)   { background: ... }
nav:has(a:hover)         { backdrop-filter: blur(8px) }
article:has(img)         { grid-column: span 2 }

Form Superpowers

Style a form container based on its field states. Show error messages, dim the submit button, highlight required fields — all driven by :has() reading the input state.

.form:has(input:invalid)  { border-color: red }
.form:has(input:focus)    { box-shadow: 0 0 0 2px blue }
.form:has(input:checked)  .label { color: green }

Content-Aware Layout

Adapt layout to actual content without JavaScript adding classes. Cards with images span wider. Sections with videos go full-bleed. CSS responds to what's in the DOM.

.card:has(img)            { grid-column: span 2 }
.card:has(video)          { aspect-ratio: 16/9 }
section:has(.hero-image)  { padding: 0 }
inactive
inactive
05
Chrome 111+ · Firefox 113+ · Safari 15.4+
oklch() · color-mix() · wide gamut P3

Color
Evolved

oklch is perceptually uniform — gradients stay vibrant across the full spectrum. color-mix() blends natively. Hover the strips to expand them; watch the animated bar cycle all 360° of hue.

oklch animated via @property
06
All modern browsers
clip-path morphing · vertex interpolation

Shape
Shifter

Animate between any clip-path shapes — polygons, circles, ellipses, insets. The browser interpolates every vertex. No SVG morphing. No canvas. No JavaScript.

Polygon morphing
pentagon → hexagon → diamond
Shape switching
circle → ellipse → inset → diamond
Star burst
10-point star ↔ hexagon
07
Chrome 76+ · Firefox 103+ · Safari 9+
backdrop-filter: blur() saturate()

Glass
2.0

backdrop-filter composites the blurred, saturated scene behind each panel. Paired with oklch blobs animating underneath, glassmorphism has reached a new visual level. Hover to intensify.

Light blur
5px
Subtle depth. Details show through clearly.
Medium blur
16px
Balanced frost. Color glow bleeds through.
Heavy blur
30px
Maximum frost. Colors fully diffuse and merge.
08
All modern browsers
glitch · gradient text · neon · mix-blend-mode

Type
as Canvas

Text as an artistic medium. Glitch slices, cycling spectrum gradients, neon glow halos, mix-blend-mode compositions. All CSS. All GPU-composited. All without JavaScript.

GLITCH
SPECTRUM
NEON
BLEND