-
:active无法实现导航栏“点击后保持展开”,因其仅为瞬时伪类,不记录状态、不触发重排、不能配合display或max-height过渡;正确做法是用JS切换.active类并结合CSS过渡与可访问性支持。
-
JavaScript中的this在函数执行时根据调用方式动态决定:默认绑定(非严格模式指向全局,严格模式为undefined)、隐式绑定(obj.method()中this指向obj)、显式绑定(call/apply/bind手动指定)、new绑定(优先级最高,指向新实例)。
-
font-smoothing无法解决跨浏览器字体渲染问题,因其仅为WebKit/Blink私有属性,Firefox/IE不支持,且macOS与Windows行为不一致,实际渲染由系统API决定,CSS仅能微调。
-
EdgeLegacy(≤79)完全不支持datalist,因其EdgeHTML引擎从未实现该HTML5规范,输入框无下拉建议、DOM忽略datalist、JS无法获取list属性,须用JS模拟下拉组件。
-
JavaScript展开运算符(...)用于将可迭代对象或对象展开为独立元素或属性,支持数组合并与浅拷贝、函数传参、对象合并与解构、类数组转换等,但仅浅层展开且不支持null/undefined。
-
CSS动画在隐藏页会被浏览器暂停,CPU无负担;而requestAnimationFrame不会自动感知可见性,需手动结合document.hidden和visibilitychange控制启停。
-
TypeScript装饰器通过类型安全的元编程增强代码可读性与维护性,支持在类、方法、属性上添加元数据或修改行为。结合泛型与接口,编译时即可检查类型错误,避免误用。框架如Angular、NestJS利用装饰器声明组件、服务和路由,结合reflect-metadata实现依赖注入与自动实例化,减少样板代码。属性、方法、参数装饰器分别用于响应式追踪、逻辑拦截和请求参数标注,实现关注点分离。尽管装饰器尚处Stage3,但在TypeScript中已广泛用于构建高可靠、易维护的大型应用,提升架构清晰度与开发效率。
-
本文详解如何通过静态访问器(staticget)、接口约束与泛型工厂模式,使父类无需硬编码即可动态获取子类定义的静态配置(如singularName/pluralName),消除重复方法声明,兼顾运行时健壮性与编译时类型检查。
-
必须阻止dragover默认行为才能触发drop事件,再读取e.dataTransfer.files获取文件列表,最后用FormData发送请求;accept属性无效,校验须在drop回调中手动完成。
-
应在页面明确会用到但不立即加载的第三方域名时添加<linkrel="dns-prefetch">,如懒加载脚本、GoogleFonts、统计SDK等;避免为同源域名或未确认调用的域名添加,且href必须用协议相对URL(如//cdn.example.com),置于<head>中<metacharset>和<title>之后、首个外部资源之前。
-
动态导入与预加载可提升前端性能。通过import()按需加载模块,减少首屏体积;结合webpackChunkName、webpackPrefetch等魔法注释命名并预取chunk;路由级组件和非关键功能(如图表)采用动态加载,辅以空闲时预加载高概率模块,优化资源加载时机,加快响应速度。
-
background-image是最常用且可控的背景图设置方式,需配合background-size、background-position使用,确保元素有宽高、路径正确,并优先用相对路径;禁用background-repeat,推荐cover模式;不可用img替代,因语义与行为冲突;注意跨域、本地协议限制及响应式适配。
-
fetch在现代浏览器中基本无需polyfill,但需警惕IE及老旧WebView;credentials:'include'是获取登录态的必要配置;fetch不自动rejectHTTP错误状态码,需手动检查res.ok;Worker中可用fetch但无progress事件且绕过ServiceWorker。
-
Proxy本身不记录历史或保存状态快照,仅拦截操作,因此无法直接支持撤销;必须额外维护操作历史栈并配合路径追踪、深度比较与安全还原逻辑。
-
align-items:stretch没起作用是因为父容器缺少明确的交叉轴尺寸(如height/min-height),或子元素设置了height、min-height、align-self等限制;flex-direction:column时它控制宽度而非高度。