-
<header>、<nav>、<main>、<article>、<aside>、<footer>是定义页面功能区域的合法语义标签,用于向浏览器、搜索引擎和屏幕阅读器声明内容本质,而非仅控制样式;滥用div或误用这些标签会破坏结构语义、损害可访问性与SEO。
-
可使用reversed属性(HTML5原生)、CSScounter重置与递减、flex-direction+order视觉反转、JavaScript动态注入四种方法实现ol倒序编号,其中reversed最简洁语义化。
-
纯HTML星级评分需用5个同name的radio按钮+对应label,input必须前置且隐藏(clip而非display:none),label紧随其后以支持:checked+label样式联动及可访问性。
-
Chrome提示NotAllowedError的主因是调用getUserMedia时机非法或非安全上下文:须在用户手势同步链中调用,且仅限https/localhost;拒绝后需引导用户手动授予权限;iOSSafari需video标签加playsinline/autoplay/muted并立即play()。
-
:target轮播仅为演示级,因它仅被动响应URL片段变化,缺乏自动播放、循环控制、状态管理及事件监听能力,无法满足生产环境对交互性、稳定性和用户体验的要求。
-
C++的std::thread在WebAssembly中需手动启用线程支持:编译时加-pthread和-sTHREADS=1,JS加载时用WebAssembly.compile/instantiate配合shared内存,并配置CORP/COP头,否则仍为单线程。
-
Flex容器应命名为体现业务职责的block名(如product-grid),而非暴露技术实现的flex-container;项目必须是直接子元素并带完整BEM路径,对齐等布局逻辑直接写在block规则中。
-
弹幕必须用position:absolute脱离文档流,由position:relative的容器包裹;top值需动态计算,滚动用transform:translateX()而非top;顶部/底部弹幕CSS类须分离;JS获取位置应使用getBoundingClientRect()并实时重算。
-
JavaScript字符串比较基于Unicode码点字典序,从左到右逐字符比对;语义化排序应使用localeCompare(),支持多语言和拼音排序。
-
用absolute+负top/right易错位,因负值硬编码且受父容器内边距、缩放、transform等影响;必须给父元素设position:relative,并用transform:translate(50%,-50%)精准锚定右上角,配合z-index≥99和避免overflow:hidden。
-
必须用getBoundingClientRect()计算坐标,因为e.clientX是相对于视口的,而伪元素定位需相对于按钮自身;需用rect.left/rect.top做偏移换算,并为CSS变量显式添加'px'单位,配合transform:translate()和will-change:transform避免重排,且每次点击前须清除旧变量防止动画错乱。
-
CacheAPI只能在ServiceWorker或Worklet线程中使用,页面主线程调用caches.open()会因上下文受限抛出SecurityError或返回undefined;必须通过HTTPS(或localhost)注册ServiceWorker,且所有缓存操作需在install/fetch事件中配合event.waitUntil()和request.clone()等规范写法执行。
-
BlazorServer应用中_framework/blazor.server.js报404,通常并非配置遗漏,而是UseStaticFiles()传入自定义StaticFileOptions导致Blazor内置静态文件服务被覆盖——本文详解问题成因、验证方法及安全可靠的修复实践。
-
HTML倒计时仅用于展示,不能替代真实时间控制;必须用Date.now()动态计算剩余时间戳,结合服务端下发的ISO时间统一时区,并做本地时钟偏移补偿。
-
role不是“增强可访问性”的万能开关,而是HTML语义缺失时的补救手段;用错比不用更危险,如给原生<button>加role="button"会覆盖默认语义,或给<div>加role="button"却不配tabindex="0"和键盘事件监听,导致键盘不可聚焦、不可触发。