-
使用ResizeObserver监听Canvas容器尺寸变化,获取contentRect宽高,结合devicePixelRatio设置canvaswidth/height并缩放ctx,再重绘;需observe容器、raf优化、防抖及disconnect清理。
-
单选按钮样式定制需隐藏原生input并用label伪元素实现:将input置于label内或用for绑定,设position:absolute;opacity:0;,通过:checked+label::after控制圆点样式,禁用态需单独写input:disabled:checked+label::after,同时保障无障碍与键盘可访问性。
-
现代JavaScript引擎对闭包本身性能友好,但不当使用会干扰JIT内联、加剧变量逃逸、增加GC压力;应优先用let/const、避免闭包持有大对象、保持变量类型一致。
-
poster仅在视频未播放、元数据未加载或加载失败时生效,loadedmetadata触发后浏览器可能立即用首帧覆盖;首帧截取须等seeked事件,而非loadeddata。
-
导航栏下拉菜单不显示的常见原因是JavaScript未初始化或父容器overflow:hidden导致裁剪;需检查JS初始化、data属性、overflow样式、z-index及display/visibility设置。
-
box-sizing:border-box可解决grid-template-columns因padding导致的错位问题,因其使width包含padding和border,确保25%或fr单位严格按可见宽度分配,避免溢出、换行或列宽不均。
-
最可控的老旧内核兼容方案是用CSS.supports()运行时检测并动态注入降级样式,优先检测display:grid、margin-inline-start等支持率断层明显且有等效写法的属性。
-
可用纯HTML+CSS实现Google首页静态视觉结构:顶部导航栏、居中搜索区(max-width:584px+flex居中)、底部flex布局的工具栏,关键用margin:auto、max-width和display:flex控制响应式布局。
-
sort默认按字符串Unicode排序导致数字错乱;数字排序需传(a,b)=>a-b;对象按属性排序要处理undefined,字符串用localeCompare,多级排序用短路逻辑。
-
:focus没反应最常见原因是CSS优先级被覆盖或元素未获焦点;需检查可聚焦性、伪类顺序、UI库替代方案、移动端兼容性,并优先用:focus-within或focusin事件替代。
-
用novalidate属性可彻底关闭表单原生验证,只需在<form>标签中添加novalidate(如<formnovalidate>),它优先级最高、无需JS、仅作用于当前表单。
-
iOSWebView中无法直接触发HTML5下拉刷新,需通过touchstart/touchmove拦截并e.preventDefault()阻止原生橡皮筋效果,配合overscroll-behavior-y:contain及正确滚动容器配置,同时用Math.abs(window.scrollY)<1替代scrollY===0避免iOS浮点误差。
-
JavaScript密码学应优先使用WebCryptoAPI(浏览器)或Node.jscrypto模块(服务端),禁用手写逻辑或CryptoJS;推荐AES-GCM对称加密、RSA-OAEP混合加密及ECDSA签名,密钥须安全生成与管理。
-
Array.prototype.push本身不会栈溢出,问题在于调用方式:配合apply或扩展运算符批量传入海量元素时,引擎需将每个元素作为独立参数压栈,超出V8等引擎约65536的参数上限即报RangeError。
-
grid-template-areas需每行引号内区域名数量相同且空格分隔,否则声明失效;控制宽度靠grid-template-columns配合minmax();display:contents会使grid-area失效;响应式重排须同步更新areas、columns和rows。