-
缩略图本质是普通<img>标签,需通过width/height属性控制尺寸、srcset/sizes实现响应式、decoding="async"优化解码、loading="lazy"延迟加载,并服务端生成小图以提升性能。
-
答案:实现虚拟DOM需创建VNode、渲染真实节点与diff算法。首先用h函数生成描述UI的JS对象,再通过mount递归构建真实DOM并保留引用;当数据变化时,patch比较新旧VNode:标签不同则替换,相同则更新属性并递归处理子节点,最后通过render和update驱动视图更新,核心是声明式UI与最小化更新。
-
答案:设计可扩展事件总线需支持动态注册、高效触发与内存泄漏防护,通过命名空间管理事件,实现on、off、emit核心机制,结合上下文绑定与自动清理,并提供调试日志、监听查询与中间件支持,确保结构清晰、接口简洁,便于演进。
-
不能。HTML5原生inputtype="file"仅支持选文件和读取原始内容,不提供格式转换能力;实际转格式需JS配合Canvas、WebAssembly等实现,且受限于浏览器对源/目标格式的解析与编码支持。
-
浏览器通过解析HTML构建DOM树,加载外部资源,结合CSSOM生成渲染树,完成布局与绘制,最终合成图层并显示页面内容。
-
JavaScript隐式转换是值在不同上下文中自动类型转换:加号优先字符串拼接,算术符强制转数字,条件判断转布尔(仅false、0、-0、""、null、undefined、NaN为假),==宽松比较会类型调和,===严格比较不转换。
-
移动端:active失效主因是浏览器未触发该状态,常见于缺失viewport声明、touchstart中误用preventDefault()、事件流被中断或样式继承不稳定;需结合JS状态管理增强反馈。
-
gap属性在Flexbox中有效,但仅Firefox63+、Chrome84+、Safari14.1+支持;旧版浏览器忽略该属性,且不支持row-gap/column-gap,仅主轴方向生效,多行间无垂直间隙。
-
JavaScript参数传递是按共享传递:原始类型传值副本,对象传地址副本;函数声明会提升可先调用,表达式不可;箭头函数无this/arguments且不可new;...args和解构支持默认值。
-
后代选择器用于选中某元素内所有特定后代元素,通过空格分隔选择器实现,如.containerp会匹配class为container的元素内部所有p标签,无论嵌套多深。
-
父元素是否影响图像位置取决于其是否为定位上下文或特定display类型:position非static时可作为绝对定位包含块;flex/grid下由对齐属性控制;inline默认行为导致基线留白。
-
JavaScript事件循环严格遵循“宏任务→清空全部微任务→下一宏任务”节奏:先执行一个宏任务,再连续执行所有微任务直至队列为空,最后浏览器可能渲染并取下一个宏任务。
-
static为默认定位,元素按文档流排列,偏移属性无效;2.relative相对原始位置偏移,保留占位,不脱离文档流;3.absolute脱离文档流,相对于最近的已定位祖先元素定位,常用于弹窗或菜单;4.fixed固定于视口,滚动不变,适用于导航栏等;5.sticky结合relative与fixed特性,滚动到阈值后吸顶,需指定偏移量。掌握各定位特性及上下文关系,可精准控制布局。
-
子元素占比不正确源于未理解flex-grow、flex-shrink与flex-basis协作逻辑;flex-basis是分配剩余空间前的初始尺寸,设为0才能使grow按比例生效;grow瓜分的是剩余空间而非总宽,shrink在溢出时按basis×shrink加权收缩;常用组合如等宽三列用flex:110。
-
事件循环是单线程下协调任务执行的机制,按“主线程→微任务→宏任务”顺序调度,每次宏任务后清空微任务队列,再取下一个宏任务。