-
Cropper.js初始化图片不显示或黑屏,主因是容器无显式宽高或图片未加载完就初始化;必须用img.onload确保加载完成后再newCropper,且容器需设width/height,避免display:none父元素中初始化。
-
JavaScript中实现异步编程可以通过回调函数、Promise和async/await三种方式:1.回调函数示例:fetchData(callback)用于获取数据,但容易导致回调地狱。2.Promise示例:fetchData().then()避免了回调地狱,但需注意滥用.then()链。3.async/await示例:asyncfunctionmain()让代码看起来像同步,但需避免过度使用await影响性能。
-
PointerEvents统一处理三类设备需围绕指针类型判断、默认行为干预、采样精度控制和降级策略四点展开:区分pointerType调用preventDefault();仅在交互容器设touch-action:none;压感笔必用getCoalescedEvents()补帧;监听pointercancel并处理多点与拖拽逻辑;降级需特征检测而非仅依赖polyfill。
-
overflow:hidden能撑开父容器高度是因为触发BFC,使浮动子元素参与高度计算;但会裁剪溢出内容,现代推荐语义更清晰、无副作用的display:flow-root。
-
hover过渡不生效的主因是transition未写在元素默认状态规则中,且:hover可能未真正命中目标元素;需确保transition声明在非hover规则里,并用开发者工具验证实际触发区域。
-
HTML本身不参与SourceMap配置,因其无编译转换过程;真正需配置的是构建工具(如Vite、Webpack)对JS/CSS生成的SourceMap,HTML仅作为资源容器被动引用。
-
Wireshark能抓到WebSocket数据包但默认不解析,因其必须捕获HTTPUpgrade握手过程(客户端GET+Upgrade头、服务端101响应)才能启用WebSocket解析;若抓包启动晚于握手完成,后续流量仅显示为TCP或乱码二进制。
-
HTML无法实现排列组合,因其是无逻辑的标记语言,缺乏变量、循环等能力;必须用JavaScript在浏览器中动态生成和操作DOM组合状态。
-
code标签仅提供语义标识,不保留格式;多行代码必须嵌套在pre中,二者分工明确:pre保留空白符,code声明代码语义,且HTML字符需转义。
-
不能直接用transition:height实现面板展开动画,因为height:auto无法参与过渡;应使用max-height过渡或JS动态设置精确高度。
-
在angular.json的styles数组中引入的CSS文件全局生效,注入<head>,优先级高于组件样式,但不影响innerHTML渲染内容和ShadowDOM组件。
-
在Vue2中,直接修改数组中对象的属性(如item.price=...)不会触发视图更新;必须用this.$set显式通知Vue数据变化,且需作用于响应式数组的索引位置,而非对象内部。
-
关键是从静态到交互只需用hover和transition重新组织CSS属性:hover定义悬停状态,transition控制变化过程,二者缺一不可;需在默认状态写transition、hover中改对应属性,推荐从按钮练习,注意属性匹配、过渡时间(0.2–0.35s最佳)及触屏兼容性。
-
模态框遮罩不透明是因为父元素opacity导致子元素继承叠加,应使用rgba()单独设置背景层透明度;pointer-events:none需加在遮罩层并配合伪元素确保点击拦截;移动端需结合touch-action、overflow:hidden及层叠上下文排查。
-
will-change不能自动消除卡顿,而是提前告知浏览器优化意图;需精准作用于即将变化的transform或opacity等合成属性,在交互触发时动态添加、动画结束立即移除,并配合transform/opacity避免重排重绘。