-
JIT去优化是保障语义正确的必要安全机制,而非性能退步征兆;其触发源于推测假设被打破,如类层次动态变更、逃逸分析失效、类型契约违反或方法重定义,高频核心算法因执行频次高且行为易变而尤为脆弱。
-
outline-offset负值在Chrome支持而Firefox忽略,Safari渲染不稳定;应统一用多层box-shadow替代,确保跨浏览器焦点样式一致,同时注意focus-visible适配和IE11降级处理。
-
Flexbox垂直居中只需父容器设display:flex并配合align-items:center,高度明确时最直接;若需兼容IE10–11,应使用Autoprefixer自动添加前缀。
-
fixed定位失效主因是父元素设置了transform、filter、opacity<1等属性,导致创建新包含块使fixed退化为absolute;需逐层检查computed值,移除或重置相关样式验证。
-
flex-grow无法直接平分宽度,因其分配的是剩余空间而非容器总宽;需设flex-basis:0(如flex:110)切断内容影响,并配合box-sizing:border-box、min-width:0及统一字体/内边距才能实现三列严格等宽。
-
pointer-events:none可解决上层DOM遮挡下层可交互元素的点击问题,如模态遮罩、图表图例、拖拽手柄等场景,使事件穿透至底层,同时保留视觉效果;但需注意继承性、子元素需显式设auto、移动端兼容性及渲染顺序影响。
-
语义配色需用业务类名(如.text-error)替代外观类名,结合CSS自定义属性和currentColor实现可维护性,同时适配高对比度模式与forced-colors媒体查询。
-
capture是布尔属性,需配合type="file"和精确accept值(如image/*)才能触发原生设备;iOSSafari要求input静态存在于DOM、用户手势直触且禁用桌面模式;Android行为不一,微信X5基本不支持;应以getUserMedia+MediaRecorder为可靠替代方案。
-
html5play函数不支持m3u8的根本原因是浏览器原生video标签大多不支持HLS协议,仅Safari默认支持;其本质是封装原生video元素,无内置解协议能力,直接赋值m3u8会失败。
-
Node.jsCluster模块通过主进程调用cluster.fork()创建多个worker进程,利用多核CPU提升并发性能;主进程(cluster.isMaster为true)仅负责fork、监听exit事件并重启worker,不启动HTTP服务,worker进程(cluster.isWorker为true)运行业务逻辑并共享同一端口,由内核通过SO_REUSEPORT实现负载均衡。
-
Less组件化需三原则:一用scope前缀隔离变量(如@card-bg-color);二限制嵌套≤3层并禁跨组件@import;三主题切换须预编译多套CSS而非运行时改变量。
-
modulepreload是<linkrel="modulepreload">用于预获取模块而不执行,区别于<scripttype="module">的立即解析执行;它需绝对路径、as="script",且服务端需配CORS,适用于明确依赖链或动态导入前的预加载。
-
用CSStransform+transition可实现宝箱开盖动画:盖子需设transform-origin:topcenter并绕顶部边缘旋转,父容器加transform-style:preserve-3d;用cubic-bezier(0.34,1.56,0.64,1)增强弹开感;双层box-shadow模拟高光与动态阴影;渐变背景模拟木纹反光;JS需加锁防重复触发,监听transitionend同步状态;移动端需touch-action和will-change优化性能。
-
WeakMap能避免内存泄漏,因其键对DOM元素持弱引用,元素被移除后可被GC回收;而Map等强引用会阻止回收。应以元素为key、全局WeakMap管理状态,避免反向引用和原始值作key。
-
ResizeObserver是监听组件尺寸变化的最优方案,它直接绑定元素、精准触发回调、避免全局事件冲突,支持iframe和阴影DOM,且提供contentRect数据;相比window.resize,它能感知布局重排等细粒度变化。