Blog
Mert Özen's blog posts on software development, backend, frontend, and DevOps.
Transitions and Animations: @keyframes, Easing, @starting-style and prefers-reduced-motion
A dialog opening from display: none has no previous style, so @starting-style must give the transition a starting value, and closing needs allow-discrete on display and overlay. The post measures the difference between transitions and animations, easing including linear(), why transform and opacity are cheap, and reducing motion with prefers-reduced-motion on Bookstore's cart dialog.
Scroll-Driven Animations and View Transitions
animation-timeline with scroll() and view() takes an animation's progress from the scroll position instead of time and has been Baseline since October 2026; view transitions animate a DOM change between two snapshots. The post adds a reading progress bar, cards that appear as they scroll in, a sorting animation, withViewTransitions() in Angular and cross-document transitions, which Firefox lacks, to Bookstore.
Anchor Positioning: Tooltips, Dropdowns and Popovers Without JavaScript
Anchor positioning places an element relative to another with CSS; a popover opened by a button takes that button as its anchor, and position-area with flip-block gives a menu and a preview without JavaScript. Its core became Baseline with Firefox 147 in January 2026; web-features shows 'limited' today because the position-visibility values were renamed.
There Is No "CSS4": CSS Snapshots, Baseline, Interop and What Arrived 2023–2026
CSS has no version number: modules raise their own levels independently, and the W3C's CSS Snapshot 2025 states plainly that there is no CSS Level 4. Whether to use a feature is decided with Baseline (newly and widely available), Interop and @supports; the post builds the 2023–2026 chronology from web-features and compares the browser targets of Angular, Vite and Tailwind on Bookstore.