CSS
20 min
CSS pointer-events: inert, Click-Through, disabled & SVG
pointer-events is a one-line CSS property that controls whether an element can be the target of mouse, touch, and pen interactions. Most guides stop at click-through overlays. This guide adds the inert attribute alternative for disabled subtrees, the disabled-attribute-vs-pointer-events table for native form controls, transition-behavior: allow-discrete for fade-in menus, dialog ::backdrop click-to-close, SVG bounding-box hit areas, map/canvas HUD click-through, the JS Pointer Events API disambiguation, and the senior-dev debugging anti-pattern.
CSS
23 min
CSS :focus-visible: Keyboard Focus, WCAG & inert
Removing outline:none without a replacement is one of the most common accessibility failures on the web. CSS :focus-visible shows a focus ring for keyboard users and hides it for mouse clicks — but most tutorials stop there. This guide adds the sticky-header scroll-padding-top trap, modern inert and <dialog> focus management, the :has(:focus-visible) modern keyboard-only parent highlight, accent-color for native form focus, why tap on mobile doesn't show a focus ring, cross-browser heuristic differences, and the WICG polyfill for legacy browsers.
CSS
17 min
CSS @supports: Feature Detection & Progressive Enhancement
CSS @supports is pure CSS feature detection — no JavaScript, no Modernizr. The modern Modernizr alternative is built into CSS itself. This guide covers @supports examples, the not/and/or operators, the selector() function (with the empty :has() gotcha), at-rule() for detecting @layer and @scope, Tailwind's supports-[] arbitrary variant, OKLCH and View Transitions detection, @supports inside @container for component-scoped gating, the double-negation parser quirk, and the CSS.supports() JavaScript API.
CSS
19 min
CSS Dark Mode: prefers-color-scheme, light-dark, OKLCH
The complete CSS dark mode guide — prefers-color-scheme media query, the new light-dark() function with the color-scheme gotcha, OKLCH tokens with color-mix() for perceptual lightness scaling, Material 3 surface elevation, View Transitions API for the toggle animation, the SSR/SSG FOUC fix matrix (Next.js cookie pattern), Windows High Contrast Mode survival with forced-colors, meta theme-color for mobile chrome, Tailwind v4 @custom-variant dark, and cross-tab sync.
CSS
19 min
CSS aspect-ratio Property: Complete Guide With Live Visualiser
CSS aspect-ratio is one line where the old padding-bottom hack needed five. It reserves space proportionally, eliminates layout shift, and works natively in every browser since 2021. This guide covers every value, the auto fallback for images, the gotchas with flexbox and content overflow, CSS custom-property patterns, Tailwind/Bootstrap equivalents, the @media (aspect-ratio) vs property disambiguation, view-transition interpolation, social-card cropping with object-position, and a complete common-ratios reference.
CSS
21 min
CSS mask: Fade, Reveal & Shape Elements (Complete Guide)
CSS mask uses another image or gradient as a stencil for element visibility. Unlike clip-path's hard edges, mask creates soft fades, partial transparency, and graduated reveals. This guide covers the alpha vs luminance reality (not just black=visible), gradient masks, SVG icon recoloring with currentColor, scroll container edge fades, spotlight hover, wipe reveals, scroll-driven animation-timeline reveals, mask-composite + mask-border, and the -webkit-mask-composite naming mismatch that silently breaks Safari.
CSS
21 min
CSS mix-blend-mode: Blend Text, Images & Colors Like Photoshop
mix-blend-mode lets an element's pixels react to whatever is behind them — the same algorithms Photoshop uses. Remove white backgrounds from logos. Make text always readable (with the WCAG caveat nobody mentions). Build duotone photos in pure CSS or with Spotify-style SVG feColorMatrix. Plus the interaction matrix when mix-blend-mode silently stops working with opacity/filter/transform, plus-lighter/plus-darker (CSS Blending Level 2), animation behavior, glitch/chromatic-aberration patterns, and forced-colors fallbacks.
CSS
21 min
CSS filter & backdrop-filter: The Complete Visual Guide
CSS filter applies effects to an element — blur, grayscale, brightness, contrast, drop-shadow. CSS backdrop-filter applies those same effects to whatever is behind the element. This complete guide covers both properties, the filter-order gotcha, drop-shadow vs box-shadow, glassmorphism patterns (including Apple's Liquid Glass + dialog::backdrop modals), filter: url() for SVG-referenced effects like duotone and gooey blobs, prefers-reduced-transparency, @supports fallbacks, forced-colors mode, the iOS Safari fixed-position bug, and performance tiers.
CSS
21 min
CSS clip-path: Create Any Shape — The Complete Guide
clip-path lets you cut any element into any shape — circles, hexagons, arrows, diagonals, chevrons — with pure CSS. No SVG files, no image masks, no extra HTML. This complete guide covers every value, animation patterns, the new shape()/rect()/xywh() functions, scroll-driven reveals with animation-timeline: view(), clip-path: url() for arbitrary SVG paths, the Clippy generator, hover/click area gotchas, @keyframes loops, and the wrong-tool bugs nobody demonstrates.
CSS
25 min
CSS scroll-snap: Build a CSS Carousel Without JavaScript
Build a CSS carousel without JavaScript in 5 lines of CSS. This complete guide covers every scroll-snap property, mandatory vs proximity, the new scrollsnapchange event, scroll-padding for sticky headers, the CSS Carousel API (::scroll-marker and ::scroll-button), scroll-driven animations paired with snap, the 100dvh fix for mobile, drag-to-scroll for desktop, keyboard accessibility, and 'scroll snap not working' troubleshooting.
CSS
28 min
CSS @font-face: The Complete Guide to Loading Custom Fonts Right
Most @font-face tutorials cover the basics and say 'add font-display: swap'. That's not wrong, but it's about 20% of what you need to know. This guide covers all 5 font-display values, variable font axes, font-synthesis: none, the Font Loading API, font-variant-numeric, modern system font stacks, the adjusted fallback pattern that eliminates layout shift, unicode-range, FOIT/FOUT/FOFT, preload's LCP trade-off, and whether you should still use local() .
CSS
24 min
CSS Selectors You're Not Using (But Should Be)
You know div, .class, and #id. But CSS has dozens of selectors that replace JavaScript event listeners, eliminate helper classes, and handle UI state in pure CSS. This guide covers the underused ones actually worth learning — :has(), :focus-within, :user-valid, :nth-child(of selector), :where()'s zero-specificity trick, the :checked + ~ state machine, :target for routable UI, @scope, :defined, :dir(), and more.