-
动态import()返回Promise,实现运行时异步加载模块,区别于静态import的预加载;当执行到import('./module.js')时才发起请求,结合Webpack或Vite可自动代码分割,生成独立chunk,用于路由级分割、功能懒加载或条件加载,首屏仅加载核心代码,降低初始体积,提升性能,且支持浏览器缓存复用。
-
navigator.sendBeacon是“最后一眼”日志唯一可靠选择,因其被规范明确保证页面卸载后仍尽力发送,不阻塞流程、不依赖事件循环,且兼容主流现代浏览器;但仅支持POST,payload须为Blob/FormData等合法类型,不可直接传字符串或JSON对象。
-
虚拟DOM通过JavaScript对象模拟真实DOM,利用Diff算法比较新旧节点差异,实现最小化更新。其核心是避免频繁操作耗性能的真实DOM,采用同层比较、类型变化重建、key优化列表等策略,将复杂度降至O(n),并通过批量更新提升渲染效率。
-
多行文字溢出显示省略号可通过-webkit-line-clamp实现,需配合display:-webkit-box、-webkit-box-orient:vertical和overflow:hidden使用,适用于现代浏览器,如设置3行截断则写-webkit-line-clamp:3,注意line-height固定以确保截断准确,兼容性方面IE不支持,Firefox需JavaScript辅助,可采用字符截断或服务端处理作为降级方案。
-
Headless浏览器自动化测试核心在于稳定性、可调试性及符合真实用户行为,推荐Puppeteer和Playwright而非Selenium;前者通过CDP精准控制加载时机、字体就绪、多浏览器兼容等,后者统一API覆盖Chromium/WebKit/Firefox并支持真实Safari预览版。
-
left:0没效果是因为元素未设置position属性,只有position为relative、absolute、fixed或sticky时,left才生效;需配合定位上下文使用,否则元素仍处于静态文档流中。
-
fetch不抛HTTP错误,必须手动检查response.ok并处理response.json()可能的reject;POST需配对JSON.stringify与Content-Type;跨域带cookie需前后端CORS头配合;超时需AbortController;空响应或非法JSON易致脚本崩溃。
-
用flex布局父容器可让多个grid容器横向并排,因grid-template-columns仅控制单个网格内部列,不影响容器间排列;inline-grid不稳定,嵌套Grid更适合同一布局内的功能区块划分。
-
瀑布流不能用grid-row跨行,因多列流布局不支持row-span;真实瀑布流需JS测各列高度、插入最短列,并通过设置height模拟跨行,同时必须处理图片加载导致的高度塌陷。
-
background-attachment:scroll是默认值,使背景图随元素滚动而同步移动;fixed使背景固定于视口,local则随元素内容滚动,三者作用对象不同。
-
JavaScript异步编程必须深入理解Promise机制与AbortController用法,async/await仅为语法糖;需掌握Promise状态流转、错误捕获、手动reject时机及fetch取消的正确实践。
-
Sass中hover伪类嵌套失效主因是编译后CSS选择器权重不足、父元素缺少交互属性或层叠上下文,且&仅为父选择器字面拼接占位符,非逻辑封装;需检查编译输出、避免非法嵌套、注意伪类组合顺序及移动端兼容性。
-
accesskey属性不可靠,应禁用;其仅触发焦点切换且无反馈,存在跨浏览器差异、系统快捷键冲突、无障碍缺陷等问题;生产环境须用document级keyboard事件监听,配合e.ctrlKey/e.metaKey和e.code判断,并妥善管理生命周期与上下文。
-
HTMLimport已废弃,仅执行脚本而不解析DOM、样式或模板;现代方案应使用ES模块配合fetch/DOMParser动态加载并手动解析HTML片段。
-
Flex子项默认不收缩到内容宽度以下是因浏览器强制设定「最小内容尺寸」下限,由最长不可折行内容(如长单词或图片)决定;该尺寸是flex-shrink的收缩极限,min-width:0可覆盖此限制使收缩生效。