前端技术文章
-
CSS if() 可以在单个属性值中根据 style()、media() 或 supports() 条件选择结果,适合收拢主题和响应式分支,但它仍是实验性能力。本文用自定义属性示例说明条件顺序、else 回退、@media 与 @supports 的边界,并给出上线前的兼容检查。216 收藏 -
React 列表删除一项后输入框内容错位,通常是使用数组下标作为 key,让组件状态按位置复用。本文从可编辑购物清单出发,说明如何用创建时生成的稳定 id 绑定列表项、更新删除回调和输入状态。215 收藏 -
用版本化 Cache API、install/activate 生命周期和限定 fetch 匹配范围,避免 Service Worker 更新后继续命中旧资源。215 收藏 -
用 structuredClone 复制前端表单草稿时,普通对象、File 和不可序列化字段的行为并不相同。本文从真实的编辑草稿场景出发,拆开克隆、转移与 DataCloneError 的边界,并给出可复测的检查方法。213 收藏 -
当 hover 位移、入场缩放和循环旋转同时写进一个元素时,animation-composition 可以明确 transform 的叠加方式。本文用 add、accumulate 和 replace 拆开关键帧冲突,并给出兼容降级与验收方法。210 收藏 -
BroadcastChannel 单个对象不会收到自己的广播,多实例场景应通过每个页面独有的 senderId 在 message 入口过滤来源,避免重复更新状态。209 收藏 -
ResizeObserver 回调直接写回布局容易形成重复通知。本文用 WeakMap 记录期望尺寸,用 requestAnimationFrame 合并写入,并补充阈值、次数边界和 disconnect 清理方法。209 收藏 -
搜索框连续输入时,旧请求可能晚于新请求返回并覆盖结果。本文用 AbortController 取消上一请求,配合请求序号和状态复原,收口竞态并给出可运行的验证示例。207 收藏 -
文章 · 前端 | 3星期前 | 前端 · javascript · 可访问性 · 表单校验 Web Components ElementInternals Custom Elements Shadow DOM
自定义元素放进原生 form 后,ElementInternals 可以让组件参与表单校验、提交和无障碍语义。本文用一个邮箱字段拆开 setValidity、表单状态同步和回退边界。205 收藏 -
WebSocket 断线重连时,分别在 error 和 close 中 setTimeout 很容易形成多个重连链。本文用单一调度器、指数退避和 stop 清理解决定时器叠加问题。205 收藏 -
排查 Vite 生产构建仍读取旧环境变量的问题,解释 --mode、NODE_ENV、.env 文件和进程环境变量的优先级,并给出配置阶段与构建阶段的核对方法。204 收藏 -
前端表单重复提交通常不是单纯把按钮 disabled 就能解决。本文从 submit 事件、form.submit()、requestSubmit() 和原生校验的差异出发,给出一次提交门闩、异步恢复与键盘回车场景的可验证写法。200 收藏 -
Worker.terminate() 会立即停止 Worker,未完成计算和未发出的消息不会自动补发。本文用请求编号、确认消息和协作取消协议处理销毁边界,并说明 structured clone 与 transfer list 的对象所有权差异。199 收藏 -
BroadcastChannel 关闭标签页后收不到消息,通常不是浏览器漏发,而是旧实例已离开通道且 API 不保存历史。本文用生命周期封装、主动同步和状态快照给出可落地的处理方式。199 收藏 -
用 Temporal.PlainDate 处理生日、账期和只关心日历日期的业务值,避开 Date 的时区偏移,覆盖 from、compare、until、toString 与旧浏览器降级边界。198 收藏