-
这是CSS外边距合并行为:父子元素间无border/padding时,子元素margin-top会与父元素上边缘合并,导致父容器下移;仅发生在垂直方向块级元素间,合并值取较大者,负值参与计算。
-
应使用history.pushState()接管导航并同步更新URL与视图状态,配合popstate监听及服务端historyApiFallback配置,确保标签页切换不刷新、状态不丢失且直链可用。
-
filter过渡无效因浏览器插值支持差,需显式声明初始/结束值、统一单位、加will-change;hover抖动源于layoutshift,应强制GPU层并固定尺寸;transitionend事件不可靠,建议用setTimeout或requestAnimationFrame轮询;深色模式/print下需媒体查询重置filter;多层filter应拆分元素实现。
-
iOSSafari中overscroll-behavior:contain失效主因是容器未真正进入可滚动状态,需同时满足:有明确宽高、无transform/will-change干扰、滚动上下文未被阻断。
-
inset-inline-start是逻辑定位属性,值取决于direction和writing-mode:LTR下等价left,RTL下等价right;仅对absolute/fixed元素生效,不可与left/right混用,需配合inset-block-start等使用,依赖父元素direction,非body或系统设置。
-
使用CSSGrid布局时,gap用于设置行列间距,padding控制容器内边距,margin处理特殊外边距;推荐用gap管理项目间距,padding营造容器留白,谨慎使用margin避免冲突,三者协同提升布局清晰度与响应式效果。
-
Blob本身不提升性能,但能绕过传统文件处理瓶颈:避免全量加载内存、跳过服务器中转、支持流式操作;应分块读取、及时释放引用、优先用URL.createObjectURL预览,构造File需继承Blob,fetch后用blob.stream()实现无压力解析。
-
当用户取消勾选“保存颜色”复选框时,页面会意外立即变色——根本原因在于removeEventListener无法移除匿名函数,导致旧监听器未被清除,新监听器又被重复添加,引发一次冗余执行。
-
Symbol.iterator用于同步遍历,需返回具有next方法的迭代器对象,支持for...of循环;Symbol.asyncIterator用于异步遍历,返回Promise形式的{value,done}结果,支持forawait...of循环。
-
令牌桶限流必须阻塞等待而非立即返回Promise,核心是维护等待队列、原子获取令牌、独立定时补桶(固定增量、全局唯一可清理)、透传原函数Promise状态,并按key隔离桶实例且带TTL清理。
-
overflow属性影响内容溢出时的显示与裁剪,尤其在定位元素中决定子元素是否被截断。其取值visible、hidden、scroll、auto分别控制溢出行为;当祖先元素overflow为hidden时,绝对定位子元素会遭裁剪,常导致下拉菜单或弹窗显示异常;设置overflow为hidden或auto可创建BFC,防止margin折叠并包含浮动;实际开发中应避免根元素设为hidden以防fixed元素被裁剪,优先使用auto以提升体验,并注意组件层级与兼容性问题。
-
直接caches.match(event.request)会出问题,因其不区分请求类型,导致POST、带credentials的登录请求及API响应被错误匹配缓存;应按event.request.destination分流处理:document需兜底,script/style可缓存,json/empty等必须直连网络。
-
Map支持任意类型键(对象、函数、Symbol等),而Object仅支持字符串和Symbol;Map用SameValueZero算法判断键相等,0与-0、NaN与NaN均视为相等,引用类型需同一实例才能匹配。
-
clip()必须先定义路径再调用才生效,否则裁剪区域为空;多次clip取交集,重置需save/restore;drawImage受目标区域裁剪影响;clearRect也受其限制。
-
推荐使用DartSass是因为Node-Sass已停止更新,不支持CSS新语法如calc()中的/、color-mix()、@container等,而DartSass同步CSS标准演进,是唯一能正确解析和兼容现代CSS特性的实现。