-
最直接方法是用addEventListener监听点击,通过classList.toggle切换类名,配合CSStransition实现平滑动效;transition必须写在默认类中,避免用all,注意移动端兼容与DOM存在性检查。
-
required、type、pattern需组合使用且依赖submit触发:required仅校验空值(非格式),必须置于form内并用type="submit"按钮或回车提交;type="email"校验宽松,精准格式须用pattern;pattern不作用于number类型,且需配合title和setCustomValidity("")清空错误状态。
-
路由守卫不直接检测版本更新,而是作为触发检查的时机入口,在路由跳转前发起版本比对并决定是否提示刷新;Vue用beforeRouteLeave,React用useLocation+useBlocker,逻辑统一抽离为hook或service,并优化提示体验。
-
every()对应“与”逻辑(全真才真,遇假即停),some()对应“或”逻辑(一真即真,遇真即停);二者均支持短路,空数组时every返回true、some返回false,且回调必须明确返回truthy/falsy值。
-
文字旋转模糊的根本原因是非90°整数倍旋转导致亚像素坐标,合成层强制对齐整数像素使子像素抗锯齿失效;filter:blur(0)仅偶发绕过渲染缓存,不稳定;真正解法是控制变换结果为整数像素,如calc()补偿、整数缩放比、避免奇数尺寸与百分比组合。
-
暗色模式应通过:root定义语义化CSS变量,同时用@media(prefers-color-scheme:dark)和html.dark类双路径覆盖,配合localStorage持久化与hsl()控制明暗,避免透明度叠加发灰及filter失真。
-
BEM更适用于强语义、高复用、样式深度耦合业务的场景,如多端复用的product-card;而Utility-First适合快速迭代、低抽象需求的营销页或A/B测试页,两者可混合但需严守边界:BEM管结构语义,Utility仅作临时修饰。
-
用唯一键(如临时URL或内容哈希)关联Blob和File元数据,Map中只存业务元数据,封装统一接口处理类型转换与键生成,前端Map仅限当前会话,需结合服务端ID做持久化对齐。
-
Vue自定义指令v-lazy基于IntersectionObserver实现图片懒加载,预加载进入视口前100px的图片,支持响应式、背景图、降级兼容及加载状态管理,有效减少首屏时间20%~40%。
-
优先用宽度而非高度做断点,因视口高度受浏览器地址栏动态遮挡影响易误触发,而宽度稳定且与设计稿切图逻辑一致;推荐3–4个max-width/min-width组合断点覆盖主流设备,配合rem布局时应在各断点内直接设置htmlfont-size以确保基准准确。
-
可以,box-shadow原生支持逗号分隔的多层阴影,需写在同一声明中,从左到右逐层绘制,近层清晰高透、远层模糊低透,偏移宜一致或缓增,模糊半径须阶梯式增大以模拟景深。
-
marquee标签已被HTML5废弃,现代浏览器虽部分支持但不推荐使用;应改用CSS动画实现,需注意white-space、位移范围及动态时长计算。
-
Promise是ES6引入的异步编程标准对象,用于解决回调地狱、错误处理分散及缺乏统一控制等问题;它表示异步操作的三种状态(pending/fulfilled/rejected),通过newPromise()创建,支持.then()/.catch()链式调用与Promise.all/race/finally等组合方法。
-
rotateY翻页动画歪转是因默认变换原点在元素中心,需设transform-origin:leftcenter或050%锚定边缘;左右页需独立旋转并配preserve-3d;卡顿需will-change、requestAnimationFrame及backface-visibility优化;移动端拖拽应分段映射角度并禁用默认滚动。
-
textarea+input实时校验更可靠,因HTML表单pattern仅提交时触发原生提示,而实时监听input事件可即时反馈;需截断长文本、禁用默认提示、动态构造正则时正确转义特殊字符,并避免回溯爆炸。