-
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。
-
可通过可视化编辑器的“文本”模式直接输入HTML;2.Gutenberg中使用“自定义HTML”区块插入代码;3.小工具区域添加HTML用于侧边栏或页脚;4.高级用户可修改主题文件手动添加,推荐普通用户使用区块或小工具方式安全操作。
-
前端大数据量序列化卡顿的根本原因是JavaScript单线程导致计算与UI渲染争用主线程;需通过WebWorker剥离密集计算,并优化任务内部避免深拷贝、采用流式处理和结果缓存,辅以小数据量直行与加载态提示等兜底策略。