-
JavaScript不直接适配屏幕,而是通过检测(如clientWidth、visualViewport)、响应(resize/orientationchange事件)和补位(动态改class、canvas像素比)实现;需节流监听、区分CSS/物理像素、配合viewport与dpr处理高清屏。
-
响应式灰度开关通过可监听、动态更新的状态变量实现运行时功能控制,支持远程配置、动态加载、实时更新与本地缓存降级,无需重载页面。
-
WebWorkers无原生事件模型,需用postMessage+状态机+消息路由模拟事件调度:主线程捕获真实事件并发送带type和payload的消息,Worker内用Map实现简易事件分发器,支持多阶段反馈与ID关联的Promise化封装。
-
Array.from(newSet(arr))对简单原始值去重高效,百万级数据通常5–20ms;对象需用Map按字段去重;超大数据应分块、流式处理或移至WebWorker。
-
fixed定位缩放偏移的根源是视口坐标系漂移,须用vh/vw替代px实现同比例缩放,禁用混用单位、transform父级及错误viewport配置,并辅以visualViewportAPI微调。
-
ServiceWorker生命周期是状态驱动的异步过程,注册仅提交申请,install和activate可能被阻塞或跳过;需通过waitUntil保证缓存可靠性,用skipWaiting和clients.claim推进控制权交接。
-
column-count没生效主因是容器未设宽度、内容过短或被其他CSS覆盖;需确保块级容器有width/max-width、文本连续且无打断元素,并检查overflow/transform/contain等禁用属性。
-
box-sizing:border-box必须同时应用于input和button才能稳定对齐,因二者默认盒模型不同:button为border-box(border/padding含在height内),input为content-box(border/padding外扩),仅设相同height会导致视觉错位;line-height比height更可靠,尤其在Flex布局中能自然居中并拉齐高度。
-
type="module"是浏览器的环境切换器,启用后整套脚本加载、解析、执行逻辑变为ES模块规范:import必须在type="module"脚本中使用,路径需带./或/且含扩展名,模块默认defer并按模块图顺序执行,作用域隔离,预加载用modulepreload,跨域需crossorigin及CORS头。
-
:empty伪类用于选择无子元素或内容的元素,可隐藏空提示容器、标识表格空单元格、设置动态内容占位符;需注意其严格判定规则,仅匹配完全空白的元素,含空格、换行或注释均不匹配。
-
document.documentElement.scrollTop在Chrome/Firefox中常为0,因实际滚动容器是body;应优先使用window.pageYOffset或document.scrollingElement.scrollTop获取准确滚动距离。
-
WeakSet是防递归死循环的唯一合适选择,因其弱引用不阻止对象回收、仅支持对象且仅提供存在性判断,需在递归前用has()检查、add()立即标记,避免内存泄漏与误用。
-
子元素margin撑不开父容器是因外边距折叠,需触发BFC(如display:flow-root);width:100%溢出因box-sizing默认为content-box,应设border-box;absolute定位需父设position:relative;Flex中margin:auto可居中,前提父为flex且未覆盖对齐属性。
-
触摸交互必须用BEM修饰符(如btn--pressed)配合JS显式控制,禁用:active伪类;需同步touchstart/touchend、focus/blur及aria-pressed,并确保PurgeCSS保留状态类。
-
必须区分三类全局污染:Program级var声明、隐式赋值(a=1)、显式window.xxx挂载;ESM/CJS模块需结合导入关系分析;替换var为let/const会破坏typeof检测、for循环闭包及UMD环境判断,且Babel默认不转顶层var。