-
用 CSS scroll-driven animations 把动画绑定到滚动位置或元素进入视口的进度,拆清 scroll timeline、view timeline、animation-range 的关系,并给出 prefers-reduced-motion 与 @supports 降级方案。
-
在 React 里,如果用 useCallback 包住一个依赖组件 state 的事件处理函数,却没有把这个 state 一并写进依赖数组,问题就来了:闭包会一直拿着初始的 state 值不放,结果看起来就像状态更新只成功了一次。解决办法其实很直接,把函数真正依赖的 state 变量,比如 dar
-
本文介绍多种可靠方式判断字符串首字符是否为数字(0–9),重点解决正则误判、空字符串边界问题,并提供简洁高效的替代方案。 本文介绍多种可靠方式判断字符串首字符是否为数字(0–9),重点解决正则误判、空字符串边界问题,并提供简洁高效的替代方案。在 Ja vaScript 里,如果要判断一个字符串(比如
-
Vite 8.1 已使用 Rolldown 与 Oxc。本文比较直接升级、rolldown-vite 过渡和兼容层兜底,说明如何从配置警告与插件挂载位置判断迁移风险。
-
本文用完整工作流讲解前端长列表虚拟滚动:计算可视区、设置上下占位、只渲染窗口数据,并用卡顿排查清单验证优化效果。
-
中文搜索框不能靠空格切词。本文用 JavaScript Intl.Segmenter 的 word 粒度保留 segment、index 与 isWordLike,再把字符位置映射到高亮范围,处理中文、英文和表情符号的边界。
-
本文详解 React 中因 useCallback 依赖数组遗漏状态变量,导致 useState 切换函数仅执行一次的问题,并提供正确写法、原理分析与最佳实践。 本文详解 React 中因 `useCallback` 依赖数组遗漏状态变量,导致 `useState` 切换函数仅执行一次的问题,并提供
-
本文讲解如何通过事件委托(Event Delegation)为动态添加的 .checkbox 元素正确绑定点击事件,解决直接遍历 querySelectorAll 导致新元素无响应的问题。 本文讲解如何通过事件委托(Event Delegation)为动态添加的 `.checkbox` 元素正确绑定
-
用 AbortController 和 AbortSignal.timeout 为 Fetch 设置超时,区分 TimeoutError、AbortError、HTTP 状态和普通网络错误,并给出兼容回退写法。
-
复杂组件更新时,CSS contain 可以把布局、绘制、样式或尺寸计算限制在子树内。本文说明 layout、paint、size、content 的边界,解释定位和溢出副作用,并给出 contain-intrinsic-size 的实用写法。
-
长列表加载更多时,IntersectionObserver 可能因哨兵节点持续可见而重复触发。本文用 sentinel、entry.isIntersecting、loading 和 loadMore 收口一次请求,处理快速滚动与末页边界。
-
IntersectionObserver 观察列表底部时反复触发,通常源于初始通知、相交状态变化与分页请求状态混在一起。本文用 loading、hasMore、nextCursor 和 unobserve 组合,避免同一页重复请求。
-
本文用完整工作流讲解前端图片懒加载:首屏主图优先加载,视口外图片延后请求,并通过 LCP、网络请求和滚动体验验证优化效果。
-
自定义元素已经出现在 HTML 中时,脚本晚到仍可通过 customElements.define 完成升级;真正容易出问题的是重复注册、connectedCallback 多次触发和元素尚未连接时的初始化。本文用 price-badge 示例拆开升级时机、生命周期和可回退的注册写法。
-
HTML inert 是一个全局布尔属性,可以让元素及其后代暂时不能获得焦点、点击或进入辅助技术的可访问性树。本文用一个可关闭弹窗说明如何切换 inert、保留弹窗内焦点、处理 Escape 和旧浏览器降级,并列出容易把 aria-hidden、pointer-events 与 inert 混用的边界。