-
BEM能防CSS类名冲突,因其通过块-元素-修饰符三段式命名(如.header__title--large)实现天然隔离;需配合ESLint、Stylelint等工具强制约束,禁用后代选择器与ID/标签选择器,并匹配严格正则;与CSS-in-JS、ShadowDOM不冲突,可共存互补;超小项目或动态样式场景则不宜硬套。
-
JavaScript解析器分阶段执行代码,因引擎需先语法分析和编译,采用“预解析+懒编译”策略:函数声明预解析但主体懒编译,箭头函数赋值时仅语法检查,class定义时即全量编译,eval/newFunction强制同步编译。
-
Flexgap属性在Chrome84+、Firefox63+、Safari14.1+中真正支持,旧版Safari(如13.x)会静默忽略;IE完全不支持,需用margin等手动模拟。
-
获取微信小程序页面结构有四种方法:一、用开发者工具WXML面板查看实时结构;二、通过ChromeDevTools抓取安卓WebView的DOM树;三、反编译.wxapkg包提取并转换WXML文件;四、注入JS脚本动态遍历组件生成HTML字符串。
-
extract-colors是最轻量且兼容性好的JS主色提取库,需图片加载完成、处理跨域问题,返回颜色设为CSS变量并配合过渡或服务端预生成避免闪屏。
-
应根据部署环境选择复用方式:静态站点用Eleventy/Hugo/Jekyll的include语法;纯前端无构建时用fetch+DOMContentLoaded动态注入;Vue/React用组件机制;SSI仅在服务端启用且配置正确时有效。
-
video标签不加载MP4主因是路径错误或MIME类型不匹配,需用HTTP服务而非file://协议,正确配置src与source的type属性,并添加muted、playsinline等属性适配移动端自动播放。
-
防抖是事件停止触发后延迟执行一次,适合搜索输入、窗口缩放;节流是固定间隔执行,适合滚动加载、拖拽更新;选择依据是“等停手再响应”用防抖,“持续但限频”用节流。
-
Less中直接写@keyframes会因无去重机制导致重复编译,生成多份相同关键帧;应统一收口至独立文件,用无输出mixin封装调用。
-
使用JavaScript和Canvas可实现图片滤镜,通过getImageData获取像素数据并修改RGB值,再用putImageData渲染;常见滤镜包括灰度、反色和亮度调整,需注意性能与跨域问题。
-
match用于提取内容,返回匹配数组(含捕获组、index等属性)或null;search用于定位位置,只返回首个匹配索引或-1。
-
sticky元素被兄弟元素遮盖的直接原因是其父容器未创建层叠上下文,导致z-index无效;必须给其直接父容器添加transform:translateZ(0)或will-change:transform来建立层叠上下文。
-
ul和li必须成对嵌套,孤立li会导致结构错乱、CSS失效、屏幕阅读器误读;list-style-type仅对display:list-item元素生效,改display会丢失符号;语义正确性优先于视觉灵活,避免滥用div替代列表。
-
纯HTML只读成绩单需用语义化table结构(thead/tbody),禁用contenteditable和无效readonly属性,CSS控制视觉禁用;边框用border-collapse:collapse;打印时用display:table-header-group和page-break-inside:avoid确保表头重复与不分页。
-