-
应使用语义化模块职能类名,如hero、features、testimonials;避免数字编号、位置命名或泛化名称;变体用BEM修饰符(如hero--dark);统一小写连字符;类名补充HTML语义缺失,不依赖标签选择器。
-
progress标签必须同时设置value和max属性且value≤max才能正确显示确定进度;仅设max或value超限会导致不确定状态或渲染异常;动态更新需同步aria属性,网络异步任务应避免使用。
-
text-overflow:ellipsis仅对单行文本生效,需同时满足white-space:nowrap、overflow:hidden和text-overflow:ellipsis;多行截断须用-webkit-line-clamp配合display:-webkit-box和-webkit-box-orient:vertical。
-
混合宏(mixin)用于复用CSS声明块,如@mixinflex-center封装居中样式;函数(function)用于动态计算并返回值,如px2rem()转换单位;关键区别在于mixin输出规则,function产出数值。
-
discarded状态无法被监听,因其发生时JS引擎已终止;还原依赖freeze/pagehide保存状态+pageshow时结合document.wasDiscarded、persisted和navigationtype综合判断冷启动并恢复。
-
应仅在无更合适语义标签时用<span>,如纯样式或事件绑定;误用如<spanclass="date">应改用<timedatetime>,且<span>每页不宜超3次。
-
完全可行,且是最常用、最轻量的方式;只需通过<link>引入CDN上的第三方CSS动画库(如Animate.css),并正确指定版本与.min.css后缀,再按对应版本的类名规范(如v4需同时加animate__animated和animate__bounce)使用即可。
-
数组移位与旋转本质是索引的循环映射:右移k位对应(i+k)%n,左移为(i−k+n)%n;常用三步翻转法原地实现,环状替换则依赖gcd(n,k)个环达到O(1)空间。
-
BEM通过扁平单类名选择器减少CSS匹配开销,避免后代选择器回溯,提升渲染性能;需严格遵循命名规范、合理使用Sass模块化和PostCSS配置,并以拆分CSSchunk优化体积。
-
::after清除浮动失效的根本原因是伪元素默认display:inline,无法触发BFC且不撑高父容器;必须同时满足content非none(如"")和display为block/table/flex等块级显示值。
-
background:rgba()不等于磨砂玻璃效果,因其仅实现半透明色块而无模糊;真磨砂需transparent背景+backdrop-filter:blur(),并确保背景固定、容器不遮挡、文字对比度达标且避开iOS硬件加速陷阱。
-
line-height是控制行距的唯一正确属性,应使用无单位数值;段落间距用margin-bottom;外边距折叠是规范行为;避免滥用p标签破坏语义。
-
JavaScript进制转换核心是parseInt(支持radix参数),parseFloat仅处理十进制浮点数且不支持进制;parseInt按radix解析开头有效数字,自动识别0x/0b/0o前缀,而parseFloat遇非法字符即停并返回NaN。
-
根本原因是盒模型解析顺序不同:负margin是否参与布局计算取决于box-sizing设置及父容器是否触发BFC,而非浏览器bug。
-
Symbol.toPrimitive是实例级可配置方法,需在每个类中显式定义;应在基类封装\_getPrimitiveValue供子类覆写,并根据hint返回合适原始值,确保数学运算一致性。