-
HTML不压缩图片,只引用文件;Canvas压缩须先缩放尺寸再设0.7~0.8质量,srcset必须配sizes,WebP需用<picture>加fallback,原始图编码状态影响压缩效果。
-
persist()仅申请免驱逐特权,不存数据、不操作DOM、不替代localStorage;现代浏览器因origin低价值、缺少用户交互或处于临时存储环境常返回false或静默失败,需用persisted()确认真实状态,并通过配额监控、分库、压缩等设计提升抗驱逐能力。
-
推荐使用normalize.css或modern-normalize统一浏览器默认样式,全局设置box-sizing:border-box,定义跨平台字体栈并显式声明line-height,Grid/Flex布局需用@supports降级,且必须配置viewport元标签。
-
line-height单行居中有效而多行失效,因其仅作用于每行内部,无法控制多行文本整体垂直居中;flexbox的align-items:center是多行居中标准方案,需容器有明确高度且子元素为直接子元素。
-
答案:通过transition和transform结合实现平滑动画。1.transform用于元素移动、旋转、缩放,transition控制变化过程;2.示例中按钮悬停时translateX位移并scale放大,配合0.3s过渡;3.进阶用法如card悬停时translateY上移并rotate旋转,使用cubic-bezier增强动效;4.建议控制过渡时间在0.2s–0.5s,优先对transform和opacity做动画以提升性能,避免布局重排,可配合will-change优化渲染。
-
直接用createIndex为非主键字段建索引,核心是明确集合、字段名和索引选项;需确认集合存在且字段实际存在,支持单字段、多字段组合及unique/sparse/background等参数,建完需用getIndexes()和explain()验证。
-
可通过HTML5的FormData与file输入框结合XMLHttpRequest或fetch实现图片上传:一、XMLHttpRequest方式需创建FormData并手动配置xhr;二、fetch方式以Promise风格简化异步流程;三、启用multiple属性可批量上传;四、配合FileReader可实现本地预览。
-
应使用CSSanimation-duration配合lineartiming实现hover加速,避免marquee;纯CSS会重置动画导致跳帧,真无缝需JS控制requestAnimationFrame。
-
align-items:stretch能让子元素垂直拉伸,但需父容器有明确高度且子元素未设置height、align-self等覆盖属性;否则因交叉轴无可用空间或样式冲突导致失效。
-
fixed定位缩放偏移的根源是视口坐标系漂移,须用vh/vw替代px实现同比例缩放,禁用混用单位、transform父级及错误viewport配置,并辅以visualViewportAPI微调。
-
Vue通过异步队列批量更新Watcher,利用microtask(如Promise)在当前JS执行结束、渲染前统一刷新,避免冗余DOM操作;推荐用Object.freeze、分片更新、虚拟滚动等优化大批量响应式数据处理。
-
configurable是属性最底层的开关,设为false后无法删除属性、不可修改enumerable和configurable本身,仅允许将writable从true改为false;writable可逆需configurable为true,否则固化。
-
现代三栏布局应弃用浮动圣杯布局,改用Flexbox或Grid:前者适合主内容高度多变、需DOM与视觉顺序分离的场景,后者适用于等高、统一间隙及语义优先的需求,二者均具备良好响应式支持与可维护性。
-
路由跳转内存泄漏核心在于组件未真实卸载或资源未释放:一是框架复用组件导致生命周期钩子未触发,二是全局监听、定时器、订阅等外部引用未清理,需通过钩子打点和浏览器工具双重验证。
-
JavaScript循环选择取决于数据结构和控制逻辑:次数确定或需索引用for;条件驱动且次数不定用while;需至少执行一次用do...while;遍历值优先for...of,避免for...in用于数组。