-
em用于语义强调,屏幕阅读器重读、SEO识别;i仅表斜体样式,适用于外文词、船名等非强调场景,二者语义不同不可混用。
-
主题切换不必强制用JavaScript控制:root,但主动切换主题必须依赖JS修改:root自定义属性以触发重绘;纯CSS仅支持有限响应,如系统暗色模式。
-
使用语义化标签提升可读性与可访问性,如用<header>、<nav>、<main>等替代<div>;合理组织标题层级,正确嵌套<h1>到<h6>;为图片添加alt属性,表单关联label,避免滥用标签,确保结构清晰、易于维护。
-
abbr标签的title属性必须显式设置才能显示悬停提示,否则无任何提示;其原生tooltip不可被CSS修改,读屏工具优先读aria-label,但悬停仅显示title,自定义交互需改用span+aria-describedby方案。
-
CacheAPI只能在ServiceWorker或Worklet线程中使用,页面主线程调用caches.open()会因上下文受限抛出SecurityError或返回undefined;必须通过HTTPS(或localhost)注册ServiceWorker,且所有缓存操作需在install/fetch事件中配合event.waitUntil()和request.clone()等规范写法执行。
-
使用JavaScript检测内存泄漏可以通过ChromeDevTools和Memlab等工具实现。1.使用ChromeDevTools的Memory标签页拍摄HeapSnapshot,比较不同时间点的快照,识别未及时回收的对象。2.使用Memlab通过模拟用户行为自动化检测潜在泄漏。结合工具和最佳实践,如理解引用机制和使用弱引用,可以有效检测和避免内存泄漏。
-
模块化熔断控制是将“失败判定—状态切换—逻辑路由—恢复探测”四步嵌入异步链路,实现可配置、可观测、可回滚的确定性熔断;主备模块须遵循统一输入/输出协议与错误分类;熔断器按业务粒度创建并绑定具体模块;半开状态按比例放行试探请求,结合成功率动态恢复;全流程可观测覆盖状态变更、备份指标与链路追踪因果链。
-
Safari对calc()结果执行向下取整(floor),导致宽度/高度差1px;Chrome、Firefox则四舍五入或保留小数,这是WebKit布局阶段的数值处理策略,并非bug。
-
浮动实现导航栏需对li设float:left并清除ul浮动,推荐伪元素法:.nav-list::after{content:"";display:table;clear:both;},同时li设margin-right、a设display:block以确保点击区域和间距。
-
尾调用优化(TCO)是JavaScript引擎在严格模式下对满足特定条件的尾调用进行的栈帧复用优化,但主流引擎目前均未默认启用,代码符合语法仍会栈溢出,需手动转循环或用蹦床模式。
-
IndexedDB天然离线可用,数据存于浏览器本地,关网后仍可读写;但完整离线体验需ServiceWorker、CacheAPI与IndexedDB协同;离线写入需加syncStatus字段并幂等同步;注意各浏览器兼容性与存储上限限制。
-
现阶段HTML函数和可拆卸键盘在Web开发中均不实用:HTML是标记语言,所谓“HTML函数”实为框架封装的组件抽象;浏览器API不支持访问物理键盘模块,无法感知拆卸状态,纯前端无法实现硬件级响应。
-
progress标签必须同时设置value和max属性且value≤max才能正确显示确定进度;仅设max或value超限会导致不确定状态或渲染异常;动态更新需同步aria属性,网络异步任务应避免使用。
-
vertical-align仅对inline、inline-block、table-cell元素生效,作用于行内格式化上下文中的基线对齐,非容器级垂直居中工具;设在块级元素上被忽略,对齐基准是line-height生成的行内框中线,非父容器中心。
-
在使用原生HTML5draggable实现列表拖拽排序时,常出现拖拽结束瞬间被拖元素视觉上“弹回原位”的异常动画;根本原因是CSS过渡(如transform+transition)干扰了浏览器默认拖拽渲染流程。