-
最稳、最通用的做法是给<img>加display:block和margin:0auto;若图片混排在文本流中,优先用父容器text-align:center。因<img>默认为行内元素,margin:auto对其无效,必须显式设为块级才能触发自动外边距计算;text-align:center失效常因父容器无宽、被浮动/定位覆盖或错误写在<img>自身上;需双向居中时推荐父容器用display:flex;justify-content:center;align-items
-
let和var的主要区别在于作用域、提升行为和重复声明:1.var是函数作用域,let是块级作用域;2.var会变量提升并初始化为undefined,let存在暂时性死区,未声明前访问报错;3.var允许重复声明,let不允许;现代JavaScript推荐使用let和const。
-
<nav>仅适用于站点级或应用级主要导航区块,如顶部主导航、侧边菜单、汉堡菜单、分页器(需满足跳转逻辑连续且加aria-label)、面包屑等;非主导航链接如相关阅读、操作按钮、上一篇/下一篇等不应使用。
-
rgba()在iOSSafari和AndroidChrome中基本可靠,但iOS8等旧版本在border-color、outline等属性中存在渲染异常;#RRGGBBAA仅限较新系统支持;opacity会导致子元素一同变透明,应优先用rgba()控制颜色透明度。
-
浮动徽章错位的根本原因是父容器未触发BFC,需用display:flow-root(推荐)或overflow:hidden创建BFC;徽章定位需按卡片padding、徽章尺寸精确计算负margin;浮动方案仅适用于静态无交互场景。
-
JavaScript错误处理分同步和异步:try-catch捕获同步错误,.catch()或async/await+try-catch处理Promise异步错误;二者分工明确,不可替代,核心在于错误发生的执行上下文不同。
-
不能直接多次newWebSocket(),因会导致多连接并存、资源浪费、消息重复、重连混乱,且跨端不兼容;闭包单例通过IIFE锁定instance实现唯一初始化,但需配合uni.connectSocket、状态清理、指数退避重连等手动补全逻辑。
-
HiddenClasses的offset是V8中记录属性相对于对象起始地址的字节偏移,用于快速定位属性并支持内联缓存;它不直接控制缓存对齐,但影响内存布局连续性,进而显著左右CPU缓存命中率。
-
Vue响应式本质是数据劫持,通过Object.defineProperty(Vue2)或Proxy(Vue3)拦截读写操作,自动收集依赖(Dep)并通知Watcher更新视图。
-
AbortController实现请求聚合的核心是智能取消:新请求发起时自动abort同key的旧请求。需定义唯一请求键(含URL与影响响应的参数)、用Map维护控制器映射、封装fetchAggregated函数统一管理生命周期,并处理防抖、多实例隔离等边界场景。
-
掌握ChromeDevTools的Performance面板可定位JS性能瓶颈,使用console.time()计时代码块,Memory面板检测内存泄漏,UserTimingAPI标记关键阶段,定期分析以优化网页性能。
-
浮动元素导致父容器高度塌陷,使背景图显示区域变短;应通过清除浮动(如overflow:hidden或::after伪元素)解决,而非z-index。
-
z-index仅对position为relative、absolute、fixed或sticky的定位元素生效;若元素为static(默认)则z-index被完全忽略,且父级创建层叠上下文时子元素z-index仅在内部有效。
-
Astro支持通过partial:true的.astro页面直接渲染服务端HTML片段,无需手动拼接字符串或新建API路由,天然适配HTMX动态交互场景。
-
Fetch本身不支持直接设置超时时间,但可通过AbortController配合Promise.race实现可控超时机制:创建controller并传入signal,超时调用abort()触发AbortError,再用Promise.race竞态fetch与定时reject的Promise。