-
ServiceWorker通过预缓存关键资源、fetch阶段Cache-First策略、导航预加载及Stale-While-Revalidate机制,实现首页秒开:安装时预存HTML/CSS/JS/图标;fetch时优先返回缓存;预加载兜底;HTML缓存同时后台更新。
-
能,background-clip:padding-box可解决实线边框+border-radius+背景图/渐变组合下的溢出问题,它让背景仅绘制在padding-box内侧,与圆角内弧对齐,而非修复溢出而是主动退让。
-
是的。audio标签自HTML5起即为原生语义化元素,无需手动“HTML5化”,只要浏览器支持HTML5(如Chrome4+、Firefox3.6+等)即可直接使用;其失效主因是路径错误、MIME类型不匹配、file://协议限制、格式兼容性不足或缺少controls属性。
-
Autoprefixer仅补语法前缀,不降级语义:flex:1不会转为-webkit-box-flex:1,Android4.3等旧内核连display:-webkit-box都不识别,关键布局需手动降级为width/float等原生方案。
-
要用:nth-of-type()精准选「第N个某类标签」,因为其按标签类型分组计数,而:nth-child()只看子元素位置;混排结构中二者行为根本不同。
-
对象属性遍历顺序非随意:V8将整数索引键(如1、"42")存入elements区并按数值升序优先遍历,其余键存入properties区按插入顺序遍历;Symbol键排最后且保序。
-
行内样式不一定覆盖外部CSS。因优先级受同一元素、同名属性及!important影响;其specificity为1000,高于class、id等,但遇外部!important、initial/unset值、CSS变量、媒体查询或JS动态修改时可能被反超。
-
用checkbox控制气泡菜单更轻量,因无需JS监听、不触发重排、无JS依赖;核心是:checked伪类配合相邻/子元素选择器,且input必须位于label和菜单之前,禁用display:none改用opacity:0等隐藏。
-
惰性初始化的核心是“用时才建”,即仅在实际使用时加载模块或构造对象,适用于非核心、低频触发的模块与资源;需满足不参与启动逻辑、无全局副作用、无早期强依赖三条件;Python3.15起支持原生惰性导入,可通过-Ximportlazy或importlib.import_module按需加载;类属性、单例、数据集等亦可延迟初始化;但须规避钩子注册冲突、线程安全、异常延迟暴露及析构依赖等风险。
-
JavaScript生成器通过function*和yield实现暂停与恢复,具备协程特征。调用next()执行到yield暂停并返回值,再次调用则从暂停处继续,支持外部传参实现双向通信,适用于异步控制与状态机。结合Promise和自动执行器(如run函数),可让生成器以同步形式处理异步操作,例如yield后接Promise,执行器递归调用next等待resolve。async/await是生成器+Promise的语法糖,更简洁但功能较局限,而生成器还可用于惰性求值、无限序列等场景,依然具有精细控制执行流的
-
最稳解法是::after伪元素+transform:scaleY(0.5),因DPR≥2时1px映射为2+物理像素而变粗;需父元素position:relative、transform-origin:0100%防偏位,伪元素用height:1px+background-color并加pointer-events:none。
-
当使用inline-block布局多个div时,因HTML中的换行符和空格被渲染为文本节点,导致元素间产生不可见间隙,进而使第三列被迫折行——这是常见布局失效主因,可通过移除空白、重置字体大小或改用Flexbox彻底解决。
-
结论:优先选SignalR而非原生WebSocket做业务实时通讯;仅在需控制帧格式、对接硬件或调试底层时手撸WebSocket。SignalR提供自适应传输、自动降级、内置生命周期管理与广播能力,而原生WebSocket需手动处理连接、心跳、序列化及异常恢复。
-
默认脚本放head必致白屏,因浏览器会暂停HTML解析、同步下载执行;defer适合需操作DOM或有依赖的外部脚本,按序在DOM就绪后执行;async仅适用于完全独立脚本,下载完立即执行但顺序不可控。
-
HTML倒计时精度取决于JavaScript定时机制与系统时钟同步策略;应以服务端时间戳为基准,用Date.now()实时计算剩余时间,避免setInterval累加误差,并通过requestAnimationFrame优化渲染流畅度。