-
原生<inputtype="time">能用但限制多:兼容性差(Safari旧版退化为文本框)、不支持分钟步进(如15分钟)、无清空按钮、无法隐藏秒;推荐flatpickr(轻量、支持minuteIncrement/清空/格式控制)或手写select方案。
-
模板字符串是支持多行、嵌入表达式、无需转义的字符串字面量,用反引号定义,${...}中可放任意表达式但非语句,天然支持换行但需注意缩进,结合标签函数可扩展功能。
-
判断表单提交前数据被JS修改,需检查submit事件监听器、input/change/blur事件绑定、FormData或URLSearchParams手动构造、event.preventDefault()使用及hidden字段动态计算等关键点。
-
overflow:hidden仅裁剪内容不修正背景绘制区域,需配合border-radius生效;Safari中背景溢出因background-clip默认为border-box;background-clip:padding-box更优但需有实线边框。
-
<p>fixed定位下translateX并未失效,而是因包含块为视口且百分比基于自身宽度计算,导致位移不可见或错位;需配合left/right、显式transition、visibility控制及单位优化(如calc(-1*var(--drawer-width)))才能正确实现抽屉动画。</p>
-
@page规则中不存在page-orientation属性,真正控制打印方向的是size属性的landscape或portrait关键字;其生效受组策略、命名冲突、分页行为及内容样式协同影响。
-
不能。Headers构造函数不接受普通对象,仅支持空参数、可迭代对象(如二维数组或Map),例如newHeaders([['Content-Type','application/json']])或newHeaders(newMap([['Content-Type','application/json']]))。
-
WeakMap本身不能实现跨标签页通信,仅限单个执行上下文;它可安全封装本页内跨页通信的私有元数据(如BroadcastChannel实例、监听器映射),依托弱引用实现宿主对象销毁时自动清理,避免内存泄漏和幽灵监听。
-
优先用宽度而非高度做断点,因视口高度受浏览器地址栏动态遮挡影响易误触发,而宽度稳定且与设计稿切图逻辑一致;推荐3–4个max-width/min-width组合断点覆盖主流设备,配合rem布局时应在各断点内直接设置htmlfont-size以确保基准准确。
-
多列布局专用于连续文本流分栏,浮动仅适用于块级元素并排或图文环绕;响应式文本分栏用column-width,结构布局用flex/grid,二者不可混用。
-
JavaScript数组扁平化指将多层嵌套数组压平为一层,flat()按指定深度展开(默认1层,Infinity可完全扁平),flatMap()先映射再扁平一层,二者语义清晰、性能好、可读性强,是现代项目的首选方案。
-
本文讲解为何阻塞式延迟函数fSleep会导致Canvas动画卡死,并提供基于setTimeout的非阻塞动画方案,确保汽车图像在背景上流畅、逐帧旋转。
-
focusin是唯一可靠焦点入口,须在模态框绑定并用contains判断目标是否在框内;遮罩层需设tabindex="-1"和aria-hidden="true";可聚焦元素须手动筛选,空时根元素tabindex="-1"后focus;Tab循环应重定向而非阻止;关闭后须安全回归触发源。
-
必须禁用原生controls并手写UI:移除controls属性,用HTML+CSS绘制控件,JS绑定播放/暂停、进度条等行为;iOS需加playsInline及x5属性;进度条要用input[type="range"]并防抖同步。
-
Proxy中捕获属性读取应优先用Reflect.has(target,prop)判断是否存在,避免用target[prop]===undefined误判或漏查原型链;Reflect.get不会因属性不存在抛错,需主动判断;错误信息应友好,如用constructor.name和拼写提示;Proxy实例可能影响instanceof,需对constructor、Symbol.toStringTag等特殊键单独处理。