Melin's Blog

Latest posts

See all posts
  • How Can JavaScript Detect Whether the User Has Zoomed the Page?
    Page zoom sounds simple until you try to detect it reliably. On desktop, users usually zoom with Ctrl + , Ctrl - , or the browser menu. On mobile, users pinch to zoom. Those two...
  • A Practical Guide to Converting HTML Strings into DOM Nodes
    Converting an HTML string into real DOM nodes sounds simple, but the browser gives us several APIs with different tradeoffs. Some are fast, some are safer, some require a valid...
  • Using ffmpeg.wasm to Implement Multi-Audio and Video Compositing Entirely on the Front End
    Front-end video generation sounds simple until audio enters the picture. If all you need is visual recording, the browser already gives you several options. canvas.captureStream...
  • Using `navigator.connection.downlink` to Measure Network Speed on the Front End
    For feed-style products like Weibo, image lists are everywhere. On mobile, those images are often served as 2x or even 3x assets to preserve visual quality on high-density scree...
  • First Impressions of Vap, Tencent’s Open-Source Solution for Playing Cool Animations
    A colleague recently mentioned Vap in our group chat. The description was simple: it can play flashy animation effects, and more importantly, it supports transparent animation b...
© 2026 • Melin
Press Esc or click anywhere to close