-
直接用FormData配合submit事件可实现无刷新提交:先preventDefault阻止跳转,再newFormData(form)自动收集字段,最后fetch发送并处理响应,全程不依赖框架。
-
JavaScript类型转换分三种:转字符串(如String(123)→"123")、转数字(如Number("123")→123)、转布尔值(如Boolean(0)→false);隐式转换发生在运算中,如"6"-2→4,[]+{}→"[objectObject]";核心原则是拼接转字符串、数学运算转数字、条件判断看真假值。
-
IntersectionObserver回调异步低优先级,需结合rootMargin预加载、threshold数组分阶段加载、requestIdleCallback抑制高负载、滚动去抖与动态调整策略实现性能感知的懒加载。
-
ID选择器会直接破坏BEM权重平衡,因其权重为1,0,0,远超BEM要求的0,1,0,导致后续所有类名样式难以覆盖;它违背BEM“扁平化、可复用”的核心前提,使修饰符和状态切换失效。
-
纯CSS可通过伪类(:hover/:focus/:checked/:disabled)判断元素状态,结合伪元素(::before/::after)注入动态内容,利用data属性存储文案并用attr()读取,实现无需修改HTML的状态化标签展示。
-
hover触发二维码显示的DOM结构怎么组织直接用title属性或纯CSS::after伪元素生成二维码不可行——它们不支持嵌入图片或SVG,且无法控制尺寸和交互行为。正确做法是预先加载二维码(或),再通过CSS控制显隐。推荐结构:扫码关注。外层qrcode-trigger是悬停区域,内层qrcode-popup是浮层容器,避免脱离文档流导致布局跳动。不要把直接放在标签里再hover——点击区域和悬停区域可能不一致不要用display:none
-
子元素的margin-top会让父容器一起往下掉是因为相邻块元素垂直margin会塌陷,且父容器未形成BFC时其上边界与子元素margin-top相粘连;overflow:hidden通过触发BFC隔离内部布局来阻止塌陷,但可能截断溢出内容。
-
直接在index.html的</body>前插入客服SDK脚本并确保HTTPS协议、HTTP服务运行、第三方Cookie允许,是第三方客服嵌入的核心要求。
-
MiniCssExtractPlugin需配合loader分支、publicPath配置和导入顺序控制:开发用style-loader支持HMR,生产用MiniCssExtractPlugin.loader抽离CSS;publicPath决定CSS内相对路径解析,子目录或CDN需显式设置;多处import同一CSS引发Conflictingorder警告,应统一入口引入或splitChunks归并;SCSS/LESS等预处理器同样需替换loader首项。
-
Elements面板是实时操控DOM的操作台,右键检查可快速定位并双击编辑元素,拖拽调整顺序,Console中用$0或querySelector可高效批量修改,但需注意CSS/JS覆盖、ShadowDOM隔离及file://协议限制。
-
现代项目应优先用display:flow-root触发BFC自动包裹浮动,语义清晰、无副作用;.clearfix仅是兼容旧浏览器的过渡方案,且clear:both加在父元素上无效,因clear只作用于自身定位,不改变父容器布局上下文。
-
浏览器原生不支持HTML元素直接通过speech属性启用语音识别,必须使用JavaScript的SpeechRecognitionAPI手动实现;input和textarea需绑定onresult事件并将transcript写入value,且受限于HTTPS、权限、浏览器兼容性等硬性条件。
-
使用qrcode.js一行生成二维码,需确保脚本在</body>前加载或包裹在DOMContentLoaded中,设置width≥200、margin≥20px、correctLevel为M级,canvas导出需适配devicePixelRatio并手动绘制logo。
-
findLastIndex更可靠因其规范定义逆向遍历逻辑,从末尾起查首个匹配项即返回,避免手写循环的边界错误、索引错位及语义混淆,天然适配“最后一个生效操作”场景。
-
Less中需直接在CSS声明中使用env(safe-area-inset-top,0px),不可赋值给变量或参与运算;兼容旧设备应按padding-top:20px;→constant();→env()顺序书写,fallback值0px必不可少。