-
当父容器宽度小于按钮固有宽度时,通过设置white-space:nowrap可阻止按钮内文本折行,并配合合理overflow控制,实现按钮强制保持原始尺寸、横向溢出父容器的效果。
-
JavaScript的sort方法根据数组长度动态切换算法:≤10用插入排序,11–1000用快排(取中值基准),>1000用采样中位数优化快排;默认字符串化比较导致数值排序错误,需传比较函数;ES2019起稳定排序,但会就地修改原数组。
-
npminstall后import不生效的主因是模块解析环境不匹配:浏览器原生ESM不支持包名解析,Node.jsESM需.mjs或type:"module",推荐用Vite等构建工具接管;React生态库如antd需注意编译配置、按需导入插件及CSS显式引入;CDN引入Vue须选对版本并显式解构API;Webpack的require.context行为特殊且不可跨工具迁移。
-
懒加载能提升首屏速度,但仅适用于非首屏资源;对首屏主图误用会导致CLS或空白占位符。loading="lazy"最简但兼容性有限,IntersectionObserver更可控,关键资源应优先使用preload或fetchpriority。
-
AppCache已被所有主流浏览器废弃,唯一可行的离线方案是ServiceWorker+CacheAPI;因其存在更新不可控、全站故障、不支持请求拦截等根本缺陷,W3C于2018年将其标记为obsolete。
-
结构化克隆算法是浏览器内置的深拷贝机制,用于正确复制Date、RegExp、Map、Set等类型并处理循环引用;通过structuredClone()函数可直接使用,但不支持function、undefined、Error、Symbol及DOM元素;对于不兼容环境可降级使用MessageChannel、第三方库或自定义递归方案。
-
try-catch只捕获运行时同步错误,不捕获异步错误;catch参数是标识符而非类型声明;finally总会执行且return会覆盖try/catch返回值;async/await中try-catch可捕获await的Promise拒绝。
-
FetchAPI是广义Ajax的一部分,非XMLHttpRequest替代品;它返回Promise但不自动拒绝4xx/5xx错误,需手动检查response.ok;POST传JSON需设Content-Type并JSON.stringify;不支持同步请求、上传进度事件和内置超时,需AbortController实现。
-
border-radius过渡卡顿是因浏览器需重绘渲染路径,尤其在复杂样式下开销大;推荐用clip-path替代、避免干扰属性、控制缓动或分段过渡,并排查布局抖动。
-
可通过全局变量、data属性、隐藏input、闭包模块四种方法在HTML中读取JavaScript变量值:全局变量直接挂载window;data属性中转避免污染;hiddeninput适合表单;闭包模块封装getter确保安全访问。
-
CSS动画结合filter属性可实现动态模糊等视觉效果,核心方法是使用transition或@keyframes控制blur值变化,适用于悬停交互或复杂动画;现代浏览器对filter兼容性良好,但backdrop-filter需注意旧版兼容与性能;为优化性能,应合理使用will-change、GPU加速、控制模糊半径,并避免复合昂贵动画;此外,filter还支持黑白、亮度、色相旋转等创意动画,提升界面表现力。
-
JavaScript无法直接读写本地文件,而是通过Blob、File、FileReader等API在内存中处理二进制数据;File是带元信息的Blob;读取内容须用FileReader或arrayBuffer;BlobURL需手动释放以防内存泄漏;下载应使用Blob+a.download组合。
-
addEventListener是唯一推荐方式,因它支持同一事件多监听、控制捕获/冒泡阶段、可精准移除、兼容性好且为现代框架底层依赖;e.target是实际触发元素,e.currentTarget是绑定监听器的元素;异步操作前需检查DOM存在性。
-
transition通过状态变化触发动效,适用于简单交互反馈;2.animation基于@keyframes独立运行,支持复杂关键帧与循环,适合连续动画;3.推荐transition用于用户交互过渡,animation用于自动播放或精细控制,优先使用transform和opacity以优化性能。
-
:enabled和:disable伪类用于区分表单元素的可交互状态,前者为可操作元素设置样式如蓝色边框,后者为禁用元素添加灰色背景与禁止光标,提升表单状态的视觉提示。