-
纯CSS变量无法独立实现视差滚动,必须由JS注入--scroll-y等变量,再通过calc()配合transform实现;background-attachment:fixed在现代浏览器中受限严重,JS驱动方案最兼容。
-
aspect-ratio是最干净的方案,但需Chrome88+、Firefox89+、Safari15.4+支持;在Bootstrap5.1+中需确保父容器不破坏BFC、子元素正确定位且display合法,自定义比例推荐用--bs-aspect-ratio变量,兼容性要求高时应回退padding-top。
-
HTML加载失败时浏览器不自动显示fallback,需前端主动拦截并控制:fetch需检查response.ok和HTML结构,iframe用定时检测contentDocument状态,SSR场景需内联JS或ServiceWorker兜底。
-
<meter>用于表示静态度量值在固定范围内的相对位置,如磁盘使用率、评分等;<progress>才表示任务完成进度。二者语义不同,不可混用,且<meter>必须指定value、min、max,optimum决定理想状态并影响颜色。
-
WeakRef仅避免阻止GC,不自动清理缓存;FinalizationRegistry才是感知对象真正回收并触发缓存键删除的唯一机制,二者需配合使用且不可替代。
-
Tailwind的:active无法直接触发波纹动画,因其默认不启用active变体,且:active状态持续时间极短(毫秒级),难以匹配200ms+的波纹动画节奏;可靠方案是用JS控制类名生命周期,通过onMouseDown触发、onAnimationEnd清理,并配合relative/overflow-hidden容器与自定义ripple@keyframes实现。
-
WebLocksAPI不能替代IndexedDB事务,但它是唯一能跨标签页串行化写操作的原生机制;必须将openDB、事务创建、put()和awaittx.done全部包裹在navigator.locks.request()回调中,否则锁提前释放会导致静默覆盖。
-
根本原因是content-visibility:auto跳过不可见元素渲染,导致其DOM占位高度默认为0px;当元素进入视口渲染时高度突变,引发文档高度重算和滚动条抖动。
-
内联样式优先级高于外部样式,因特殊性更高;但若外部样式使用!important且内联未用,则外部样式生效,层叠顺序与选择器特殊性共同决定最终效果。
-
双栏对照界面核心是语义对齐与实时响应,需用<sectionclass="translation-pair">包裹原文/译文DOM节点,配合display:grid布局、input事件监听+防抖、textContent安全插入及响应式flex-direction:column降级,确保跨设备映射准确、交互连贯。
-
HTML无法直接获取Wi-Fi或蜂窝信号强度,需依赖JavaScript调用navigator.connection等API间接判断网络质量,仅支持effectiveType和downlink,不提供dBm或格数。
-
不能只写filter:blur(8px)就完事,因为浏览器无法对未加载完成的img元素触发CSS过渡,初始渲染可能直接跳到清晰态或加载瞬间突变,根本看不到过渡效果;关键在于用JS监听load事件后通过类名切换(如.loaded)精准控制过渡时机,并配合transition和合理blur值(2px–6px)实现平滑模糊→清晰效果。
-
ShadowDOM事件默认不穿透边界,外部监听器的event.target被重定向为宿主元素;需用event.composedPath()[0]获取真实目标,或派发bubbles:true且composed:true的自定义事件实现跨边界通信。
-
Wireshark能抓到WebSocket数据包但默认不解析,因其必须捕获HTTPUpgrade握手过程(客户端GET+Upgrade头、服务端101响应)才能启用WebSocket解析;若抓包启动晚于握手完成,后续流量仅显示为TCP或乱码二进制。
-
必须在第一行写<!DOCTYPEhtml>,否则浏览器进入怪异模式导致布局、盒模型、CSS解析不一致;它不是标签而是解析指令,前面任何字符(空格、注释、BOM)都会触发兼容模式。