Melin's Blog

Latest posts

See all posts
  • How I Pass Parameters from CSS to JavaScript
    CSS is often better than JavaScript at answering environment questions. It can detect viewport size, dark mode, pointer behavior, hover support, reduced motion preferences, and...
  • Understanding 3D LUT Color Mapping: From Color Cubes to a JavaScript Demo Shell
    3D LUT filters are one of the core tools behind cinematic color grading. At a high level, a 3D LUT is a lookup table that remaps one RGB color to another RGB color. Instead of c...
  • Detecting DOM Size Changes: A Brief Introduction to JavaScript’s `ResizeObserver`
    MutationObserver is useful when you need to detect changes to DOM nodes, attributes, or text content. But for a long time, detecting size changes was less direct. Developers oft...
  • ES6 Math Methods and Number Features: A Practical Guide
    JavaScript numbers look simple at first: one Number type, one global Math object, and a handful of familiar methods like Math.round() , Math.floor() , and parseInt() . ES6 made...
  • Practical Notes on JavaScript Events for Two-Finger Image Zoom on Mobile
    Implementing image zoom on mobile sounds simple until you try to debug real two-finger gestures in the browser. The tricky part is not only applying transform: scale() to an ima...
© 2026 • Melin
Press Esc or click anywhere to close