-
实现模态层时,inert 负责让背景区域真正停止交互,dialog 与 aria-modal 负责表达语义,关闭时再把焦点还给触发按钮,避免键盘用户迷路。
-
white-space-collapse 把空白折叠从 white-space 中拆出来,适合处理用户输入、代码片段和多行说明。本文用最小示例解释 collapse、preserve、preserve-breaks、preserve-spaces、break-spaces 的差异,并给出旧浏览器降级与验收方法。
-
用一个可运行的 Web Streams 示例拆开 TransformStream 背压:看清 ReadableStream、writableStrategy 和 WritableStream 之间的队列边界,并处理 flush 与 abort。
-
这篇教程不会只停留在零散知识点上,而是借助一个完整的项目案例,把 TypeScript 的各种特性系统地串联起来、用起来。 从项目搭建一路讲到真实开发场景,把 TypeScript 在实际项目里到底怎么用,完整地呈现出来。 项目实战:任务管理系统 前端 (React + TS) Vite + Rea
-
用 position-try-fallbacks 为 CSS 锚点浮层安排有优先级的回退候选,理解逗号与空格的区别,并处理双轴翻转和兼容降级。
-
多列卡片的标题和正文长度不同会让按钮上下错位。本文用 CSS subgrid 继承父网格行轨道,对齐嵌套卡片的标题、内容和操作区域,并给出 gap、响应式和兼容降级方案。
-
fetch 的 catch 不能单独证明是 CORS 还是断网。本文用 Response.ok、AbortError、Console、Network 和服务端日志建立一套可执行的判断路径。
-
CSS Masonry 仍处于早期开发阶段,实际项目应先用稳定的 CSS Grid 或多列方案兜底,再逐步验证列数、图片尺寸、阅读顺序和浏览器支持。本文用一组可回退的卡片布局说明列高差、图片加载和无障碍顺序的处理边界。
-
前端用 URL.createObjectURL 预览 File 或 Blob 时,revokeObjectURL 不能机械地立刻调用。本文按图片加载、替换预览、组件卸载和下载链接四种边界,说明什么时候释放对象 URL 才不会让资源提前失效。
-
前端已经发布新代码,浏览器却仍加载旧 JS,通常不是缓存策略一个开关的问题,而是入口 HTML、资源哈希和上传顺序没有形成闭环。本文用一个可复查的发布流程拆开判断。
-
页面偶发点击无响应,先别急着把锅甩给网络。本文用 PerformanceObserver 记录 50ms 以上长任务,结合 Chrome Performance 面板定位 JSON.parse 和同步渲染造成的主线程阻塞,再用分片处理和 requestIdleCallback 做可验证的修复。
-
IndexedDB 的 readwrite 事务不是可以任意 await 的长连接。本文解释请求回调、事件任务与自动提交的关系,并给出连续写入、跨异步边界拆分事务和提交结果判断的实用写法。
-
Promise.withResolvers 适合回调触发位置与 Promise 创建位置分离的场景,例如事件监听器、消息队列、流和 SDK 外部回调。本文用一个带缓冲和清理能力的异步队列说明正确封装方式,并列出不适合使用 deferred 的边界。
-
Service Worker 的 fetch 事件不是所有请求都适合缓存。本文用同源、GET、路径和请求意图四个条件建立绕过清单,给出静态资源缓存、动态接口放行和旧缓存清理的最小实现。
-
从登录状态、编辑草稿和多窗口协作三个场景出发,对比 BroadcastChannel、localStorage 的 storage 事件与 SharedWorker 的消息路径,给出选择边界和可验证的最小实现。