-
preload="none"并非完全不加载,而是延迟加载——仅当video已插入DOM、src已设且未调load()、用户未触发播放时才真正省流量,适合非首屏或低点击率视频。
-
纯HTML5素描效果需分两步:先加权灰度转换与非线性拉伸保留明暗过渡,再用Sobel/Laplacian卷积提取边缘;推荐SVGfeConvolveMatrix加速实现,避免主线程卡顿。
-
Grid子项默认不继承父容器高度,需通过grid-template-rows(如1fr)定义行轨道高度,align-self:stretch仅在子项无显式高度且轨道尺寸确定时生效。
-
Array.prototype.findLast不适用于异步日志流,因为它要求数据为已存在的同步数组,而异步日志流是逐条产生的动态序列,无确定末尾且无法全量加载。
-
WebSocket适合实时通信因其双向低延迟、省带宽、状态可控;HTTP为文档获取设计,单向且高开销;使用需注意兼容性、代理拦截、服务端成本及手动实现重连等。
-
SCSS变量不能自增,真正的动态计数依赖CSS原生counter-reset和counter-increment;@for循环仅生成静态规则,而CSS计数器在渲染时实时计算并自动重排。
-
用console.log配合%o占位符和自定义#debug-panel容器实现可折叠调试面板,通过MutationObserver监听DOM变化并节流更新,仅在data-debug属性存在时启用,避免生产环境泄漏。
-
使用Flexbox或绝对定位+transform可实现弹窗居中。1.Flexbox:父容器设为flex,用justify-content和align-items居中,无需知悉子元素尺寸;2.绝对定位:元素top和left设50%,再用transform位移-50%实现精准居中。推荐使用Flexbox,更简洁现代,兼容性需求高时选绝对定位。
-
在Leaflet中实现一个始终固定于地图视口中心的标记,关键在于正确监听地图移动事件并动态更新标记位置;需注意事件回调参数是LeafletEvent对象,地图实例需通过event.target访问。
-
Array.from是NodeList转数组最稳妥的方式,因其专为可迭代对象设计,兼容IE11+、语义清晰、支持映射且避免扩展运算符潜在陷阱;错误包括传入null或连写未赋值,空NodeList无问题但querySelector返回null不可直接转换。
-
浮动卡片高度不一致会导致换行错乱,因浮动元素贴靠前一个元素边缘而非按行对齐;可靠解法是每行首个卡片加clear:left,如.card:nth-child(4n+1){clear:left;}。
-
实现路由重定向需用redirect配置(如{path:'/',redirect:'/login'}),确保目标路径存在且以/开头;避免循环跳转;带参跳转用函数式写法;ReactRouterv6改用<Navigatereplace>。
-
Worker构造函数必须传入HTTP(S)协议的脚本URL,不支持直接传函数或内联字符串;其与主线程完全隔离,仅能通过postMessage通信且仅支持结构化克隆数据;不支持alert、localStorage、document等主线程API,需用importScripts同步加载第三方库;长期运行需手动terminate避免内存泄漏。
-
现代浏览器推荐用::placeholder改占位符颜色,仅支持color、opacity等有限样式;Firefox需额外加::-moz-placeholder兼容。
-
dragula.js更适合Kanban列拖拽,因其封装位置计算与DOM插入逻辑,天然支持空列、动态列及滚动容器;需显式传入所有列容器,禁用默认样式类,统一监听drop事件即可捕获列内排序与跨列移动。