-
Proxy中捕获属性读取应优先用Reflect.has(target,prop)判断是否存在,避免用target[prop]===undefined误判或漏查原型链;Reflect.get不会因属性不存在抛错,需主动判断;错误信息应友好,如用constructor.name和拼写提示;Proxy实例可能影响instanceof,需对constructor、Symbol.toStringTag等特殊键单独处理。
-
counter-reset在子元素中不生效,根本原因是它只对后续同级或后代中满足作用域条件的counter-increment生效,且重置动作不继承、不传播、不穿透伪元素边界。
-
PerformanceAPI监测Canvas游戏帧稳定性需捕获关键渲染阶段时间断点,通过mark/measure记录frame/update/render各阶段耗时,结合p95和max帧耗时识别抖动,并关联DrawCall定位瓶颈。
-
原生popover功能需用<divpopover>元素配合popovertarget属性实现,非独立属性;必须满足结构约束、用户交互触发且浏览器支持,Safari完全不支持,需JS检测与降级。
-
根本原因是box-sizing:content-box导致padding和border额外增加宽度;应全局设box-sizing:border-box,图片加max-width:100%;height:auto;,断点依内容临界点选em单位,字体用clamp()动态缩放。
-
localStorage并非真正离线存储,但它是轻量易用的浏览器端持久化方案;写入失败主因有四:无痕模式禁用、超配额(5–10MB)、非字符串值未序列化、iOSSafari低内存自动清理,须用trycatch+JSON处理并降级兜底。
-
TrustedTypes不能彻底消除XSS,但可阻断未封装的innerHTML赋值——需CSP头启用、策略全覆盖且无逃逸;策略非净化器,应优先用textContent或预编译模板。
-
padding-block是按writing-mode动态映射块方向内边距的逻辑属性,非简单替代padding-top/bottom;其start/end端映射取决于书写模式,如horizontal-tb下对应上下,vertical-rl下对应左右,未设writing-mode时行为等同物理属性但语义不同。
-
用relative是为让按钮保留在文档流中并作为气泡定位参考;气泡不必是直接子元素但强烈推荐,否则易因containingblock变化导致错位;尖角对齐靠伪元素加transform微调;移动端需JS控制显隐,不可单靠:hover。
-
::after伪元素清除浮动是最实用且不污染结构的方案,需作用于浮动子元素的直接父容器,且该容器不能是flex/grid布局或已有其他::after规则;content:""不可省略,display:table比block更稳,clear:both强制虚拟块落于浮动元素下方以撑开父容器。
-
纯CSS无法实现真正的Mesh渐变,但可通过多个radial-gradient()叠加、精准定位、rgba透明度控制及伪元素分层模拟苹果UI中的柔和多点径向渐变效果。
-
id必须唯一、class可复用是HTML规范强制要求,影响DOM操作、CSS优先级、可访问性和SEO;重复id会导致getElementById返回首个元素、aria属性失效、锚点跳转不可预测等问题。
-
HTML5无内置淡入动画,需CSS(opacity/visibility/transition)与JS配合实现;图片加载完或滚动进入视口时触发动画更合理,避免重排卡顿。
-
使用::selection伪元素可自定义文本选中样式,如设置background-color和color属性改变高亮颜色,支持有限CSS属性,需注意兼容性及浏览器前缀。
-
formaction属性仅对type="submit"或type="image"的控件生效,可覆盖表单action,但不改变method或enctype,需配合formmethod/formenctype使用,且与JavaScriptsubmit()冲突。