-
VueRouter切换时transition不生效,主要因router-view未被transition直接包裹、CSS类名未匹配Vue版本钩子(Vue2用v-前缀,Vue3默认fade-前缀)、路由组件非动态加载导致enter/leave钩子未触发。
-
根本原因是浏览器默认table-layout:auto会因内容动态计算列宽,小屏下易被长文本撑开导致溢出;须改用table-layout:fixed并配合width:100%和显式列宽(如width:20%)或堆叠/滚动等场景化方案。
-
可以,但受限于系统和浏览器:安卓需用file:///绝对路径且路径无中文空格;iOSSafari基本禁用file://,须通过iCloud或本地HTTP服务(如Python服务器)访问。
-
手动实现简易Promise需支持三种状态、链式调用与值穿透:构造函数管理pending/fulfilled/rejected状态及回调队列;.then返回新Promise并兼容同步异步;.catch是.then(undefined,onRejected)语法糖;resolvePromise处理返回值解析,含微任务调度、循环引用检测等细节。
-
line-height是控制行距的正确CSS属性,定义基线间距,应优先使用无单位数值(如1.5),避免px/em导致响应失效或继承异常,且不可用于<br>等空标签。
-
深拷贝是创建完全独立的新对象,与原对象内存隔离;Object.assign()等为浅拷贝;JSON.parse(JSON.stringify())最快但限制多;递归实现需WeakMap防循环引用;Lodash的cloneDeep()最稳妥。
-
:only-child生效需父元素有且仅有一个直接子元素且类型匹配;常见失效因文本节点、注释或空格导致子节点数≠1;区别于:first-child(仅首)、:last-child(仅末)、:only-of-type(同类型唯一)。
-
PurgeCSS删掉已用class的根本原因是它仅识别静态字符串字面量,无法处理动态拼接、JS注入或模板字符串中的类名;必须通过safelist显式声明动态类模式或确保源码中完整出现。
-
NotificationAPI不能实现推送,仅负责在页面运行时显示通知;真正推送需配合WebSocket、SSE或WebPush(ServiceWorker+PushAPI)等机制实现消息抵达。
-
JavaScript隐式转换依据上下文自动转类型,+操作符遇字符串触发字符串拼接,算术运算符强制转数字,布尔环境判断真/假值,==进行松散相等比较时执行类型转换,对象转原始值优先调用valueOf再toString,可自定义Symbol.toPrimitive控制行为。
-
先掌握TDD流程与工具,再通过Jest编写可读、独立的测试用例,实现红-绿-重构循环,如sum函数测试;选择Jest因内置断言和mock,配置脚本后写test文件验证行为;用jest.fn()隔离依赖,结合--watch与CI集成,生成覆盖率报告,聚焦核心逻辑测试,逐步养成习惯提升代码质量。
-
原生checkbox是语义化、可访问且表单集成的布尔控件,其状态切换依赖:checked伪类与change事件;用button模拟会丢失语义、无障碍支持和自动表单提交能力。
-
渐变方向必须用媒体查询完整重写linear-gradient(),不能只改to值;colorstop百分比在非正方形容器中视觉位置会偏移,CSS变量在gradient方向参数中兼容性有限。
-
JavaScript的trim系列方法仅去除Unicode规范定义的空白字符(如空格、制表符、BOM等),不处理全角空格;trimStart()/trimEnd()是ES2019标准方法,替代已废弃的trimLeft()/trimRight();所有方法均返回新字符串且不修改原串。
-
float元素不受z-index控制,因为其未创建层叠上下文且z-index仅对定位元素生效;必须添加position:relative等才能启用z-index。