-
<p>box-sizing:border-box是响应式布局的默认起点,因其避免百分比宽度与padding/border组合导致的溢出;在flex/grid中content-box会额外挤占空间,引发布局异常;全局重置推荐*{box-sizing:border-box;}并覆盖伪元素;切换时需用calc()补回尺寸或改用弹性单位。</p>
-
柯里化将多参函数转化为单参函数链,组合通过pipe或compose连接函数,实现逻辑清晰、可复用的函数式编程。
-
最稳妥的弹出框定位方案是基于触发元素边界盒计算鼠标相对位置,并叠加滚动偏移与视口边界校验;需用absolute定位而非fixed,确保兼容嵌套滚动容器,且须等待DOM尺寸稳定后再执行定位。
-
WeakMap和WeakSet通过弱引用避免内存泄漏,适用于缓存数据、存储私有属性和标记对象状态。其键或值不阻止垃圾回收,适合管理对象生命周期相关的场景。
-
<p>滚动加载核心是监听滚动事件并判断是否触底(scrollY+innerHeight>=scrollHeight-100),通过isLoading锁和hasMore标识防重复请求,结合节流(非防抖)优化性能,并在DOM更新后重置状态。</p>
-
最常见的原因是外部CSS文件未正确引入,包括路径错误、加载顺序不当、缓存问题或MIME类型不匹配,需检查link位置、href路径、Network响应及样式覆盖情况。
-
WebSQL不支持XML类型字段,XML仅作TEXT存储且无结构校验;存前需DOMParser+XMLSerializer转义,查后需重新解析;推荐改用JSON、IndexedDB或服务端解析。
-
首先确认安装Web开发工具,通过EclipseMarketplace安装WebToolsPlatform;接着创建DynamicWebProject项目,并在WebContent目录下新建HTML文件;然后配置本地Tomcat服务器并部署项目;最后启动服务器并右键HTML文件选择RunonServer,在浏览器中查看运行效果。
-
Map和Set不是语法糖,而是解决Object/Array在键类型、去重、遍历、性能上的根本缺陷;Map支持任意类型键且无原型污染,Set基于SameValueZero去重并保序,但二者不支持JSON序列化且兼容性受限。
-
Math.random()生成[0,1)浮点数,整数范围[min,max]用Math.floor(Math.random()(max-min+1))+min,浮点数范围[min,max)用Math.random()(max-min)+min。
-
优先用transition处理简单状态切换,如hover、toggle;需多步变化、循环或复杂时序时用animation。二者可共存,但需注意性能、兼容性及无障碍支持。
-
IE11中video标签不支持aspect-ratio且忽略width/height语义,需用padding-top百分比容器配合绝对定位实现等比缩放,object-fit无效但可用contain防拉伸,poster尺寸须匹配视频比例,preload避免auto,动态插入需预设样式或监听loadedmetadata修正。
-
JavaScript内存泄漏检测与避免需理解GC机制、识别泄漏模式并持续监控:全局变量、未清理定时器、闭包缓存、未解绑事件、DOM引用残留是常见原因;ChromeDevTools可录制分配时间线、对比堆快照定位泄漏;编码中应完善组件销毁逻辑、分页处理大数据、运行时监控内存、CI引入静态检查,Node.js需慎用全局缓存并利用--inspect分析。
-
JavaScript代码压缩通过移除无用字符、简化语法、混淆变量名等减小体积,提升加载速度;核心是不改逻辑前提下使代码更紧凑,依赖Webpack/Vite等构建工具自动启用Terser,在production模式下删除注释空格、缩短名称、tree-shaking、简化表达式;也可手动调用Terser命令行或API压缩;压缩前应清理console/debugger、冗余代码、优化字面量和模块化;服务端需配合Gzip/Brotli压缩,Brotli比Gzip平均再减15%体积。
-
当CSS中line-height被设为极小值(如2px),会导致行高远小于字体实际高度,引发上下段落文字相互覆盖;正确做法是移除该值或使用无单位数值(如1.4)让浏览器自动计算合理行高。