-
带参数的LessMixin必须显式声明默认值,否则未传参时编译报错中断;正确写法为在参数后用冒号设默认值、分号分隔,且所有参数均应设默认值以防编译失败。
-
BEM命名本身不导致性能问题,瓶颈在于过度嵌套的选择器如.page-home.layout-main.header.header__logo--dark引发的逐级回溯匹配;应直接使用.card__title等独立选择器,避免祖先链过长,并通过工具拦截冗余嵌套。
-
原生<inputtype="date">与自定义日历非替代关系,而是协同关系:前者保障可访问性、表单验证和系统级交互,后者仅在需动态禁用、多日期范围、非单日粒度等原生无法满足时作为UI增强层,须通过隐藏原生input或同步value来保持表单规范。
-
表单提交地址必须是可公开访问的URL,否则扫码无法打开;应部署到公网服务如GitHubPages,避免本地、内网或未部署地址,并用QRCode.js动态生成带高容错的二维码。
-
必须用标签而非CSS模拟,因其原生支持语义正确、浏览器自动适配字体基线、保障屏幕阅读器准确朗读,适用于化学式(如H₂O)、数学公式等需精确对齐与无障碍访问的场景。
-
可迭代协议要求对象实现Symbol.iterator方法,返回遵循迭代器协议的迭代器;2.迭代器协议要求对象具有next()方法,返回包含value和done属性的对象;3.二者共同支持for...of、扩展运算符等语法,使数组、字符串及自定义对象可被遍历。
-
在React中,自定义组件(如<AddTaskBtn/>)不会自动继承DOM事件监听能力;必须显式接收并透传onClick等事件处理函数到内部原生元素(如<button>),否则点击无响应、无报错、无日志。
-
:focus-visible不能替代:focus,因其仅在键盘导航时生效,需与:focus配合使用,且:focus-visible必须置于:focus之后;须先用:focus设默认无显眼样式,再用:focus-visible为键盘用户恢复焦点指示。
-
本文对比了手动监听键盘/鼠标事件与使用ng-idle库检测用户空闲状态的优劣,指出原生方案虽轻量可行,但在跨设备兼容性、事件覆盖完整性及维护性上存在明显短板;ng-idle则提供健壮、可配置、开箱即用的空闲管理能力。
-
不能。will-change对长列表滚动无效甚至拖慢性能,因其强制图层提升增加内存与GPU压力;应优先用虚拟滚动、contain:strict、移除耗性能样式等方案。
-
ARIA是补足HTML语义不足的精确工具,非万能开关;role定义“是什么”,aria-*描述“当前状态”,二者缺一不可,误用比不用更糟。
-
:first-child和:last-child用于选中父元素的首尾子元素,可精准控制样式。根据位置匹配,适用于去除首尾间距、突出首项、边框控制等场景,如list-item:last-child清除下边框;需注意必须是同级首个或末个子元素,且类型匹配,现代浏览器均支持,IE9+可用。
-
JavaScript模块化主要靠ES6模块(ESM)和CommonJS(CJS):ESM静态编译时解析、import/export语法、只读绑定、默认严格模式;CJS动态运行时加载、require/module.exports、对象引用、支持动态路径;二者加载时机、循环依赖处理及Node互操作方式不同,需注意兼容性与转换。
-
align-items:stretch未生效的主因是父容器缺乏明确高度基准或子元素存在height/min-height等覆盖属性;需确保父容器有height/min-height,子元素无固定高、float、absolute及干扰box-sizing。
-
absolute元素百分比高度失效的本质是包含块高度为auto,导致50%×0px=0px;仅设position:relative不解决,因未赋予实际高度;有效方案包括flex:1、vh单位或补全html/body高度链。