Version-sensitive. Every API name, SDK gate and browser-support claim below was verified on 2026-09-08 against primary sources. What against, and when, is in
_jutsu/VERSIONS.md. If that date is old, re-verify before acting on a version number.
CSS Native - Zero-Dependency Animations & Visual Techniques
When to Use CSS Native vs Library
Rule of thumb: if you can express it in a @keyframes + one animation-timeline, stay in CSS. The moment you need imperative control, sequence coordination, or runtime values - reach for a library.
Scroll-Driven Animations
Scroll Progress Timeline
Animate based on scroll position of a container.
scroll(<scroller> <axis>)- scroller:nearest|root|self, axis:block|inline|x|y- Default:
scroll(nearest block)
View Progress Timeline
Animate as an element enters/exits the scrollport.
animation-range
Controls which segment of the timeline drives the animation.
Use the Scroll-driven Animations tool to visualize ranges interactively.
View Transitions API
Same-Document (SPA)
Cross-Document (MPA)
view-transition-class (group styling)
@starting-style
Native enter animations from display: none - no JS timing hacks.
Key rules:
transition-behavior: allow-discrete(or shorthandallow-discretein the transition) enables transitioningdisplayandoverlay@starting-styleblock defines the "from" state when the element first renders- Combine with
[popover]and<dialog>for native modals with zero JS animation code
Anchor Positioning
CSS-native positioning of tooltips, popovers, and floating UI relative to a trigger.
Combine with @starting-style for animated tooltips:
Container Queries + Contextual Animations
Adapt animations to the component's container size, not the viewport.
Container-relative units in keyframes:
Advanced Visual Techniques
clip-path Transitions
Shape morphing: transition between circle(), ellipse(), polygon(), inset() - as long as the function type and point count match.


